Marcel Taeumel uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-mt.617.mcz ==================== Summary ==================== Name: Tools-mt.617 Author: mt Time: 3 May 2015, 12:08:33.481 pm UUID: 550a7de0-db51-154d-873a-d2569c50c8a6 Ancestors: Tools-mt.616 "Message Names" tool refactored. =============== Diff against Tools-mt.616 =============== Item was changed: MessageSet subclass: #MessageNames + instanceVariableNames: 'searchString selectorList selectorListIndex' - instanceVariableNames: 'searchString selectorList selectorListIndex searchPane' classVariableNames: '' poolDictionaries: '' category: 'Tools-Browser'! Item was changed: ----- Method: MessageNames>>buildSearchPaneWith: (in category 'toolbuilder') ----- buildSearchPaneWith: builder + + | panelSpec textSpec buttonSpec | + panelSpec := builder pluggablePanelSpec new + layout: #horizontal; + children: OrderedCollection new; + yourself. + - | textSpec | textSpec := builder pluggableInputFieldSpec new. textSpec + model: searchString; + help: 'Type here, then hit Search.' translated; + getText: #contents; + setText: #contents:. + panelSpec children add: textSpec. + + buttonSpec := builder pluggableActionButtonSpec new. + buttonSpec model: self; + label: 'Search'; + action: #doSearch; + horizontalResizing: #shrinkWrap. + panelSpec children add: buttonSpec. + + ^ panelSpec! - name: #search; - getText: #searchString; - setText: #searchString:notifying:. - ^textSpec! Item was changed: ----- Method: MessageNames>>buildWith: (in category 'toolbuilder') ----- buildWith: builder "ToolBuilder open: MessageNames new" + + | windowSpec max searchHeight | - | windowSpec max buttonSpec result | max := self wantsOptionalButtons ifTrue:[0.42] ifFalse:[0.5]. + searchHeight := Preferences standardDefaultTextFont height * 2. + windowSpec := self buildWindowWith: builder specs: { + (self topConstantHeightFrame: searchHeight fromLeft: 0 width: 0.5) -> [self buildSearchPaneWith: builder]. + (self frameOffsetFromTop: searchHeight fromLeft: 0 width: 0.5 bottomFraction: max) -> [self buildSelectorListWith: builder]. - (0.15@0 corner: 0.5@0.08) -> [self buildSearchPaneWith: builder]. - (0@0.08 corner: 0.5@max) -> [self buildSelectorListWith: builder]. (0.5@0.0 corner: 1.0@max) -> [self buildMessageListWith: builder]. (0@max corner: 1@1) -> [self buildCodePaneWith: builder]. }. + ^ builder build: windowSpec! - buttonSpec := builder pluggableActionButtonSpec new. - buttonSpec - model: self; - label: 'Search'; - action: [self doSearchFrom: searchPane]; - frame: (0.0@0 corner: 0.15@0.08). - windowSpec children add: buttonSpec. - - result := builder build: windowSpec. - searchPane := builder widgetAt: #search. - ^result! Item was added: + ----- Method: MessageNames>>computeMessageList (in category 'search') ----- + computeMessageList + + ^ selectorListIndex = 0 + ifTrue: [#()] + ifFalse: [self systemNavigation + allImplementorsOf: (selectorList at: selectorListIndex)]! Item was added: + ----- Method: MessageNames>>computeSelectorListFrom: (in category 'search') ----- + computeSelectorListFrom: searchString + "Compute selector list from search string. The searchString is a list of expressions separated by ;. Each expression is matched individually. An expression can be a simple string (same as *expression*), a string with double quotes (exact match) or a match expression (see String >> #match:)." + + ^ (Array streamContents: [ :stream | + (searchString findBetweenSubStrs: ';') do: [ :selPat | + (selPat first = $" and: [ selPat last = $" and: [ selPat size > 2 ] ]) + ifTrue: [ + Symbol + hasInterned: (selPat copyFrom: 2 to: selPat size - 1) + ifTrue: [ :sym | stream nextPut: sym ] ] + ifFalse: [ + | raw n m | + n := selPat occurrencesOf: $*. + m := selPat occurrencesOf: $#. + raw := ((n > 0 or: [ m > 0 ]) and: [ selPat size > (n + m) ]) + ifTrue: [ Symbol selectorsMatching: selPat ] + ifFalse: [ Symbol selectorsContaining: selPat ]. + stream nextPutAll: raw ] ] ]) + sort: [ :x :y | x caseInsensitiveLessOrEqual: y ]! Item was removed: - ----- Method: MessageNames>>computeSelectorListFromSearchString (in category 'search') ----- - computeSelectorListFromSearchString - "Compute selector list from search string. The searchString is a list of expressions separated by ;. Each expression is matched individually. An expression can be a simple string (same as *expression*), a string with double quotes (exact match) or a match expression (see String >> #match:)." - - searchString := searchString asString copyWithout: $ . "?dubious?" - ^selectorList := Cursor wait showWhile: [ - (Array streamContents: [ :stream | - (searchString findBetweenSubStrs: ';') do: [ :selPat | - (selPat first = $" and: [ selPat last = $" and: [ selPat size > 2 ] ]) - ifTrue: [ - Symbol - hasInterned: (selPat copyFrom: 2 to: selPat size - 1) - ifTrue: [ :sym | stream nextPut: sym ] ] - ifFalse: [ - | raw n m | - n := selPat occurrencesOf: $*. - m := selPat occurrencesOf: $#. - raw := ((n > 0 or: [ m > 0 ]) and: [ selPat size > (n + m) ]) - ifTrue: [ Symbol selectorsMatching: selPat ] - ifFalse: [ Symbol selectorsContaining: selPat ]. - stream nextPutAll: raw ] ] ]) - sort: [ :x :y | x caseInsensitiveLessOrEqual: y ] ]! Item was removed: - ----- Method: MessageNames>>defaultBrowserTitle (in category 'initialization') ----- - defaultBrowserTitle - ^ 'Message Names'! Item was added: + ----- Method: MessageNames>>doSearch (in category 'search') ----- + doSearch + "The user hit the Search button -- treat it as a synonym for the user having hit the Return or Enter (or cmd-s) in the type-in pane" + + searchString changed: #acceptChanges.! Item was added: + ----- Method: MessageNames>>doSearch: (in category 'search') ----- + doSearch: aSearchString + + | normalizedSearchString | + normalizedSearchString := aSearchString asString copyWithout: Character space. + + Cursor wait showWhile: [ + self selectorList: (self computeSelectorListFrom: normalizedSearchString)]. + + ^ true! Item was removed: - ----- Method: MessageNames>>doSearchFrom: (in category 'search') ----- - doSearchFrom: aPane - "The user hit the Search button -- treat it as a synonym for the user having hit the Return or Enter (or cmd-s) in the type-in pane" - - aPane accept. - aPane selectAll! Item was added: + ----- Method: MessageNames>>frameOffsetFromTop:fromLeft:width:bottomFraction: (in category 'toolbuilder') ----- + frameOffsetFromTop: height fromLeft: leftFraction width: rightFraction bottomFraction: bottomFraction + ^LayoutFrame new + topFraction: 0 offset: height; + leftFraction: leftFraction offset: 0; + rightFraction: (leftFraction + rightFraction) offset: 0; + bottomFraction: bottomFraction offset: 0; + yourself.! Item was added: + ----- Method: MessageNames>>initialize (in category 'initialization') ----- + initialize + + super initialize. + + searchString := ValueHolder new contents: ''. + searchString addDependent: self. + + selectorList := #(). + selectorListIndex := 0.! Item was added: + ----- Method: MessageNames>>labelString (in category 'initialization') ----- + labelString + + ^ self searchString + ifEmpty: ['Message Names'] + ifNotEmpty: [:s | 'Message names containing "', s asString asLowercase, '"']! Item was removed: - ----- Method: MessageNames>>messageList (in category 'selector list') ----- - messageList - "Answer the receiver's message list, computing it if necessary. The way - to force a recomputation is to set the messageList to nil" - messageList - ifNil: [messageList := selectorListIndex = 0 - ifTrue: [#()] - ifFalse: [self systemNavigation - allImplementorsOf: (selectorList at: selectorListIndex)]. - self - messageListIndex: (messageList size > 0 - ifTrue: [1] - ifFalse: [0])]. - ^ messageList! Item was added: + ----- Method: MessageNames>>messageList: (in category 'message list') ----- + messageList: someObjects + + messageList := someObjects. + self changed: #messageList. + + self messageListIndex: (messageList size > 0 + ifTrue: [1] + ifFalse: [0]).! Item was changed: ----- Method: MessageNames>>searchString (in category 'search') ----- searchString - "Answer the current searchString, initializing it if need be" + ^ searchString contents! - | pane | - searchString isEmptyOrNil ifTrue: - [searchString := 'type here, then hit Search'. - pane := self containingWindow findDeepSubmorphThat: - [:m | m knownName = 'Search'] ifAbsent: ["this happens during window creation" ^ searchString]. - pane setText: searchString. - pane setTextMorphToSelectAllOnMouseEnter. - pane selectAll]. - ^ searchString! Item was changed: ----- Method: MessageNames>>searchString: (in category 'search') ----- searchString: aString + + searchString contents: aString.! - "Set the current searchString" - self searchString: aString notifying: nil! Item was removed: - ----- Method: MessageNames>>searchString:notifying: (in category 'search') ----- - searchString: aString notifying: aController - "Take what the user typed and find all selectors containing it" - - searchString := aString asString copyWithout: $ . - self containingWindow ifNotNil:[:w| w setLabel: 'Message names containing "', searchString asLowercase, '"']. - selectorList := nil. - self changed: #selectorList. - self changed: #messageList. - ^ true! Item was changed: + ----- Method: MessageNames>>selectedMessageName (in category 'message list') ----- - ----- Method: MessageNames>>selectedMessageName (in category 'selection') ----- selectedMessageName selectorList basicSize = 0 ifTrue: [^ nil]. "Deals with selectorList nil or empty" ^selectorList at: (selectorListIndex max: 1) ifAbsent: [nil] "If no selection we can still find a selector"! Item was changed: ----- Method: MessageNames>>selectorList (in category 'selector list') ----- selectorList - "Answer the selectorList" - selectorList ifNil: - [self computeSelectorListFromSearchString. - selectorListIndex := selectorList size > 0 - ifTrue: [1] - ifFalse: [0]. - messageList := nil]. ^ selectorList! Item was added: + ----- Method: MessageNames>>selectorList: (in category 'selector list') ----- + selectorList: someObjects + "Answer the selectorList" + + selectorList := someObjects. + self changed: #selectorList. + + "Select first result if any." + self selectorListIndex: (selectorList size > 0 + ifTrue: [1] + ifFalse: [0]).! Item was changed: ----- Method: MessageNames>>selectorListIndex: (in category 'selector list') ----- selectorListIndex: anInteger "Set the selectorListIndex as specified, and propagate consequences" selectorListIndex := anInteger. - selectorListIndex = 0 - ifTrue: [^ self]. - messageList := nil. self changed: #selectorListIndex. + + messageList := self computeMessageList. + self changed: #messageList.! - self changed: #messageList! Item was changed: + ----- Method: MessageNames>>selectorListKey:from: (in category 'selector list') ----- - ----- Method: MessageNames>>selectorListKey:from: (in category 'initialization') ----- selectorListKey: aChar from: view "Respond to a Command key in the message-list pane." aChar == $n ifTrue: [^ self browseSenders]. aChar == $c ifTrue: [^ self copyName]. aChar == $b ifTrue: [^ self browseMethodFull]. ! Item was changed: ----- Method: MessageNames>>showOnlyImplementedSelectors (in category 'search') ----- showOnlyImplementedSelectors "Caution -- can be slow!! Filter my selector list down such that it only shows selectors that are actually implemented somewhere in the system." + self okToChange ifFalse: [^ self]. + + Cursor wait showWhile: [ + self selectorList: (self systemNavigation allSelectorsWithAnyImplementorsIn: selectorList)].! - self okToChange - ifTrue: [Cursor wait - showWhile: [selectorList := self systemNavigation allSelectorsWithAnyImplementorsIn: selectorList. - self changed: #selectorList. - self changed: #messageList]]! Item was changed: + ----- Method: MessageNames>>topConstantHeightFrame:fromLeft:width: (in category 'toolbuilder') ----- - ----- Method: MessageNames>>topConstantHeightFrame:fromLeft:width: (in category 'as yet unclassified') ----- topConstantHeightFrame: height fromLeft: leftFraction width: rightFraction ^LayoutFrame new topFraction: 0 offset: 0; leftFraction: leftFraction offset: 0; rightFraction: (leftFraction + rightFraction) offset: 0; bottomFraction: 0 offset: height; yourself.! Item was added: + ----- Method: MessageNames>>update: (in category 'updating') ----- + update: aspect + + aspect == #contents + ifTrue: [ + self changed: #labelString. + self doSearch: self searchString]. + + super update: aspect.! |
This makes MorphicUIManagerTest >> #testShowAllBinParts fail, because the
searchString ValueHolder holds nil instead of a string. I suspect that the reason for this is: MorphicUIManagerTest class >> #prototypicalToolWindow "Answer an example of myself seen in a tool window, for the benefit of parts-launching tools" ^ self methodBrowserSearchingFor: nil Levente On Sun, 3 May 2015, [hidden email] wrote: > Marcel Taeumel uploaded a new version of Tools to project The Trunk: > http://source.squeak.org/trunk/Tools-mt.617.mcz > > ==================== Summary ==================== > > Name: Tools-mt.617 > Author: mt > Time: 3 May 2015, 12:08:33.481 pm > UUID: 550a7de0-db51-154d-873a-d2569c50c8a6 > Ancestors: Tools-mt.616 > > "Message Names" tool refactored. > > =============== Diff against Tools-mt.616 =============== > > Item was changed: > MessageSet subclass: #MessageNames > + instanceVariableNames: 'searchString selectorList selectorListIndex' > - instanceVariableNames: 'searchString selectorList selectorListIndex searchPane' > classVariableNames: '' > poolDictionaries: '' > category: 'Tools-Browser'! > > Item was changed: > ----- Method: MessageNames>>buildSearchPaneWith: (in category 'toolbuilder') ----- > buildSearchPaneWith: builder > + > + | panelSpec textSpec buttonSpec | > + panelSpec := builder pluggablePanelSpec new > + layout: #horizontal; > + children: OrderedCollection new; > + yourself. > + > - | textSpec | > textSpec := builder pluggableInputFieldSpec new. > textSpec > + model: searchString; > + help: 'Type here, then hit Search.' translated; > + getText: #contents; > + setText: #contents:. > + panelSpec children add: textSpec. > + > + buttonSpec := builder pluggableActionButtonSpec new. > + buttonSpec > model: self; > + label: 'Search'; > + action: #doSearch; > + horizontalResizing: #shrinkWrap. > + panelSpec children add: buttonSpec. > + > + ^ panelSpec! > - name: #search; > - getText: #searchString; > - setText: #searchString:notifying:. > - ^textSpec! > > Item was changed: > ----- Method: MessageNames>>buildWith: (in category 'toolbuilder') ----- > buildWith: builder > "ToolBuilder open: MessageNames new" > + > + | windowSpec max searchHeight | > - | windowSpec max buttonSpec result | > max := self wantsOptionalButtons ifTrue:[0.42] ifFalse:[0.5]. > + searchHeight := Preferences standardDefaultTextFont height * 2. > + > windowSpec := self buildWindowWith: builder specs: { > + (self topConstantHeightFrame: searchHeight fromLeft: 0 width: 0.5) -> [self buildSearchPaneWith: builder]. > + (self frameOffsetFromTop: searchHeight fromLeft: 0 width: 0.5 bottomFraction: max) -> [self buildSelectorListWith: builder]. > - (0.15@0 corner: 0.5@0.08) -> [self buildSearchPaneWith: builder]. > - (0@0.08 corner: 0.5@max) -> [self buildSelectorListWith: builder]. > (0.5@0.0 corner: 1.0@max) -> [self buildMessageListWith: builder]. > (0@max corner: 1@1) -> [self buildCodePaneWith: builder]. > }. > > + ^ builder build: windowSpec! > - buttonSpec := builder pluggableActionButtonSpec new. > - buttonSpec > - model: self; > - label: 'Search'; > - action: [self doSearchFrom: searchPane]; > - frame: (0.0@0 corner: 0.15@0.08). > - windowSpec children add: buttonSpec. > - > - result := builder build: windowSpec. > - searchPane := builder widgetAt: #search. > - ^result! > > Item was added: > + ----- Method: MessageNames>>computeMessageList (in category 'search') ----- > + computeMessageList > + > + ^ selectorListIndex = 0 > + ifTrue: [#()] > + ifFalse: [self systemNavigation > + allImplementorsOf: (selectorList at: selectorListIndex)]! > > Item was added: > + ----- Method: MessageNames>>computeSelectorListFrom: (in category 'search') ----- > + computeSelectorListFrom: searchString > + "Compute selector list from search string. The searchString is a list of expressions separated by ;. Each expression is matched individually. An expression can be a simple string (same as *expression*), a string with double quotes (exact match) or a match expression (see String >> #match:)." > + > + ^ (Array streamContents: [ :stream | > + (searchString findBetweenSubStrs: ';') do: [ :selPat | > + (selPat first = $" and: [ selPat last = $" and: [ selPat size > 2 ] ]) > + ifTrue: [ > + Symbol > + hasInterned: (selPat copyFrom: 2 to: selPat size - 1) > + ifTrue: [ :sym | stream nextPut: sym ] ] > + ifFalse: [ > + | raw n m | > + n := selPat occurrencesOf: $*. > + m := selPat occurrencesOf: $#. > + raw := ((n > 0 or: [ m > 0 ]) and: [ selPat size > (n + m) ]) > + ifTrue: [ Symbol selectorsMatching: selPat ] > + ifFalse: [ Symbol selectorsContaining: selPat ]. > + stream nextPutAll: raw ] ] ]) > + sort: [ :x :y | x caseInsensitiveLessOrEqual: y ]! > > Item was removed: > - ----- Method: MessageNames>>computeSelectorListFromSearchString (in category 'search') ----- > - computeSelectorListFromSearchString > - "Compute selector list from search string. The searchString is a list of expressions separated by ;. Each expression is matched individually. An expression can be a simple string (same as *expression*), a string with double quotes (exact match) or a match expression (see String >> #match:)." > - > - searchString := searchString asString copyWithout: $ . "?dubious?" > - ^selectorList := Cursor wait showWhile: [ > - (Array streamContents: [ :stream | > - (searchString findBetweenSubStrs: ';') do: [ :selPat | > - (selPat first = $" and: [ selPat last = $" and: [ selPat size > 2 ] ]) > - ifTrue: [ > - Symbol > - hasInterned: (selPat copyFrom: 2 to: selPat size - 1) > - ifTrue: [ :sym | stream nextPut: sym ] ] > - ifFalse: [ > - | raw n m | > - n := selPat occurrencesOf: $*. > - m := selPat occurrencesOf: $#. > - raw := ((n > 0 or: [ m > 0 ]) and: [ selPat size > (n + m) ]) > - ifTrue: [ Symbol selectorsMatching: selPat ] > - ifFalse: [ Symbol selectorsContaining: selPat ]. > - stream nextPutAll: raw ] ] ]) > - sort: [ :x :y | x caseInsensitiveLessOrEqual: y ] ]! > > Item was removed: > - ----- Method: MessageNames>>defaultBrowserTitle (in category 'initialization') ----- > - defaultBrowserTitle > - ^ 'Message Names'! > > Item was added: > + ----- Method: MessageNames>>doSearch (in category 'search') ----- > + doSearch > + "The user hit the Search button -- treat it as a synonym for the user having hit the Return or Enter (or cmd-s) in the type-in pane" > + > + searchString changed: #acceptChanges.! > > Item was added: > + ----- Method: MessageNames>>doSearch: (in category 'search') ----- > + doSearch: aSearchString > + > + | normalizedSearchString | > + normalizedSearchString := aSearchString asString copyWithout: Character space. > + > + Cursor wait showWhile: [ > + self selectorList: (self computeSelectorListFrom: normalizedSearchString)]. > + > + ^ true! > > Item was removed: > - ----- Method: MessageNames>>doSearchFrom: (in category 'search') ----- > - doSearchFrom: aPane > - "The user hit the Search button -- treat it as a synonym for the user having hit the Return or Enter (or cmd-s) in the type-in pane" > - > - aPane accept. > - aPane selectAll! > > Item was added: > + ----- Method: MessageNames>>frameOffsetFromTop:fromLeft:width:bottomFraction: (in category 'toolbuilder') ----- > + frameOffsetFromTop: height fromLeft: leftFraction width: rightFraction bottomFraction: bottomFraction > + ^LayoutFrame new > + topFraction: 0 offset: height; > + leftFraction: leftFraction offset: 0; > + rightFraction: (leftFraction + rightFraction) offset: 0; > + bottomFraction: bottomFraction offset: 0; > + yourself.! > > Item was added: > + ----- Method: MessageNames>>initialize (in category 'initialization') ----- > + initialize > + > + super initialize. > + > + searchString := ValueHolder new contents: ''. > + searchString addDependent: self. > + > + selectorList := #(). > + selectorListIndex := 0.! > > Item was added: > + ----- Method: MessageNames>>labelString (in category 'initialization') ----- > + labelString > + > + ^ self searchString > + ifEmpty: ['Message Names'] > + ifNotEmpty: [:s | 'Message names containing "', s asString asLowercase, '"']! > > Item was removed: > - ----- Method: MessageNames>>messageList (in category 'selector list') ----- > - messageList > - "Answer the receiver's message list, computing it if necessary. The way > - to force a recomputation is to set the messageList to nil" > - messageList > - ifNil: [messageList := selectorListIndex = 0 > - ifTrue: [#()] > - ifFalse: [self systemNavigation > - allImplementorsOf: (selectorList at: selectorListIndex)]. > - self > - messageListIndex: (messageList size > 0 > - ifTrue: [1] > - ifFalse: [0])]. > - ^ messageList! > > Item was added: > + ----- Method: MessageNames>>messageList: (in category 'message list') ----- > + messageList: someObjects > + > + messageList := someObjects. > + self changed: #messageList. > + > + self messageListIndex: (messageList size > 0 > + ifTrue: [1] > + ifFalse: [0]).! > > Item was changed: > ----- Method: MessageNames>>searchString (in category 'search') ----- > searchString > - "Answer the current searchString, initializing it if need be" > > + ^ searchString contents! > - | pane | > - searchString isEmptyOrNil ifTrue: > - [searchString := 'type here, then hit Search'. > - pane := self containingWindow findDeepSubmorphThat: > - [:m | m knownName = 'Search'] ifAbsent: ["this happens during window creation" ^ searchString]. > - pane setText: searchString. > - pane setTextMorphToSelectAllOnMouseEnter. > - pane selectAll]. > - ^ searchString! > > Item was changed: > ----- Method: MessageNames>>searchString: (in category 'search') ----- > searchString: aString > + > + searchString contents: aString.! > - "Set the current searchString" > - self searchString: aString notifying: nil! > > Item was removed: > - ----- Method: MessageNames>>searchString:notifying: (in category 'search') ----- > - searchString: aString notifying: aController > - "Take what the user typed and find all selectors containing it" > - > - searchString := aString asString copyWithout: $ . > - self containingWindow ifNotNil:[:w| w setLabel: 'Message names containing "', searchString asLowercase, '"']. > - selectorList := nil. > - self changed: #selectorList. > - self changed: #messageList. > - ^ true! > > Item was changed: > + ----- Method: MessageNames>>selectedMessageName (in category 'message list') ----- > - ----- Method: MessageNames>>selectedMessageName (in category 'selection') ----- > selectedMessageName > selectorList basicSize = 0 ifTrue: [^ nil]. "Deals with selectorList nil or empty" > ^selectorList at: (selectorListIndex max: 1) ifAbsent: [nil] "If no selection we can still find a selector"! > > Item was changed: > ----- Method: MessageNames>>selectorList (in category 'selector list') ----- > selectorList > - "Answer the selectorList" > > - selectorList ifNil: > - [self computeSelectorListFromSearchString. > - selectorListIndex := selectorList size > 0 > - ifTrue: [1] > - ifFalse: [0]. > - messageList := nil]. > ^ selectorList! > > Item was added: > + ----- Method: MessageNames>>selectorList: (in category 'selector list') ----- > + selectorList: someObjects > + "Answer the selectorList" > + > + selectorList := someObjects. > + self changed: #selectorList. > + > + "Select first result if any." > + self selectorListIndex: (selectorList size > 0 > + ifTrue: [1] > + ifFalse: [0]).! > > Item was changed: > ----- Method: MessageNames>>selectorListIndex: (in category 'selector list') ----- > selectorListIndex: anInteger > "Set the selectorListIndex as specified, and propagate consequences" > > selectorListIndex := anInteger. > - selectorListIndex = 0 > - ifTrue: [^ self]. > - messageList := nil. > self changed: #selectorListIndex. > + > + messageList := self computeMessageList. > + self changed: #messageList.! > - self changed: #messageList! > > Item was changed: > + ----- Method: MessageNames>>selectorListKey:from: (in category 'selector list') ----- > - ----- Method: MessageNames>>selectorListKey:from: (in category 'initialization') ----- > selectorListKey: aChar from: view > "Respond to a Command key in the message-list pane." > > aChar == $n ifTrue: [^ self browseSenders]. > aChar == $c ifTrue: [^ self copyName]. > aChar == $b ifTrue: [^ self browseMethodFull]. > ! > > Item was changed: > ----- Method: MessageNames>>showOnlyImplementedSelectors (in category 'search') ----- > showOnlyImplementedSelectors > "Caution -- can be slow!! Filter my selector list down such that it only > shows selectors that are actually implemented somewhere in the system." > + self okToChange ifFalse: [^ self]. > + > + Cursor wait showWhile: [ > + self selectorList: (self systemNavigation allSelectorsWithAnyImplementorsIn: selectorList)].! > - self okToChange > - ifTrue: [Cursor wait > - showWhile: [selectorList := self systemNavigation allSelectorsWithAnyImplementorsIn: selectorList. > - self changed: #selectorList. > - self changed: #messageList]]! > > Item was changed: > + ----- Method: MessageNames>>topConstantHeightFrame:fromLeft:width: (in category 'toolbuilder') ----- > - ----- Method: MessageNames>>topConstantHeightFrame:fromLeft:width: (in category 'as yet unclassified') ----- > topConstantHeightFrame: height fromLeft: leftFraction width: rightFraction > ^LayoutFrame new > topFraction: 0 offset: 0; > leftFraction: leftFraction offset: 0; > rightFraction: (leftFraction + rightFraction) offset: 0; > bottomFraction: 0 offset: height; > yourself.! > > Item was added: > + ----- Method: MessageNames>>update: (in category 'updating') ----- > + update: aspect > + > + aspect == #contents > + ifTrue: [ > + self changed: #labelString. > + self doSearch: self searchString]. > + > + super update: aspect.! > > > |
Free forum by Nabble | Edit this page |