Woot! Exactly the right direction. Thanks, Frank!<br><br><div class="gmail_quote">On Thu, Mar 17, 2011 at 4:05 PM, <span dir="ltr"><<a href="mailto:commits@source.squeak.org">commits@source.squeak.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">A new version of Tools was added to project The Inbox:<br>
<a href="http://source.squeak.org/inbox/Tools-fbs.322.mcz" target="_blank">http://source.squeak.org/inbox/Tools-fbs.322.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Tools-fbs.322<br>
Author: fbs<br>
Time: 17 March 2011, 11:04:56.212 pm<br>
UUID: 1d3fc4fc-4947-1c44-af38-d1c53d0b5703<br>
Ancestors: Tools-fbs.321<br>
<br>
And now we can refactor selectOriginalCategoryForCurrentMethod!<br>
<br>
=============== Diff against Tools-fbs.321 ===============<br>
<br>
Item was changed:<br>
----- Method: Browser>>selectClassNamed: (in category 'class list') -----<br>
selectClassNamed: aSymbolOrString<br>
| className currentMessageCategoryName currentMessageName |<br>
currentMessageCategoryName := [self selectedMessageCategoryName]<br>
on: Error<br>
do: [:ex| ex return: nil].<br>
currentMessageName := [self selectedMessageName]<br>
on: Error<br>
do: [:ex| ex return: nil].<br>
<br>
selectedClassName := aSymbolOrString ifNotNil: [ aSymbolOrString asSymbol ].<br>
self setClassOrganizer.<br>
<br>
"Try to reselect the category and/or selector if the new class has them."<br>
messageCategoryListIndex := self messageCategoryList<br>
indexOf: currentMessageCategoryName<br>
ifAbsent: [0].<br>
+ self selectMessageNamed: (self hasMessageCategorySelected<br>
+ ifTrue: [ currentMessageName ]<br>
+ ifFalse: [ nil ]).<br>
- messageListIndex := messageCategoryListIndex = 0<br>
- ifTrue: [0]<br>
- ifFalse: [self messageList<br>
- indexOf: currentMessageName<br>
- ifAbsent: [0]].<br>
<br>
self hasMessageSelected ifTrue:<br>
[self editSelection: #editMessage] ifFalse:<br>
+ [self messageCategoryListIndex ~= 0 ifTrue:<br>
- [messageCategoryListIndex ~= 0 ifTrue:<br>
[self editSelection: #newMessage] ifFalse:<br>
[self classCommentIndicated<br>
ifTrue: []<br>
ifFalse: [self editSelection: (self hasClassSelected not<br>
ifTrue: [(metaClassIndicated or: [ self hasSystemCategorySelected not ])<br>
ifTrue: [#none]<br>
ifFalse: [#newClass]]<br>
ifFalse: [#editClass])]]].<br>
contents := nil.<br>
self selectedClass isNil<br>
ifFalse: [className := self selectedClass name.<br>
(RecentClasses includes: className)<br>
ifTrue: [RecentClasses remove: className].<br>
RecentClasses addFirst: className.<br>
RecentClasses size > 16<br>
ifTrue: [RecentClasses removeLast]].<br>
self changed: #classSelectionChanged.<br>
self changed: #classCommentText.<br>
self changed: #classListIndex. "update my selection"<br>
self changed: #messageCategoryList.<br>
self changed: #messageList.<br>
self changed: #relabel.<br>
self contentsChanged!<br>
<br>
Item was changed:<br>
----- Method: Browser>>selectOriginalCategoryForCurrentMethod (in category 'message category list') -----<br>
selectOriginalCategoryForCurrentMethod<br>
"private - Select the message category for the current method.<br>
<br>
Note: This should only be called when somebody tries to save<br>
a method that they are modifying while ALL is selected.<br>
<br>
Returns: true on success, false on failure."<br>
| aSymbol selectorName |<br>
aSymbol := self categoryOfCurrentMethod.<br>
selectorName := self selectedMessageName.<br>
(aSymbol notNil and: [aSymbol ~= ClassOrganizer allCategory])<br>
ifTrue:<br>
[messageCategoryListIndex := (self messageCategoryList indexOf: aSymbol).<br>
messageListIndex := (self messageList indexOf: selectorName).<br>
+ selectedMessageName := selectorName.<br>
self changed: #messageCategorySelectionChanged.<br>
self changed: #messageCategoryListIndex. "update my selection"<br>
self changed: #messageList.<br>
self changed: #messageListIndex.<br>
^ true].<br>
^ false!<br>
<br>
<br>
</blockquote></div><br>