'From etoys3.0 of 7 March 2008 [latest update: #2138] on 8 September 2008 at 7:07:18 pm'! "Change Set: buddyLayout-bf Date: 8 September 2008 Author: Bert Freudenberg - make buddy flap resizable (#7749) - add new buddies below older buddies (#8082)"! !SugarLauncher methodsFor: 'presence' stamp: 'bf 9/8/2008 18:59'! badgeFlap "This finds or creates a flap to hold badges" | translatedFlapName flapTab flap spacer holder | translatedFlapName := 'Buddies' translated. flapTab := Flaps globalFlapTab: translatedFlapName. flapTab ifNotNil: [^flapTab]. flap := AlignmentMorph newRow. flap clipSubmorphs: true. flap beTransparent. flap layoutInset: 0; cellInset: 0; borderWidth: 0. flap setProperty: #wantsHaloFromClick toValue: false. flap beFlap: true. spacer := Morph new beTransparent. "This provides space for tabs to be seen." spacer width: 20. spacer hResizing: #rigid; vResizing: #spaceFill. flap addMorphBack: spacer. holder := Morph new. holder name: 'Badges'. holder position: 0@100. holder layoutPolicy: TableLayout new. holder color: Color red muchLighter; wrapDirection: #topToBottom; hResizing: #spaceFill; vResizing: #spaceFill; cellInset: 10; layoutInset: 10. flap addMorphBack: holder. flap beSticky. spacer beSticky; lock: true. holder beSticky. flapTab := FlapTab new. flapTab referent: flap. flapTab setName: translatedFlapName edge: #left color: Color red muchLighter. flapTab referentMargin: 0@75. flapTab setToPopOutOnDragOver: true. Flaps addGlobalFlap: flapTab. ActiveWorld addGlobalFlaps. ScriptingSystem cleanUpFlapTabsOnLeft. ^flapTab! ! !SugarLauncher methodsFor: 'presence' stamp: 'bf 9/8/2008 17:03'! buddyJoined: buddyProxy "possibly sent via DBus in background process" | properties key buddy | properties := [buddyProxy getProperties] on: DBusError do: [^self]. (properties at: #owner ifAbsent: [false]) == true ifTrue: [^self]. key := properties at: #key ifAbsent: [^self]. self buddiesLock critical: [ buddies ifNil: [^self]. (buddies includesKey: key) ifTrue: [^self]. buddy := SugarBuddy fromDictionary: properties. buddies at: key put: buddy]. WorldState addDeferredUIMessage: [ self badgeHolder addMorphBack: buddy makeBadge. self showBadges]! ! !SugarLauncher methodsFor: 'presence' stamp: 'bf 9/8/2008 17:08'! deleteBadges | flapTab | flapTab := (Flaps globalFlapTab: 'Buddies' translated) ifNil: [^self]. Flaps removeFlapTab: flapTab keepInList: false. ! !