'From Squeak3.4alpha of ''11 November 2002'' [latest update: #5109] on 16 November 2002 at 1:12:41 pm'! "Change Set: FileListUpdateFix-nk Date: 16 November 2002 Author: Ned Konz This fixes the registering file list in 3.4a so that after completing a registered service, the file list updates its file list and contents panes. This fixes the problem where the file list doesn't refresh after decompressing a .gz file. "! Model subclass: #SimpleServiceEntry instanceVariableNames: 'provider label selector useLineAfter stateSelector description argumentGetter buttonLabel ' classVariableNames: '' poolDictionaries: '' category: 'Development-FileList'! !FileList methodsFor: 'initialization' stamp: 'nk 11/16/2002 13:01'! updateButtonRow "Dynamically update the contents of the button row, if any." | aWindow aRow aButton | Smalltalk isMorphic ifFalse: [^ self]. aWindow _ self dependents detect: [:m | (m isKindOf: SystemWindow) and: [m model == self]] ifNone: [^ self]. aRow _ aWindow findDeepSubmorphThat: [:m | m hasProperty: #buttonRow] ifAbsent: [^ self]. (aRow submorphs size - 4) timesRepeat: [aRow submorphs last delete]. self dynamicButtonServices do: [:service | aButton _ PluggableButtonMorph on: service provider getState: nil action: service selector. "aButton argumentsProvider: self argumentsSelector: #fullNameArguments." aButton argumentsProvider: (self blockToGetArgArrayFrom: service) argumentsSelector: #value. aButton color: Color transparent; hResizing: #spaceFill; vResizing: #spaceFill; useRoundedCorners; label: service buttonLabel asString; askBeforeChanging: true; onColor: Color transparent offColor: Color transparent. aRow addMorphBack: aButton. aButton setBalloonText: service description. service addDependent: self. ]! ! !FileList methodsFor: 'file list menu' stamp: 'nk 11/16/2002 13:00'! fileSelectedMenu: aMenu | firstItems secondItems thirdItems n1 n2 n3 services | firstItems _ self itemsForFile: self fullName. secondItems _ self itemsForAnyFile. thirdItems _ self itemsForNoFile. n1 _ firstItems size. n2 _ n1 + secondItems size. n3 _ n2 + thirdItems size. services _ firstItems, secondItems, thirdItems, self serviceAllFileOptions. services do: [ :svc | svc addDependent: self ]. ^ aMenu addServices2: services for: self extraLines: (Array with: n1 with: n2 with: n3) ! ! !FileList methodsFor: 'file list menu' stamp: 'nk 11/16/2002 13:04'! update: symbol (symbol == #completed) ifTrue: [ self changed: #fileList. self changed: #contents. ].! ! !SimpleServiceEntry methodsFor: 'performing service' stamp: 'nk 11/16/2002 13:00'! performServiceFor: anObject "carry out the service I provide" | retval | retval _ selector numArgs = 0 ifTrue: [provider perform: selector] ifFalse: [provider perform: selector with: anObject]. self changed: #completed. ^retval "is this used anywhere?"! !