A new version of Tools was added to project The Inbox: http://source.squeak.org/inbox/Tools-fbs.334.mcz
==================== Summary ====================
Name: Tools-fbs.334 Author: fbs Time: 30 March 2011, 9:42:09.966 pm UUID: acca9b1d-675e-f846-815e-eac885ca38ca Ancestors: Tools-fbs.333
More "parallel rollout" of selectedMessageCategoryName, and #messageCategoryListIndex and #messageCategoryListIndex: now internally use the name.
=============== Diff against Tools-fbs.333 ===============
Item was changed: ----- Method: Browser>>buildMessageCategoryBrowserEditString: (in category 'message category functions') ----- buildMessageCategoryBrowserEditString: aString "Create and schedule a message category browser for the currently selected message category. The initial text view contains the characters in aString." "wod 6/24/1998: set newBrowser classListIndex so that it works whether the receiver is a standard or a Hierarchy Browser."
| newBrowser | ^ self hasMessageCategorySelected ifFalse: [ nil ] ifTrue: [newBrowser := Browser new. newBrowser selectSystemCategory: self selectedSystemCategory. + newBrowser selectClass: self selectedClass. + newBrowser metaClassIndicated: self metaClassIndicated. + newBrowser selectMessageCategoryNamed: self selectedMessageCategoryName. - newBrowser classListIndex: (newBrowser classList indexOf: self selectedClassName). - newBrowser metaClassIndicated: metaClassIndicated. - newBrowser messageCategoryListIndex: messageCategoryListIndex. newBrowser selectMessageNamed: self selectedMessageName. self class openBrowserView: (newBrowser openMessageCatEditString: aString) label: 'Message Category Browser (' , newBrowser selectedClassOrMetaClassName , ')'. newBrowser.].!
Item was changed: ----- Method: Browser>>messageCategoryListIndex (in category 'message category list') ----- messageCategoryListIndex "Answer the index of the selected message category."
+ ^self messageCategoryList indexOf: selectedMessageCategoryName ifAbsent: [0].! - ^messageCategoryListIndex!
Item was changed: ----- Method: Browser>>messageCategoryListIndex: (in category 'message category list') ----- messageCategoryListIndex: anInteger "Set the selected message category to be the one indexed by anInteger."
messageCategoryListIndex := anInteger. selectedMessageCategoryName := nil. + self selectMessageCategoryNamed: (self messageCategoryList at: anInteger ifAbsent: [nil]).! - selectedMessageName := nil. - self changed: #messageCategorySelectionChanged. - self changed: #messageCategoryListIndex. "update my selection" - self changed: #messageList. - self editSelection: (anInteger > 0 - ifTrue: [#newMessage] - ifFalse: [self hasClassSelected - ifTrue: [#editClass] - ifFalse: [#newClass]]). - contents := nil. - self contentsChanged.!
Item was changed: ----- Method: Browser>>messageList (in category 'message list') ----- messageList "Answer an Array of the message selectors of the currently selected message category, provided that the messageCategoryListIndex is in proper range. Otherwise, answer an empty Array If messageCategoryListIndex is found to be larger than the number of categories (it happens!!), it is reset to zero." | sel | (sel := self messageCategoryListSelection) ifNil: [ ^ self classOrMetaClassOrganizer ifNil: [Array new] ifNotNil: [self classOrMetaClassOrganizer allMethodSelectors] "^ Array new" ].
^ sel = ClassOrganizer allCategory ifTrue: [self classOrMetaClassOrganizer ifNil: [Array new] ifNotNil: [self classOrMetaClassOrganizer allMethodSelectors]] ifFalse: + [(self classOrMetaClassOrganizer listAtCategoryNamed: self selectedMessageCategoryName ) + ifNil: [messageCategoryListIndex := 0. selectedMessageCategoryName := nil. Array new]]! - [(self classOrMetaClassOrganizer listAtCategoryNumber: messageCategoryListIndex - 1) - ifNil: [messageCategoryListIndex := 0. Array new]]!
Item was changed: ----- Method: Browser>>selectClassNamed: (in category 'class list') ----- selectClassNamed: aSymbolOrString | className currentMessageCategoryName currentMessageName | currentMessageCategoryName := [self selectedMessageCategoryName] on: Error do: [:ex| ex return: nil]. currentMessageName := [self selectedMessageName] on: Error do: [:ex| ex return: nil]. selectedClassName := aSymbolOrString ifNotNil: [ aSymbolOrString asSymbol ]. self setClassOrganizer.
"Try to reselect the category and/or selector if the new class has them." messageCategoryListIndex := self messageCategoryList indexOf: currentMessageCategoryName ifAbsent: [0]. + selectedMessageCategoryName :=(self messageCategoryList includes: currentMessageCategoryName) + ifTrue: [currentMessageCategoryName] + ifFalse: [nil]. self selectMessageNamed: (self hasMessageCategorySelected ifTrue: [ currentMessageName ] ifFalse: [ nil ]).
self hasMessageSelected ifTrue: [self editSelection: #editMessage] ifFalse: [self hasMessageCategorySelected ifTrue: [self editSelection: #newMessage] ifFalse: [self classCommentIndicated ifTrue: [] ifFalse: [self editSelection: (self hasClassSelected not ifTrue: [(metaClassIndicated or: [ self hasSystemCategorySelected not ]) ifTrue: [#none] ifFalse: [#newClass]] ifFalse: [#editClass])]]]. contents := nil. self selectedClass isNil ifFalse: [className := self selectedClass name. (RecentClasses includes: className) ifTrue: [RecentClasses remove: className]. RecentClasses addFirst: className. RecentClasses size > 16 ifTrue: [RecentClasses removeLast]]. self changed: #classSelectionChanged. self changed: #classCommentText. self changed: #classListIndex. "update my selection" self changed: #messageCategoryList. self changed: #messageList. self changed: #relabel. self contentsChanged!
Item was changed: ----- Method: Browser>>selectMessageCategoryNamed: (in category 'message category list') ----- selectMessageCategoryNamed: aSymbol "Given aSymbol, select the category with that name. Do nothing if aSymbol doesn't exist." + selectedMessageCategoryName := aSymbol. + messageCategoryListIndex := aSymbol ifNil: [0] ifNotNil: [self messageCategoryList indexOf: aSymbol]. + + selectedMessageName := nil. + self changed: #messageCategorySelectionChanged. + self changed: #messageCategoryListIndex. "update my selection" + self changed: #messageList. + self editSelection: (aSymbol notNil + ifTrue: [#newMessage] + ifFalse: [self hasClassSelected + ifTrue: [#editClass] + ifFalse: [#newClass]]). + contents := nil. + self contentsChanged.! - self messageCategoryListIndex: (self messageCategoryList indexOf: aSymbol ifAbsent: [ 1])!
Item was changed: ----- Method: MessageSet>>compileMessage:notifying: (in category 'as yet unclassified') ----- compileMessage: aText notifying: aController "Compile the code that was accepted by the user, placing the compiled method into an appropriate message category. Return true if the compilation succeeded, else false." "Copied from Browser's version of sd 11/20/2005 21:26 because later versions remove messageListIndex."
+ | fallBackCategoryName fallBackCategoryIndex fallBackMethodIndex originalSelectorName result | - | fallBackCategoryIndex fallBackMethodIndex originalSelectorName result |
self selectedMessageCategoryName ifNil: [ self selectOriginalCategoryForCurrentMethod ifFalse:["Select the '--all--' category" self messageCategoryListIndex: 1]].
self selectedMessageCategoryName asSymbol = ClassOrganizer allCategory ifTrue: [ "User tried to save a method while the ALL category was selected" fallBackCategoryIndex := messageCategoryListIndex. + fallBackCategoryName := selectedMessageCategoryName. fallBackMethodIndex := messageListIndex. editSelection == #newMessage ifTrue: [ "Select the 'as yet unclassified' category" messageCategoryListIndex := 0. + selectedMessageCategoryName := nil. (result := self defineMessageFrom: aText notifying: aController) ifNil: ["Compilation failure: reselect the original category & method" messageCategoryListIndex := fallBackCategoryIndex. + selectedMessageCategoryName := fallBackCategoryName. messageListIndex := fallBackMethodIndex] ifNotNil: [self setSelector: result]] ifFalse: [originalSelectorName := self selectedMessageName. self setOriginalCategoryIndexForCurrentMethod. messageListIndex := fallBackMethodIndex := self messageList indexOf: originalSelectorName. (result := self defineMessageFrom: aText notifying: aController) ifNotNil: [self setSelector: result] ifNil: [ "Compilation failure: reselect the original category & method" messageCategoryListIndex := fallBackCategoryIndex. + selectedMessageCategoryName := fallBackCategoryName. messageListIndex := fallBackMethodIndex. ^ result notNil]]. self changed: #messageCategoryList. ^ result notNil] ifFalse: [ "User tried to save a method while the ALL category was NOT selected" ^ (self defineMessageFrom: aText notifying: aController) notNil]!
squeak-dev@lists.squeakfoundation.org