'From etoys3.0 of 7 March 2008 [latest update: #2050] on 11 July 2008 at 1:23:27 pm'! "Change Set: buddies-bf Date: 11 July 2008 Author: Bert Freudenberg Cache joined buddies in inst var"! AbstractLauncher subclass: #SugarLauncher instanceVariableNames: 'sharedActivity buddies ' classVariableNames: 'Current UISema ' poolDictionaries: '' category: 'Sugar'! !SugarLauncher methodsFor: 'accessing' stamp: 'bf 7/11/2008 12:10'! ownerBuddy self isRunningInSugar ifTrue: [ ^SugarBuddy fromDictionary: self presence getOwner getProperties]. "fake" ^SugarBuddyOwner key: '1234' nick: Utilities authorName colors: '#ff0000,#ffff00' ip: '1.2.3.4'! ! !SugarLauncher methodsFor: 'presence' stamp: 'bf 7/11/2008 12:55'! buddies sharedActivity ifNil: [^Dictionary new]. buddies ifNil: [ buddies := Dictionary new. sharedActivity getJoinedBuddies do: [:each | | buddy | buddy := SugarBuddy fromDictionary: each getProperties. buddies at: buddy key put: buddy]]. ^buddies! ! !SugarLauncher methodsFor: 'presence' stamp: 'bf 7/11/2008 12:04'! buddyJoined: buddy self buddies at: buddy key put: buddy. self badgeHolder addMorph: buddy makeBadge! ! !SugarLauncher methodsFor: 'presence' stamp: 'bf 7/11/2008 13:17'! buddyLeft: buddy | holder badge | self buddies removeKey: buddy key ifAbsent: []. self buddies ifEmpty: [^self deleteBadges]. holder := self badgeHolder. badge := holder submorphs detect: [:m | (m isKindOf: EToySenderMorph) and: [m userName = buddy nick]] ifNone: [^self]. badge delete. ! ! !SugarLauncher methodsFor: 'presence' stamp: 'bf 7/11/2008 13:18'! deleteBadges ((World submorphWithProperty: #sugarBuddyHolder) ifNil: [^self]) delete ! ! !SugarLauncher methodsFor: 'presence' stamp: 'bf 7/11/2008 13:22'! leaveSharedActivity sharedActivity ifNotNil: [ sharedActivity leaveAsync. sharedActivity := nil. buddies := nil. self deleteBadges]. ! ! SugarLauncher removeSelector: #getSharedActivityBuddies! SugarLauncher removeSelector: #ownerFromDBus!