Tools__NewSystemBrowser.st
branchjv
changeset 12205 f210b6224ef0
parent 12194 4639848e5517
child 12211 67fdfbb74096
--- a/Tools__NewSystemBrowser.st	Wed Mar 21 14:05:42 2012 +0000
+++ b/Tools__NewSystemBrowser.st	Wed Mar 21 17:50:14 2012 +0000
@@ -22,13 +22,12 @@
 	classVariableNames:'LastNewProtocols LastProtocolRenames LastCategoryRenames
 		LastCategoryRenameOld LastCategoryRenameNew LastProjectMoves
 		LastNameSpaceMove LastMethodMoveOrCopyTargetClass
-		LastSearchPatterns LastClassFilterBlockString
-		LastMethodFilterBlockString LastBreakPointConditionString
-		LastIndividualChecks LastAcceptPackage LastVariableRenames
-		LastVisitorClassName LastTemporaryVariableName BookMarks
-		FindHistory CheckForInstancesWhenRemovingClasses
-		SynchronousUpdate DoubleClickIsOpenBrowser
-		ShowMethodTemplateWhenProtocolIsSelected
+		LastClassFilterBlockString LastMethodFilterBlockString
+		LastBreakPointConditionString LastIndividualChecks
+		LastAcceptPackage LastVariableRenames LastVisitorClassName
+		LastTemporaryVariableName BookMarks FindHistory
+		CheckForInstancesWhenRemovingClasses SynchronousUpdate
+		DoubleClickIsOpenBrowser ShowMethodTemplateWhenProtocolIsSelected
 		DefaultShowMethodTemplate DefaultShowMethodInheritance
 		DefaultEmphasizeUnloadedClasses DefaultImmediateSyntaxColoring
 		DefaultImmediateExplaining DefaultSyntaxColoring
@@ -291,9 +290,7 @@
     "Created: / 03-07-2011 / 13:21:53 / cg"
 !
 
-lastSearchPatterns
-    ^ LastSearchPatterns
-! !
+ !
 
 !NewSystemBrowser class methodsFor:'defaults'!
 
@@ -405,7 +402,7 @@
 'Search Class'
 
 #gotoClassEntryField
-'Goto class (uppercase) or class which implements this method (lowercase)'
+'Goto class (uppercase) or method which implements this selector (lowercase)'
 
 "/#gotoClassEntryField
 "/'Goto Class'
@@ -440,7 +437,7 @@
     ].
     ^ spec.
 
-    "Modified: / 08-11-2011 / 12:21:23 / cg"
+    "Modified: / 07-03-2012 / 11:57:59 / cg"
 ! !
 
 !NewSystemBrowser class methodsFor:'image specs'!
@@ -5142,29 +5139,27 @@
                           )
                           handles: (Any 0.33 0.67 1.0)
                         )
-                       (SubCanvasSpec
-                          name: 'RuleDetails'
-                          layout: (LayoutFrame 0 0 -30 1 0 1 0 1)
-                          initiallyInvisible: true
-                          hasHorizontalScrollBar: false
-                          hasVerticalScrollBar: false
-                          majorKey: #'Tools::LintRuleDetail'
-                          subAspectHolders: 
-                         (Array
-                            
-                           (SubChannelInfoSpec
-                              subAspect: ruleHolder
-                              aspect: theSingleSelectedLintRuleHolder
-                            )
-                          )
-                          createNewApplication: true
-                          createNewBuilder: true
-                        )
                        )
                      
                     )
                   )
                  (SubCanvasSpec
+                    name: 'RuleDesc'
+                    hasHorizontalScrollBar: false
+                    hasVerticalScrollBar: false
+                    majorKey: #'Tools::LintRuleDetail'
+                    subAspectHolders: 
+                   (Array
+                      
+                     (SubChannelInfoSpec
+                        subAspect: ruleHolder
+                        aspect: theSingleSelectedLintRuleHolder
+                      )
+                    )
+                    createNewApplication: true
+                    createNewBuilder: true
+                  )
+                 (SubCanvasSpec
                     name: 'CodePane'
                     autoHideScrollBars: false
                     majorKey: NewSystemBrowser
@@ -5174,15 +5169,13 @@
                  )
                
               )
-              handles: (Any 0.5 1.0)
+              handles: (Any 0.333333333333333 0.455958549222798 1.0)
               postBuildCallback: postBuildTabContentView:
             )
            )
          
         )
       )
-
-    "Modified: / 31-12-2011 / 13:12:37 / cg"
 !
 
 visualProfilerSpec
@@ -7654,6 +7647,12 @@
                   translateLabel: true
                 )
                (MenuItem
+                  enabled: hasMultipleClassesSelectedHolder
+                  label: 'Buffer with Common Superclass'
+                  itemValue: classMenuSpawnBufferWithCommonSuperclass
+                  translateLabel: true
+                )
+               (MenuItem
                   enabled: hasClassSelectedHolder
                   label: 'Buffer with Projects'
                   itemValue: classMenuSpawnBufferWithClassProjects
@@ -7695,6 +7694,12 @@
                   translateLabel: true
                 )
                (MenuItem
+                  enabled: hasMultipleClassesSelectedHolder
+                  label: 'Browser on Common Superclass'
+                  itemValue: classMenuSpawnWithCommonSuperclass
+                  translateLabel: true
+                )
+               (MenuItem
                   enabled: hasClassSelectedHolder
                   label: 'Browser on Projects'
                   itemValue: classMenuSpawnClassProjects
@@ -7708,6 +7713,7 @@
                   translateLabel: true
                   isVisible: false
                 )
+
                )
               nil
               nil
@@ -7868,7 +7874,9 @@
             label: 'Remove...'
             itemValue: classMenuRemove
             translateLabel: true
+            shortcutKey: Delete
             labelImage: (ResourceRetriever ToolbarIconLibrary erase16x16Icon 'Remove...')
+            ignoreShortcutKeys: true
           )
          (MenuItem
             label: '-'
@@ -7913,7 +7921,7 @@
                   isVisible: smallTeamAvailable
                 )
                (MenuItem
-                  label: 'With SmallTeam Version On Host'
+                  label: 'With SmallTeam Version on Host'
                   translateLabel: true
                   isVisible: smallTeamAvailable
                   submenuChannel: compareClassWithSmallTeamVersionMenu
@@ -7968,7 +7976,7 @@
             label: '-'
           )
          (MenuItem
-            label: 'Search && Rewrite'
+            label: 'Search && Rewrite...'
             itemValue: classMenuRewrite
             translateLabel: true
           )
@@ -7986,6 +7994,8 @@
         nil
         nil
       )
+
+    "Modified: / 28-02-2012 / 08:57:35 / cg"
 !
 
 classNewGroovyClassSlice
@@ -8279,7 +8289,7 @@
      #(Menu
         (
          (MenuItem
-            label: 'Smalltalk class'
+            label: 'Smalltalk Class'
             itemValue: classMenuNewSmalltalkClass
             translateLabel: true
           )
@@ -8362,7 +8372,7 @@
         nil
       )
 
-    "Modified: / 08-08-2011 / 07:47:16 / cg"
+    "Modified: / 17-02-2012 / 22:03:09 / cg"
 !
 
 classSmallTeamMenu
@@ -9055,16 +9065,6 @@
            (Menu
               (
                (MenuItem
-                  label: 'ST/X Documentation'
-                  itemValue: openSTXDocumentation
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Class Documentation'
-                  itemValue: openClassDocumentation
-                  translateLabel: true
-                )
-               (MenuItem
                   label: 'Browser Documentation'
                   itemValue: openDocumentation
                   translateLabel: true
@@ -9075,6 +9075,19 @@
                   translateLabel: true
                 )
                (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Class Documentation'
+                  itemValue: openClassDocumentation
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: 'ST/X Documentation'
+                  itemValue: openSTXDocumentation
+                  translateLabel: true
+                )
+               (MenuItem
                   label: 'Keyword Index'
                   itemValue: openKeywordIndexDocumentation
                   translateLabel: true
@@ -9139,7 +9152,7 @@
           )
          (MenuItem
             enabled: anyBreakOrTracePointsAreSetHolder
-            label: 'Remove all Break && Tracepoints'
+            label: 'Remove all Break- && Tracepoints'
             itemValue: debugMenuRemoveAllBreakpoints
             translateLabel: true
           )
@@ -9148,31 +9161,31 @@
           )
          (MenuItem
             enabled: hasMethodSelectedHolder
-            label: 'BreakPoint'
+            label: 'Breakpoint'
             itemValue: debugMenuBreakPoint
             translateLabel: true
           )
          (MenuItem
             enabled: hasMethodSelectedHolder
-            label: 'BreakPoint in Process...'
+            label: 'Breakpoint in Process...'
             itemValue: debugMenuBreakPointIn
             translateLabel: true
           )
          (MenuItem
             enabled: hasMethodSelectedHolder
-            label: 'BreakPoint for Instances Of...'
+            label: 'Breakpoint for Instances Of...'
             itemValue: debugMenuBreakPointFor
             translateLabel: true
           )
          (MenuItem
             enabled: hasMethodSelectedHolder
-            label: 'BreakPoint After...'
+            label: 'Breakpoint After...'
             itemValue: debugMenuBreakPointAfter
             translateLabel: true
           )
          (MenuItem
             enabled: hasMethodSelectedHolder
-            label: 'BreakPoint If...'
+            label: 'Breakpoint If...'
             itemValue: debugMenuBreakPointIf
             translateLabel: true
           )
@@ -9311,6 +9324,8 @@
         nil
         nil
       )
+
+    "Modified: / 28-02-2012 / 11:31:30 / cg"
 !
 
 methodListMenu
@@ -9428,7 +9443,7 @@
                   #label: '-'
                 )
          #(#MenuItem
-            #label: 'Inline All Self Sends'
+            #label: 'Inline all self-Sends'
             #translateLabel: true
             #value: #selectorMenuInlineSelfSends
             #enabled: #hasSingleMethodSelectedAndCanUseRefactoringSupportHolder
@@ -10745,7 +10760,7 @@
                 )
                (MenuItem
                   enabled: smallTeamAvailable
-                  label: 'With SmallTeam Version On Host'
+                  label: 'With SmallTeam Version on Host'
                   translateLabel: true
                   submenuChannel: compareMethodWithSmallTeamVersionMenu
                 )
@@ -10947,6 +10962,8 @@
         nil
         nil
       )
+
+    "Modified: / 17-02-2012 / 22:20:52 / cg"
 !
 
 selectorMenuCopyMoveRemoveSlice
@@ -11336,6 +11353,12 @@
                   translateLabel: true
                 )
                (MenuItem
+                  enabled: hasMultipleMethodsSelectedHolder
+                  label: 'Buffer with Common Superclass'
+                  itemValue: methodListMenuSpawnBufferWithCommonSuperclass
+                  translateLabel: true
+                )
+               (MenuItem
                   enabled: hasMethodSelectedHolder
                   label: 'Buffer'
                   itemValue: selectorMenuSpawnMethodBuffer
@@ -11406,6 +11429,12 @@
                   translateLabel: true
                 )
                (MenuItem
+                  enabled: hasMultipleMethodsSelectedHolder
+                  label: 'Browser on Common Superclass'
+                  itemValue: methodListMenuSpawnCommonSuperclass
+                  translateLabel: true
+                )
+               (MenuItem
                   enabled: hasMethodSelectedHolder
                   label: 'Browser'
                   itemValue: selectorMenuSpawnMethod
@@ -11462,7 +11491,7 @@
         nil
       )
 
-    "Modified: / 24-11-2011 / 19:34:53 / cg"
+    "Modified: / 28-02-2012 / 09:06:15 / cg"
 !
 
 selectorSmallTeamMenu
@@ -11609,6 +11638,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#variablesMenu
      (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser variablesMenu)) startUp
@@ -11694,14 +11724,14 @@
                (MenuItem
                   enabled: hasInstanceVariableSelectedInCodeViewOrVariableListAndCanUseRefactoringSupportHolder
                   label: 'Pull Up'
-                  itemValue: codeMenuPullUpInstanceVariable
+                  itemValue: variablesMenuPullUp
                   translateLabel: true
                   showBusyCursorWhilePerforming: true
                 )
                (MenuItem
                   enabled: hasInstanceVariableSelectedInCodeViewOrVariableListAndCanUseRefactoringSupportHolder
                   label: 'Push Down'
-                  itemValue: codeMenuPushDownInstanceVariable
+                  itemValue: variablesMenuPushDown
                   translateLabel: true
                   showBusyCursorWhilePerforming: true
                 )
@@ -11849,14 +11879,14 @@
                (MenuItem
                   enabled: hasClassVariableSelectedInCodeViewOrVariableListAndCanUseRefactoringSupportHolder
                   label: 'Pull Up'
-                  itemValue: codeMenuPullUpClassVariable
+                  itemValue: variablesMenuPullUp
                   translateLabel: true
                   showBusyCursorWhilePerforming: true
                 )
                (MenuItem
                   enabled: hasClassVariableSelectedInCodeViewOrVariableListAndCanUseRefactoringSupportHolder
                   label: 'Push Down'
-                  itemValue: codeMenuPushDownClassVariable
+                  itemValue: variablesMenuPushDown
                   translateLabel: true
                   showBusyCursorWhilePerforming: true
                 )
@@ -16048,7 +16078,6 @@
     "Modified: / 29-09-2006 / 16:11:08 / cg"
 ! !
 
-
 !NewSystemBrowser class methodsFor:'menu specs-popup'!
 
 categoryPopUpMenu
@@ -16620,11 +16649,34 @@
             label: '-'
           )
          (MenuItem
+            enabled: hasClassSelectedHolder
             label: 'Run Static Analysis (Lint)'
             itemValue: runLint
             nameKey: RunLint
             translateLabel: true
             isButton: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  label: 'Repeat Previously Selected Checks'
+                  itemValue: runLintOnPreviousRules
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: 'Run all Checks'
+                  itemValue: runLintOnAllRules
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: 'Select Checks...'
+                  itemValue: runLintOnSelectedRules
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
             labelImage: (ResourceRetriever ToolbarIconLibrary lint24x24Icon)
           )
          (MenuItem
@@ -16737,8 +16789,6 @@
         nil
         nil
       )
-
-    "Modified: / 31-12-2011 / 15:47:24 / cg"
 ! !
 
 !NewSystemBrowser class methodsFor:'queries'!
@@ -16946,7 +16996,8 @@
 !
 
 openWithSelectedClasses:aCollectionOfClasses label:titleOrNil
-    "launch a multi class browser."
+    "launch a full browser with multiple classes initially selected.
+     (also selects the corresponding categories)"
 
     |browser|
 
@@ -17309,10 +17360,11 @@
         categories:subjects;
         label:(subjects size = 1 
                     ifTrue:[ 'class category' , subjects anyOne ]
-                    ifFalse:[ subjects size printString , ' class categories' ])
+                    ifFalse:[ subjects size printString , ' class categories' ]);
+        yourself
 
     "Created: / 17-04-2010 / 10:29:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 04-08-2011 / 23:13:24 / cg"
+    "Modified: / 06-03-2012 / 18:54:41 / cg"
 !
 
 selectedClassesAsEnvironment
@@ -17323,8 +17375,11 @@
         classes:subjects;
         label:(subjects size = 1 
                     ifTrue:[ 'class ' , subjects anyOne fullName ]
-                    ifFalse:[ subjects size printString , ' classes' ])
-                 "Created: / 24-02-2009 / 11:08:35 / Jan Vrany <vranyj1@fel.cvut.cz>"
+                    ifFalse:[ subjects size printString , ' classes' ]);
+        yourself
+
+    "Created: / 24-02-2009 / 11:08:35 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 06-03-2012 / 18:54:49 / cg"
 !
 
 selectedCodeComponentsAsEnvironment
@@ -17382,9 +17437,11 @@
         protocols: protocols;
         label:(protocols size = 1 
                     ifTrue:[ 'protocol' , protocols anyOne , ' in ' , classes anyOne name ]
-                    ifFalse:[ protocols size printString , ' protocols in ' , classes anyOne name ])
+                    ifFalse:[ protocols size printString , ' protocols in ' , classes anyOne name ]);
+        yourself
 
     "Created: / 17-04-2010 / 10:57:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 06-03-2012 / 18:55:00 / cg"
 !
 
 selectedSelectorsAsEnvironment
@@ -17393,13 +17450,13 @@
     "/ a q&d hack...
     SelectorEnvironment isNil ifTrue:[ Smalltalk loadPackage:'stx:goodies/refactoryBrowser/browser' ].
 
-    methods := self selectedMethods value.
+    methods := self selectedMethodsValue.
     env := SelectorEnvironment onEnvironment: BrowserEnvironment new.
     methods do:[:mthd|env addClass: mthd mclass selector: mthd selector].
     ^env
 
     "Created: / 16-07-2010 / 09:25:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 03-08-2011 / 22:49:46 / cg"
+    "Modified: / 28-02-2012 / 16:28:38 / cg"
 ! !
 
 !NewSystemBrowser methodsFor:'aspects-kludges'!
@@ -17724,11 +17781,17 @@
 !
 
 selectedMethodsClasses
-    ^ (self selectedMethods value collect:[:m | m mclass]) asSet
+    ^ (self selectedMethodsValue collect:[:m | m mclass]) asSet
 
     "Created: / 07-08-2006 / 12:13:37 / cg"
 !
 
+selectedMethodsValue
+    ^ self selectedMethods value ? #()
+
+    "Created: / 28-02-2012 / 16:13:43 / cg"
+!
+
 selectedNamespaces
     ^ self navigationState selectedNamespaces
 
@@ -17795,7 +17858,6 @@
     "Created: / 24.2.2000 / 23:28:06 / cg"
 ! !
 
-
 !NewSystemBrowser methodsFor:'aspects-organization'!
 
 categoryMenuVisible
@@ -18818,8 +18880,10 @@
 canInsertSuperclass
     |selected|
 
-    ^ (selected := self selectedClasses value) size > 0
+    ^ (selected := self selectedClassesValue) size > 0
       and:[ (selected collect:[:each | each superclass ]) asSet size == 1].
+
+    "Modified: / 28-02-2012 / 16:45:12 / cg"
 !
 
 canInsertSuperclassHolder
@@ -18882,17 +18946,17 @@
             ^ prj
         ]
     ].
-    projects := ((self selectedClasses value ? #()) collect:[:cls | cls package]) asSet.
+    projects := ((self selectedClassesValue) collect:[:cls | cls package]) asSet.
     projects size == 1 ifTrue:[
         ^ projects first
     ].
-    projects := ((self selectedMethods value ? #()) collect:[:m | m package]) asSet.
+    projects := (self selectedMethodsValue collect:[:m | m package]) asSet.
     projects size == 1 ifTrue:[
         ^ projects first
     ].
     ^ nil
 
-    "Modified: / 28-08-2006 / 23:33:08 / cg"
+    "Modified: / 28-02-2012 / 16:49:07 / cg"
 !
 
 globalCoverageRecordingIsDisabled
@@ -18942,10 +19006,20 @@
     ^ [ self hasAnyCategoryWithAnyUnLoadedClassSelected ]
 !
 
+hasAnyClassSelectedForWhich:aBlock
+    |selectedClasses|
+
+    selectedClasses := self selectedClassesValue.
+    selectedClasses isEmptyOrNil ifTrue:[^ false].
+    ^ selectedClasses contains:aBlock
+
+    "Created: / 28-02-2012 / 16:50:16 / cg"
+!
+
 hasAnyClassWithCoverageInfoSelected
     |selected|
 
-    selected := self selectedClasses value.
+    selected := self selectedClassesValue.
     selected isEmptyOrNil ifTrue:[
         selected := self selectedCategoryClasses
     ].
@@ -18979,12 +19053,19 @@
     ^ [ self hasAnyLoadedClassSelected ]
 !
 
-hasAnyNonIgnoredMethodSelected
+hasAnyMethodSelectedForWhich:aBlock
     |sel|
 
-    sel := self selectedMethods value.
-    ^ (sel size > 0)
-      and:[  sel contains:[:m | m isIgnored not]  ]
+    sel := self selectedMethodsValue.
+    ^ (sel size > 0) and:[ sel contains:aBlock ]
+
+    "Created: / 28-02-2012 / 16:17:24 / cg"
+!
+
+hasAnyNonIgnoredMethodSelected
+    ^ self hasAnyMethodSelectedForWhich:[:m | m isIgnored not]
+
+    "Modified: / 28-02-2012 / 16:17:56 / cg"
 !
 
 hasAnyNonIgnoredMethodSelectedHolder
@@ -18992,11 +19073,9 @@
 !
 
 hasAnyNonPrivateMethodSelected
-    |sel|
-
-    sel := self selectedMethods value.
-    ^ (sel size > 0)
-      and:[  sel contains:[:m | m isPrivate not]  ]
+    ^ self hasAnyMethodSelectedForWhich:[:m | m isPrivate not]
+
+    "Modified: / 28-02-2012 / 16:18:29 / cg"
 !
 
 hasAnyNonPrivateMethodSelectedHolder
@@ -19004,11 +19083,9 @@
 !
 
 hasAnyNonProtectedMethodSelected
-    |sel|
-
-    sel := self selectedMethods value.
-    ^ (sel size > 0)
-      and:[  sel contains:[:m | m isProtected not]  ]
+    ^ self hasAnyMethodSelectedForWhich:[:m | m isProtected not]
+
+    "Modified: / 28-02-2012 / 16:18:41 / cg"
 !
 
 hasAnyNonProtectedMethodSelectedHolder
@@ -19016,11 +19093,9 @@
 !
 
 hasAnyNonPublicMethodSelected
-    |sel|
-
-    sel := self selectedMethods value.
-    ^ (sel size > 0)
-      and:[  sel contains:[:m | m isPublic not]  ]
+    ^ self hasAnyMethodSelectedForWhich:[:m | m isPublic not]
+
+    "Modified: / 28-02-2012 / 16:18:54 / cg"
 !
 
 hasAnyNonPublicMethodSelectedHolder
@@ -19043,7 +19118,7 @@
 hasAnyTestCaseSelected
     |selected|
 
-    selected := self selectedClasses value.
+    selected := self selectedClassesValue.
     selected isEmptyOrNil ifTrue:[
         selected := self selectedCategoryClasses
     ].
@@ -19056,7 +19131,7 @@
     ].
     ^ false.
 
-    "Modified: / 06-07-2011 / 14:07:33 / cg"
+    "Modified: / 28-02-2012 / 16:49:32 / cg"
 !
 
 hasAnyTestCaseSelectedHolder
@@ -19105,7 +19180,9 @@
 !
 
 hasAtMostOneClassesSelected
-    ^ self selectedClasses value size <= 1
+    ^ self selectedClassesValue size <= 1
+
+    "Modified: / 28-02-2012 / 16:49:36 / cg"
 !
 
 hasAtMostOneClassesSelectedHolder
@@ -19207,12 +19284,9 @@
 !
 
 hasClassMethodsSelected
-    |methods|
-
-    methods := self selectedMethods value.
-    methods size == 0 ifTrue:[ ^ false ].
-    ^ (methods conform:[:eachMethod | eachMethod mclass isMeta])
-
+    ^ self hasOnlyMethodsSelectedForWhich:[:eachMethod | eachMethod mclass isMeta]
+
+    "Modified: / 28-02-2012 / 16:42:20 / cg"
 !
 
 hasClassMethodsSelectedHolder
@@ -19226,10 +19300,10 @@
 !
 
 hasClassSelected
-    ^ self selectedClasses value size > 0
-
-    "Created: / 4.2.2000 / 22:02:25 / cg"
-    "Modified: / 6.2.2000 / 01:12:40 / cg"
+    ^ self selectedClassesValue size > 0
+
+    "Created: / 04-02-2000 / 22:02:25 / cg"
+    "Modified: / 28-02-2012 / 16:49:39 / cg"
 !
 
 hasClassSelectedAndCanFileOutBinaryHolder
@@ -19300,12 +19374,8 @@
 !
 
 hasClassSelectedWhichCanBeExcludedFromProject
-    |selectedClasses|
-
-    selectedClasses := self selectedClasses value.
-    selectedClasses isEmptyOrNil ifTrue:[^ false].
-    ^ selectedClasses
-        contains:[:cls |
+    ^ self hasAnyClassSelectedForWhich:
+        [:cls |
             |def|
 
             def := ProjectDefinition definitionClassForPackage:cls package.
@@ -19317,7 +19387,7 @@
         ]
 
     "Created: / 22-02-2007 / 13:55:03 / cg"
-    "Modified: / 30-08-2007 / 18:58:08 / cg"
+    "Modified: / 28-02-2012 / 16:51:10 / cg"
 !
 
 hasClassSelectedWhichCanBeExcludedFromProjectHolder
@@ -19327,12 +19397,8 @@
 !
 
 hasClassSelectedWhichCanBeIncludedInProject
-    |selectedClasses|
-
-    selectedClasses := self selectedClasses value.
-    selectedClasses isEmptyOrNil ifTrue:[^ false].
-    ^ selectedClasses
-        contains:[:cls |
+    ^ self hasAnyClassSelectedForWhich:
+        [:cls |
             |def|
 
             def := ProjectDefinition definitionClassForPackage:cls package.
@@ -19344,7 +19410,7 @@
         ]
 
     "Created: / 22-02-2007 / 13:54:16 / cg"
-    "Modified: / 28-03-2007 / 21:53:51 / cg"
+    "Modified: / 28-02-2012 / 16:50:59 / cg"
 !
 
 hasClassSelectedWhichCanBeIncludedInProjectHolder
@@ -19354,12 +19420,8 @@
 !
 
 hasClassSelectedWhichCanBeMadeAutoloadedInProject
-    |selectedClasses|
-
-    selectedClasses := self selectedClasses value.
-    selectedClasses isEmptyOrNil ifTrue:[^ false].
-    ^ selectedClasses
-        contains:[:cls |
+    ^ self hasAnyClassSelectedForWhich:
+        [:cls |
             |def|
 
             def := ProjectDefinition definitionClassForPackage:cls package.
@@ -19445,8 +19507,9 @@
 !
 
 hasClassWithExtensionsSelected
-    ^ (self selectedClasses value ? #())
-          contains:[:cls | cls hasExtensions].
+    ^ self hasAnyClassSelectedForWhich:[:cls | cls hasExtensions].
+
+    "Modified: / 28-02-2012 / 16:54:34 / cg"
 !
 
 hasClassWithExtensionsSelectedHolder
@@ -19459,7 +19522,7 @@
     ^ [
         | classes |
 
-        classes := self selectedClasses value.
+        classes := self selectedClassesValue.
         classes isEmptyOrNil ifTrue:[
             false
         ] ifFalse:[
@@ -19469,13 +19532,14 @@
 
     "Created: / 03-01-2012 / 15:48:46 / cg"
     "Modified: / 19-01-2012 / 10:44:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-02-2012 / 16:54:43 / cg"
 !
 
 hasClassesSelectedAndFileBasedRepositoryExistsHolder
     ^ [
         | classes |
 
-        classes := self selectedClasses value.
+        classes := self selectedClassesValue.
         classes isEmptyOrNil ifTrue:[
             false
         ] ifFalse:[
@@ -19485,13 +19549,14 @@
 
     "Created: / 21-12-2011 / 17:05:28 / cg"
     "Modified: / 19-01-2012 / 10:44:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-02-2012 / 16:54:49 / cg"
 !
 
 hasClassesSelectedAndMercurialRepositoryExistsHolder
     ^ [
         | classes |
 
-        classes := self selectedClasses value.
+        classes := self selectedClassesValue.
         classes isEmptyOrNil ifTrue:[
             false
         ] ifFalse:[
@@ -19508,7 +19573,7 @@
     ^ [
         | classes |
 
-        classes := self selectedClasses value.
+        classes := self selectedClassesValue.
         classes isEmptyOrNil ifTrue:[
             false
         ] ifFalse:[
@@ -19524,18 +19589,20 @@
 hasClassesSelectedAndSubversionRepositoryExists
     | classes |
 
-    classes := self selectedClasses value.
+    classes := self selectedClassesValue.
     classes size = 0 ifTrue:[^false].
     ^ classes
         allSatisfy:
             [:cls | self hasSubversionRepositoryFor: cls theNonMetaclass package]
+
+    "Modified: / 28-02-2012 / 16:55:03 / cg"
 !
 
 hasClassesSelectedAndSubversionRepositoryExistsHolder
     ^ [
         | classes |
 
-        classes := self selectedClasses value.
+        classes := self selectedClassesValue.
         classes isEmptyOrNil ifTrue:[
             false
         ] ifFalse:[
@@ -19544,6 +19611,8 @@
                     [:cls | self hasSubversionRepositoryFor: cls theNonMetaclass package]
         ]
     ]
+
+    "Modified: / 28-02-2012 / 16:55:12 / cg"
 !
 
 hasClassesSelectedWhichAreSubclassOf:aBaseClass
@@ -19568,14 +19637,14 @@
 hasClassesWithCommonSuperclassSelected
     |selectedClasses commonSuper|
 
-    selectedClasses := self selectedClasses value.
+    selectedClasses := self selectedClassesValue.
     selectedClasses isEmptyOrNil ifTrue:[^ false].
     selectedClasses size == 1 ifTrue:[^ true].
 
     commonSuper := Behavior commonSuperclassOf:(selectedClasses ? #()).
     ^ commonSuper notNil and:[ selectedClasses includes: commonSuper ].
 
-    "Modified: / 11-02-2007 / 13:47:14 / cg"
+    "Modified: / 28-02-2012 / 16:55:19 / cg"
 !
 
 hasDataBaseRepositoryFor: package
@@ -19619,15 +19688,13 @@
 !
 
 hasEnumTypeClassSelected
-    ^ self hasClassSelected
-      and:[self selectedClasses value
-                contains:[:cls |
+    ^ self hasAnyClassSelectedForWhich:[:cls |
                         cls isLoaded
                         and:[(cls theNonMetaclass askFor:#isAbstract) not
                         and:[ cls withAllSuperclasses contains:[:aSuperClass |
-                                 aSuperClass theNonMetaclass name includesString:'Enum']]] ]]
-
-    "Modified: / 07-09-2007 / 15:38:45 / cg"
+                                 aSuperClass theNonMetaclass name includesString:'Enum']]] ]
+
+    "Modified: / 28-02-2012 / 16:56:28 / cg"
 !
 
 hasEnumTypeClassSelectedHolder
@@ -19637,7 +19704,9 @@
 !
 
 hasExactlyTwoClassesSelected
-    ^ self selectedClasses value size == 2
+    ^ self selectedClassesValue size == 2
+
+    "Modified: / 28-02-2012 / 16:56:33 / cg"
 !
 
 hasExactlyTwoClassesSelectedHolder
@@ -19647,7 +19716,9 @@
 !
 
 hasExactlyTwoMethodsSelected
-    ^ self selectedMethods value size == 2
+    ^ self selectedMethodsValue size == 2
+
+    "Modified: / 28-02-2012 / 16:20:11 / cg"
 !
 
 hasExactlyTwoMethodsSelectedHolder
@@ -19657,10 +19728,12 @@
 !
 
 hasExtensionMethodSelected
-    ^ self selectedMethods value ? #()
-        contains:[:aMethod | aMethod containingClass isNil
-                             or:[ aMethod package ~= aMethod containingClass package ]
-                 ]
+    ^ self hasAnyMethodSelectedForWhich:[:m | 
+                                            m containingClass isNil
+                                            or:[ m package ~= m containingClass package ]
+                                        ]
+
+    "Modified: / 28-02-2012 / 16:21:22 / cg"
 !
 
 hasExtensionMethodSelectedHolder
@@ -19707,12 +19780,9 @@
 !
 
 hasInstanceMethodsSelected
-    |methods|
-
-    methods := self selectedMethods value.
-    methods size == 0 ifTrue:[ ^ false ].
-    ^ (methods conform:[:eachMethod | eachMethod mclass isMeta not])
-
+    ^ self hasOnlyMethodsSelectedForWhich:[:m | m mclass isMeta not]
+
+    "Modified: / 28-02-2012 / 16:26:35 / cg"
 !
 
 hasInstanceMethodsSelectedHolder
@@ -19792,8 +19862,9 @@
 !
 
 hasLoadedClassSelected
-    ^ self hasClassSelected
-      and:[self selectedClasses value contains:[:aClass | aClass isLoaded]]
+    ^ self hasAnyClassSelectedForWhich:[:aClass | aClass isLoaded]
+
+    "Modified: / 28-02-2012 / 16:56:54 / cg"
 !
 
 hasLoadedClassSelectedHolder
@@ -19809,10 +19880,12 @@
     sel := self selectedSelectorInCodeViewOrNil.
     sel isNil ifTrue:[^ false].
 
-    (self selectedClasses value ? #()) contains:[:cls |
-        (cls canUnderstand:sel) ifTrue:[^ true].
-    ].
-    ^ true.
+    (self hasAnyClassSelectedForWhich:[:cls |
+        (cls canUnderstand:sel)]) ifTrue:[^ true].
+
+    ^ false "true".
+
+    "Modified: / 28-02-2012 / 16:57:56 / cg"
 !
 
 hasLocalVariableSelectedInCodeView
@@ -19873,10 +19946,10 @@
 !
 
 hasMethodSelected
-    ^ self selectedMethods value size > 0
-
-    "Created: / 4.2.2000 / 22:09:52 / cg"
-    "Modified: / 5.2.2000 / 23:06:44 / cg"
+    ^ self selectedMethodsValue size > 0
+
+    "Created: / 04-02-2000 / 22:09:52 / cg"
+    "Modified: / 28-02-2012 / 16:37:12 / cg"
 !
 
 hasMethodSelectedAndCanFileOutSIFHolder
@@ -19939,8 +20012,9 @@
 !
 
 hasMethodWithBreakPointSelected
-    ^ self selectedMethods value ? #()
-        contains:[:aMethod | aMethod isBreakpointed ]
+    ^ self hasAnyMethodSelectedForWhich:[:m | m isBreakpointed ]
+
+    "Modified: / 28-02-2012 / 16:23:11 / cg"
 !
 
 hasMethodWithBreakPointSelectedHolder
@@ -19948,8 +20022,9 @@
 !
 
 hasMethodWithTracePointSelected
-    ^ self selectedMethods value ? #()
-        contains:[:aMethod | aMethod isWrapped and:[aMethod isBreakpointed not] ]
+    ^ self hasAnyMethodSelectedForWhich:[:m | m isWrapped and:[m isBreakpointed not] ]
+
+    "Modified: / 28-02-2012 / 16:23:22 / cg"
 !
 
 hasMethodWithTracePointSelectedHolder
@@ -19957,8 +20032,9 @@
 !
 
 hasMethodWithWrapSelected
-    ^ self selectedMethods value ? #()
-        contains:[:aMethod | aMethod isWrapped ]
+    ^ self hasAnyMethodSelectedForWhich:[:m | m isWrapped ]
+
+    "Modified: / 28-02-2012 / 16:23:39 / cg"
 !
 
 hasMethodWithWrapSelectedHolder
@@ -19966,8 +20042,9 @@
 !
 
 hasMethodWithoutBreakPointSelected
-    ^ self selectedMethods value ? #()
-        contains:[:aMethod | aMethod isBreakpointed not ]
+    ^ self hasAnyMethodSelectedForWhich:[:m | m isBreakpointed not ]
+
+    "Modified: / 28-02-2012 / 16:23:53 / cg"
 !
 
 hasMethodWithoutBreakPointSelectedHolder
@@ -19989,7 +20066,9 @@
 !
 
 hasMultipleClassesSelected
-    ^ self selectedClasses value size > 1
+    ^ self selectedClassesValue size > 1
+
+    "Modified: / 28-02-2012 / 16:58:02 / cg"
 !
 
 hasMultipleClassesSelectedHolder
@@ -19999,7 +20078,9 @@
 !
 
 hasMultipleMethodsSelected
-    ^ self selectedMethods value size > 1
+    ^ self selectedMethodsValue size > 1
+
+    "Modified: / 28-02-2012 / 16:24:51 / cg"
 !
 
 hasMultipleMethodsSelectedHolder
@@ -20009,7 +20090,9 @@
 !
 
 hasMultipleSelectorsSelected
-    ^ (self selectedMethods value collect:[:eachMethod | eachMethod selector]) size > 1
+    ^ (self selectedMethodsValue collect:[:eachMethod | eachMethod selector]) size > 1
+
+    "Modified: / 28-02-2012 / 16:24:58 / cg"
 !
 
 hasMultipleSelectorsSelectedHolder
@@ -20110,14 +20193,9 @@
 !
 
 hasNonPrivateClassSelected
-    |classes|
-
-    (classes := self selectedClasses value) size > 0 ifTrue:[
-        ^ classes contains:[:aClass | aClass owningClass isNil]
-    ].
-    ^ false
-
-    "Created: / 11.2.2000 / 11:07:54 / cg"
+    ^ self hasAnyClassSelectedForWhich:[:aClass | aClass owningClass isNil]
+
+    "Created: / 11-02-2000 / 11:07:54 / cg"
 !
 
 hasNonPrivateClassSelectedAndSourceCodeManagerHolder
@@ -20198,6 +20276,15 @@
     ^ [ self hasOOMPackageLoaded ]
 !
 
+hasOnlyMethodsSelectedForWhich:aBlock
+    |sel|
+
+    sel := self selectedMethodsValue.
+    ^ (sel size > 0) and:[ sel conform:aBlock ]
+
+    "Created: / 28-02-2012 / 16:26:17 / cg"
+!
+
 hasOnlyMethodsWithBreakPointSelected
         |anyBreak anyWrap|
 
@@ -20277,7 +20364,7 @@
 !
 
 hasProjectDefinitionWithAnyUnloadedClassSelected
-    ((self selectedClasses value) ? #()) do:[:cls |
+    (self selectedClassesValue) do:[:cls |
         cls isLoaded ifFalse:[^ true].
         cls isProjectDefinition ifTrue:[
             cls hasAllExtensionsLoaded ifFalse:[^ true].
@@ -20287,7 +20374,7 @@
     ^ true
 
     "Created: / 17-08-2006 / 00:49:24 / cg"
-    "Modified: / 12-10-2006 / 21:51:16 / cg"
+    "Modified: / 28-02-2012 / 16:58:59 / cg"
 !
 
 hasProjectDefinitionWithAnyUnloadedClassSelectedHolder
@@ -20374,14 +20461,16 @@
 !
 
 hasRealExtensionMethodSelected
-    ^ self selectedMethods value ? #()
-        contains:[:aMethod | |mPackage|
+    ^ self hasAnyMethodSelectedForWhich:[:aMethod | 
+                    |mPackage|
+
                     mPackage := aMethod package.
                     aMethod containingClass notNil
                     and:[mPackage ~= aMethod containingClass package
-                    and:[mPackage ~= PackageId noProjectID]] ]
-
-    "Modified: / 12-10-2006 / 20:51:30 / cg"
+                    and:[mPackage ~= PackageId noProjectID]] 
+                ]
+
+    "Modified: / 28-02-2012 / 16:24:22 / cg"
 !
 
 hasRealExtensionMethodSelectedHolder
@@ -20461,15 +20550,13 @@
 !
 
 hasSharedPoolClassSelected
-    ^ self hasClassSelected
-      and:[self selectedClasses value
-                contains:[:cls |    
+    ^ self hasAnyClassSelectedForWhich:[:cls |    
                         cls isLoaded  
                         and:[(cls theNonMetaclass askFor:#isAbstract) not
-                        and:[ cls inheritsFrom:SharedPool ]]] ]
+                        and:[ cls inheritsFrom:SharedPool ]]]
 
     "Created: / 25-10-2006 / 09:23:07 / cg"
-    "Modified: / 29-06-2011 / 21:03:43 / cg"
+    "Modified: / 28-02-2012 / 16:59:17 / cg"
 !
 
 hasSharedPoolClassSelectedHolder
@@ -20553,10 +20640,10 @@
 !
 
 hasSingleClassSelected
-    ^ self selectedClasses value size == 1
-
-    "Created: / 4.2.2000 / 22:03:24 / cg"
-    "Modified: / 6.2.2000 / 01:12:45 / cg"
+    ^ self selectedClassesValue size == 1
+
+    "Created: / 04-02-2000 / 22:03:24 / cg"
+    "Modified: / 28-02-2012 / 16:59:22 / cg"
 !
 
 hasSingleClassSelectedAndCanUseRefactoringSupportHolder
@@ -20645,10 +20732,10 @@
 !
 
 hasSingleMethodSelected
-    ^ self selectedMethods value size == 1
-
-    "Created: / 4.2.2000 / 22:10:05 / cg"
-    "Modified: / 5.2.2000 / 23:06:51 / cg"
+    ^ self selectedMethodsValue size == 1
+
+    "Created: / 04-02-2000 / 22:10:05 / cg"
+    "Modified: / 28-02-2012 / 16:25:03 / cg"
 !
 
 hasSingleMethodSelectedAndCanUseRefactoringSupportHolder
@@ -20942,8 +21029,7 @@
 !
 
 hasUnassignedExtensionMethodSelected
-    ^ self selectedMethods value ? #()
-        contains:[:aMethod |
+    ^ self hasAnyMethodSelectedForWhich:[:aMethod |
                     |mPackage mClass|
 
                     mPackage := aMethod package.
@@ -20953,7 +21039,7 @@
                         and:[mPackage = PackageId noProjectID]]
         ]
 
-    "Modified: / 12-10-2006 / 20:51:23 / cg"
+    "Modified: / 28-02-2012 / 16:24:32 / cg"
 !
 
 hasUnassignedExtensionMethodSelectedHolder
@@ -20992,12 +21078,13 @@
 
 hasUpdateMethodSelected
     ^ self hasMethodSelected
-      and:[self selectedMethods value
-               conform:[:eachMethod | #(
+      and:[self hasOnlyMethodsSelectedForWhich:[:eachMethod | #(
                                             #'update:'
                                             #'update:with:'
                                             #'update:with:from:'
                                        ) includes:eachMethod selector ]]
+
+    "Modified: / 28-02-2012 / 16:27:19 / cg"
 !
 
 hasUpdateMethodSelectedHolder
@@ -21092,9 +21179,9 @@
 
 isMethodListBrowserOrHasMultipleClassesSelectedHolder
     ^ [navigationState isMethodListBrowser
-        or:[self selectedClasses value size > 1] ]
-
-    "Created: / 4.2.2000 / 22:23:39 / cg"
+        or:[self selectedClassesValue size > 1] ]
+
+    "Created: / 04-02-2000 / 22:23:39 / cg"
 !
 
 isPlsqlMetaclassPresent
@@ -21228,7 +21315,6 @@
     ^ UserPreferences current useSearchBarInBrowser or:[self codeView searchBarActionBlock notNil]
 ! !
 
-
 !NewSystemBrowser methodsFor:'change & update'!
 
 categorySelectionChanged
@@ -21344,7 +21430,7 @@
     "/ dont update codeView, as long as no protocol is selected
     ((codeAspect := self codeAspect) == #repositoryLog
     or:[codeAspect == #repositoryHistory]) ifTrue:[
-        self selectedMethods value size == 0 ifTrue:[
+        self selectedMethodsValue size == 0 ifTrue:[
             ^ self
         ]
     ].
@@ -21363,7 +21449,7 @@
     ].
     methodInfoProcess := [ self asyncShowMethodInfo. methodInfoProcess := nil. ] fork.
 
-    "Modified: / 18.8.2000 / 19:23:55 / cg"
+    "Modified: / 28-02-2012 / 16:15:54 / cg"
 !
 
 delayedProtocolSelectionChanged
@@ -21431,7 +21517,7 @@
 
     "/ show method, or class definition
 
-    methods := self selectedMethods value.
+    methods := self selectedMethodsValue.
     methods size == 1 ifTrue:[
         mthd := methods first.
     ].
@@ -21461,9 +21547,11 @@
         (protocol isNil or:[protocol = BrowserList nameListEntryForALL]) ifTrue:[
             doShowMethodTemplate := false
         ] ifFalse:[
-            doShowMethodTemplate := self showMethodTemplate value
+            navigationState showMethodTemplate ifTrue:[
+                doShowMethodTemplate := self showMethodTemplate value
 "/                                    and:[ShowMethodTemplateWhenProtocolIsSelected == true
 "/                                         or:[ navigationState methodList size == 0 ]].
+            ]
         ].
         doShowMethodTemplate ifTrue:[
             methods size > 1 ifTrue:[
@@ -21550,7 +21638,7 @@
     self updateProtocolSelectionForChangedMethodSelection.
 
     "Created: / 29-08-2006 / 13:59:06 / cg"
-    "Modified: / 06-09-2006 / 16:37:56 / cg"
+    "Modified: / 28-02-2012 / 16:15:58 / cg"
 !
 
 delayedVariableSelectionChanged
@@ -21948,7 +22036,7 @@
                              or:[ something == #primitiveVariables ]]]]]].
 
         isForAspect ifTrue:[
-            ((self selectedClasses value ? #()) contains:[:cls | cls name = aParameter name]) ifTrue:[
+            ((self selectedClassesValue) contains:[:cls | cls name = aParameter name]) ifTrue:[
                 self enqueueDelayedUpdateCode.
             ]
         ].
@@ -21978,8 +22066,8 @@
 
     super update:something with:aParameter from:changedObject
 
-    "Modified: / 20-11-2006 / 12:29:59 / cg"
     "Modified: / 15-11-2011 / 23:10:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-02-2012 / 16:51:27 / cg"
 !
 
 updateBookmarkHolder
@@ -22243,7 +22331,7 @@
 browseImplementorsOfAny
     |selectors|
 
-    selectors := self selectedMethods value collect:[:each | each selector].
+    selectors := self selectedMethodsValue collect:[:each | each selector].
 
     ^ self
         askForMethodAndSpawnSearchTitle:'Browse Implementors of (any in selected):'
@@ -22265,6 +22353,8 @@
         withTextEntry:false
         withMethodList:false
         setSearchPattern:nil
+
+    "Modified: / 28-02-2012 / 16:14:55 / cg"
 !
 
 browseInheritanceOf
@@ -23313,9 +23403,7 @@
         whereDefault := SearchDialog lastStringSearchArea ? self defaultSearchArea.
 
         whereDefault == #classes ifTrue:[
-            ((self selectedMethods value ? #())
-            contains:[:anyMethod | anyMethod mclass notNil
-                                   and:[anyMethod mclass isPrivate]])
+            (self hasAnyMethodSelectedForWhich:[:m | m mclass notNil and:[m mclass isPrivate]])
             ifTrue:[
                 whereDefault := #ownersWithPrivateClasses
             ]
@@ -23335,7 +23423,7 @@
                             brwsr autoSearchPattern:string ignoreCase:ignoreCase.
                          ]
 
-    "Modified: / 22-12-2011 / 10:04:46 / cg"
+    "Modified: / 28-02-2012 / 16:40:11 / cg"
 !
 
 browseMenuMethodsWithStringInHelpSpec
@@ -23345,7 +23433,7 @@
 
     whereDefault := self defaultSearchArea.
     whereDefault == #classes ifTrue:[
-        ((self selectedMethods value ? #()) contains:[:anyMethod | anyMethod mclass isPrivate]) ifTrue:[
+        (self hasAnyMethodSelectedForWhich:[:m | m mclass isPrivate]) ifTrue:[
             whereDefault := #ownersWithPrivateClasses
         ]
     ].
@@ -23360,7 +23448,7 @@
                             brwsr autoSearchPattern:string ignoreCase:ignoreCase.
                          ]
 
-    "Modified: / 22-12-2011 / 10:04:52 / cg"
+    "Modified: / 28-02-2012 / 16:40:37 / cg"
 !
 
 browseMenuMethodsWithStringInMenuSpec
@@ -23370,7 +23458,7 @@
 
     whereDefault := self defaultSearchArea.
     whereDefault == #classes ifTrue:[
-        ((self selectedMethods value ? #()) contains:[:anyMethod | anyMethod mclass isPrivate]) ifTrue:[
+        (self hasAnyMethodSelectedForWhich:[:m | m mclass isPrivate]) ifTrue:[
             whereDefault := #ownersWithPrivateClasses
         ]
     ].
@@ -23385,7 +23473,7 @@
                             brwsr autoSearchPattern:string ignoreCase:ignoreCase.
                          ]
 
-    "Modified: / 22-12-2011 / 10:04:57 / cg"
+    "Modified: / 28-02-2012 / 16:40:54 / cg"
 !
 
 browseMenuMethodsWithStringLiteral
@@ -24134,7 +24222,7 @@
 browseSendersOfAny
     |selectors|
 
-    selectors := self selectedMethods value collect:[:each | each selector].
+    selectors := self selectedMethodsValue collect:[:each | each selector].
 
 false ifTrue:[
 self autoSearchSelector:selectors ignoreCase:false doMatch:true.
@@ -24157,7 +24245,7 @@
                             brwsr autoSearchSelector:selectors ignoreCase:ignoreCase doMatch:doMatch.
                          ]
 
-    "Modified: / 13.11.2001 / 11:18:02 / cg"
+    "Modified: / 28-02-2012 / 16:15:36 / cg"
 !
 
 defaultSearchArea
@@ -24431,6 +24519,14 @@
 !
 
 createBufferWithSpec:aSpec
+    ^ self createBufferWithSpec:aSpec setupFromCurrentState:true
+
+    "Modified: / 27-02-2008 / 08:43:21 / janfrog"
+    "Modified: / 02-06-2011 / 22:34:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-02-2012 / 10:21:42 / cg"
+!
+
+createBufferWithSpec:aSpec setupFromCurrentState:doSetup
     |nr bNameList oldNavigationState|
 
     bNameList := self bufferNameList.  "/ for lazy setup
@@ -24454,7 +24550,7 @@
 
     navigationState := NavigationState new.
     navigationState canvasType:aSpec.
-    self setupNavigationStateFrom:oldNavigationState.
+    doSetup ifTrue:[self setupNavigationStateFrom:oldNavigationState ].
 
     navigationState canvas:(self newCanvasWithSpec:aSpec).
 
@@ -24472,6 +24568,7 @@
     "Modified: / 29-02-2000 / 10:40:04 / cg"
     "Modified: / 27-02-2008 / 08:43:21 / janfrog"
     "Modified: / 02-06-2011 / 22:34:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 28-02-2012 / 10:21:08 / cg"
 !
 
 destroyTab:tabIndex
@@ -24485,13 +24582,14 @@
         brwsr := self class openInClass:aClass selector:selector
     ] ifFalse:[
         brwsr := self.
-        brwsr createBuffer.
+        "/ brwsr createBuffer.
+        brwsr createBufferWithSpec:#fullBrowserSpec setupFromCurrentState:false.
         brwsr selectedCategories value:nil. "/ kludge workaround; classList needs a change to update.
         brwsr switchToClass:aClass selector:selector.
     ].
     ^ brwsr
 
-    "Modified: / 09-10-2006 / 12:03:24 / cg"
+    "Modified: / 28-02-2012 / 10:22:24 / cg"
 ! !
 
 !NewSystemBrowser methodsFor:'menu actions-category'!
@@ -25034,14 +25132,15 @@
 !
 
 categoryMenuRewrite
-
     | classes |
-    classes := self selectedClassesInCategories: self selectedCategories value.
+
+    classes := self selectedClassesInCategories: self selectedCategoriesValue.
     MethodRewriter new
         classes: classes;
         open
 
     "Created: / 21-07-2007 / 07:06:53 / janfrog"
+    "Modified: / 28-02-2012 / 17:01:34 / cg"
 !
 
 categoryMenuSpawnBrowser
@@ -25228,9 +25327,9 @@
     ].
 
     categoryList := categories copy.
-    selectedClasses := self selectedClasses value copy.
+    selectedClasses := self selectedClassesValue copy.
     selectedProtocols := self selectedProtocols value copy.
-    selectedMethods := self selectedMethods value copy.
+    selectedMethods := self selectedMethodsValue copy.
 
     self
         newBrowserOrBufferDependingOn:where
@@ -25257,7 +25356,7 @@
             brwsr immediateUpdate value:false.
         ]
 
-    "Modified: / 13-10-2006 / 11:55:53 / cg"
+    "Modified: / 28-02-2012 / 16:52:32 / cg"
 !
 
 spawnCategoryBrowserIn:where
@@ -25271,31 +25370,46 @@
 !NewSystemBrowser methodsFor:'menu actions-checks'!
 
 classMenuCheck
-    "perform all checks on the selected class(es)."
+    "perform a bunch of checks on the selected class(es).
+     This uses the old (more or less to be obsoleted) classChecker,
+     not the new SmallLint tool."
 
     self classMenuCheck:#allChecks
+
+    "Modified (comment): / 01-03-2012 / 14:10:06 / cg"
 !
 
 classMenuCheck:whichCheck
-    "perform an individual check on the selected class(es)."
+    "perform an individual check on the selected class(es).
+     This uses the old (more or less to be obsoleted) classChecker,
+     not the new SmallLint tool."
 
     self classMenuCheckEach:(Array with:whichCheck)
 
-    "Modified: / 18.8.2000 / 22:44:19 / cg"
+    "Modified: / 18-08-2000 / 22:44:19 / cg"
+    "Modified (comment): / 01-03-2012 / 14:10:14 / cg"
 !
 
 classMenuCheckAll
-    "perform all checks on the selected class(es)."
+    "perform all checks on the selected class(es).
+     This uses the old (more or less to be obsoleted) classChecker,
+     not the new SmallLint tool."
 
     self classMenuCheck:#allChecks
+
+    "Modified (comment): / 01-03-2012 / 14:10:19 / cg"
 !
 
 classMenuCheckEach:aCollectionOfCheckSymbols
-    "perform a bunch of checks on the selected class(es)."
+    "perform a bunch of checks on the selected class(es).
+     This uses the old (more or less to be obsoleted) classChecker,
+     not the new SmallLint tool."
 
     |classes theSingleClass lbl badMethodsGenerator badMethodInfoHolder badClassInfoHolder|
 
-    classes := self selectedClasses value ? #().
+    classes := self selectedClassesValue.
+    classes isEmptyOrNil ifTrue:[^ self].
+
     (theSingleClass := self theSingleSelectedClass) notNil ifTrue:[
         lbl := 'Check results of ' , theSingleClass name
     ] ifFalse:[
@@ -25354,17 +25468,24 @@
         sortBy:#class
 
     "Created: / 18-08-2000 / 22:43:56 / cg"
-    "Modified: / 18-05-2010 / 15:13:52 / cg"
+    "Modified: / 28-02-2012 / 16:45:37 / cg"
+    "Modified (comment): / 01-03-2012 / 14:09:59 / cg"
 !
 
 classMenuCheckErrors
-    "perform error-checks on the selected class(es)."
+    "perform error-checks on the selected class(es).
+     This uses the old (more or less to be obsoleted) classChecker,
+     not the new SmallLint tool."
 
     self classMenuCheck:#errorChecks
+
+    "Modified (comment): / 01-03-2012 / 14:10:26 / cg"
 !
 
 classMenuCheckIndividual
-    "allow individual checks to be selected and perform those on the selected class(es)."
+    "allow individual checks to be selected and perform those on the selected class(es).
+     This uses the old (more or less to be obsoleted) classChecker,
+     not the new SmallLint tool."
 
     |allChecks selectedChecks|
 
@@ -25383,19 +25504,86 @@
     LastIndividualChecks := selectedChecks.
     self classMenuCheckEach:selectedChecks.
 
-    "Modified: / 18.8.2000 / 22:44:36 / cg"
+    "Modified: / 18-08-2000 / 22:44:36 / cg"
+    "Modified (comment): / 01-03-2012 / 14:10:31 / cg"
 !
 
 classMenuCheckStyle
-    "perform style-checks on the selected class(es)."
+    "perform style-checks on the selected class(es).
+     This uses the old (more or less to be obsoleted) classChecker,
+     not the new SmallLint tool."
 
     self classMenuCheck:#styleChecks
+
+    "Modified (comment): / 01-03-2012 / 14:10:36 / cg"
 !
 
 classMenuCheckWarnings
-    "perform warning-checks on the selected class(es)."
+    "perform warning-checks on the selected class(es).
+     This uses the old (more or less to be obsoleted) classChecker,
+     not the new SmallLint tool."
 
     self classMenuCheck:#warningChecks
+
+    "Modified (comment): / 01-03-2012 / 14:10:43 / cg"
+! !
+
+!NewSystemBrowser methodsFor:'menu actions-checks-lint'!
+
+runLintOnAllRules
+    "run the new smallLint checker tool on all rules"
+
+    self 
+        smalllintCheck: self selectedCodeComponentsAsEnvironment 
+        against: #smalllintRulesAll
+
+    "Created: / 07-03-2012 / 17:40:07 / cg"
+!
+
+runLintOnPreviousRules
+    "run the new smallLint checker tool"
+
+    self 
+        smalllintCheck: self selectedCodeComponentsAsEnvironment 
+        against: #smalllintRules
+
+    "Modified: / 17-04-2010 / 10:44:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 01-03-2012 / 14:10:47 / cg"
+    "Created: / 07-03-2012 / 17:39:28 / cg"
+!
+
+runLintOnSelectedRules
+    "run the new smallLint checker tool on selected rules"
+
+    self 
+        smalllintCheck: self selectedCodeComponentsAsEnvironment 
+        against: #smalllintRulesFromUser
+
+    "Created: / 07-03-2012 / 17:40:23 / cg"
+!
+
+smalllintRules
+
+   ^LastLintRules 
+        ifNil:[self smalllintRulesFromUser]
+        ifNotNil:[LastLintRules]
+
+
+    "
+        Tools::NewSystemBrowser basicNew smalllintRules
+    "
+
+    "Modified: / 17-04-2010 / 09:42:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+smalllintRulesOrAllHolder
+    "Returns a holder on user-selected SmallLint rules
+     (or all rules if user made no selection"
+
+    ^[ self smalllintRulesOrAll ]
+
+    "Modified: / 17-04-2010 / 09:42:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 23-01-2012 / 11:05:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !NewSystemBrowser methodsFor:'menu actions-class'!
@@ -25683,7 +25871,7 @@
 
     list := supers.
 
-    self selectedClasses value size > 1 ifTrue:[
+    self selectedClassesValue size > 1 ifTrue:[
         reqString := 'Generate isXXX methods in which superclass ?'.
         title := 'Generate isXXX methods'.
     ] ifFalse:[
@@ -25712,7 +25900,7 @@
     LastMethodMoveOrCopyTargetClass := newClass theNonMetaclass name.
     ^ newClass.
 
-    "Modified: / 22.12.2001 / 03:04:48 / cg"
+    "Modified: / 28-02-2012 / 16:45:08 / cg"
 !
 
 checkCompilabilityOf:aClass errorsOnly:errorsOnly outputTo:outStream
@@ -25864,13 +26052,15 @@
     classList := self classListGenerator value.
     self assert:classList isOrderedCollection.
 
-    classesToHide := self selectedClasses value copy.
+    classesToHide := self selectedClassesValue copy.
     classesToHide do:[:classToHide |
         classList removeIdentical:classToHide
     ].
     classList sort:[:a :b | a name < b name].
 
     self classListGenerator changed.
+
+    "Modified: / 28-02-2012 / 16:45:26 / cg"
 !
 
 classMenuChangeAspect:aspect
@@ -26152,12 +26342,12 @@
 classMenuExcludeFromProject
     |projectDefinitionClasses|
 
-    projectDefinitionClasses := (self selectedClasses value collect:[:cls | cls projectDefinitionClass]) asSet.
+    projectDefinitionClasses := (self selectedClassesValue collect:[:cls | cls projectDefinitionClass]) asSet.
 
     projectDefinitionClasses do:[:eachDefinitionClass |
         |toExcludeForThis|
 
-        toExcludeForThis := self selectedClasses value select:[:cls | cls projectDefinitionClass == eachDefinitionClass].
+        toExcludeForThis := self selectedClassesValue select:[:cls | cls projectDefinitionClass == eachDefinitionClass].
 
         self
             generateUndoableChange:(resources string:'Exclude %1 class(es) from Project %2' with:toExcludeForThis size with:eachDefinitionClass name)
@@ -26168,7 +26358,7 @@
     ].
 
     "Created: / 19-02-2007 / 17:29:12 / cg"
-    "Modified: / 26-01-2012 / 14:05:59 / cg"
+    "Modified: / 28-02-2012 / 16:46:23 / cg"
 !
 
 classMenuFileOutAs
@@ -26202,7 +26392,7 @@
                self
                    fileOutClass:cls
                    askForFile:true
-                   withCancelAll:(self selectedClasses value size > 1)
+                   withCancelAll:(self selectedClassesValue size > 1)
                    format:aFormatSymbolOrNil
                    sourceMode:mode.
             ]
@@ -26214,12 +26404,14 @@
         ifPrivate:
             [:cls | |owner|
                 owner := cls owningClass.
-                (self selectedClasses value includes:owner) ifFalse:[
+                (self selectedClassesValue includes:owner) ifFalse:[
                     self warn:'Cannot fileOut private class: %1\\Please fileOut the owning class (%2).'
                         with:cls nameWithoutPrefix allBold
                         with:owner name.
                 ]
             ]
+
+    "Modified: / 28-02-2012 / 16:46:20 / cg"
 !
 
 classMenuFileOutBinaryAs
@@ -26428,9 +26620,9 @@
 classMenuGenerateApplicationCode
     "create application code methods"
 
-    self classMenuGenerateApplicationCodeForClasses:(self selectedClasses value ? #())
-
-    "Modified: / 21-01-2012 / 11:10:11 / cg"
+    self classMenuGenerateApplicationCodeForClasses:(self selectedClassesValue)
+
+    "Modified: / 28-02-2012 / 16:46:34 / cg"
 !
 
 classMenuGenerateApplicationCodeFor:cls using:generator
@@ -26712,7 +26904,9 @@
 !
 
 classMenuGenerateProjectDefinitions
-    self generateProjectDefinitionsIn:(self selectedClasses value ? #())
+    self generateProjectDefinitionsIn:(self selectedClassesValue)
+
+    "Modified: / 28-02-2012 / 16:46:49 / cg"
 !
 
 classMenuGenerateRedefinedInstanceCreationMethods
@@ -26884,12 +27078,12 @@
 
     |projectDefinitionClasses|
 
-    projectDefinitionClasses := (self selectedClasses value collect:[:cls | cls projectDefinitionClass]) asSet.
+    projectDefinitionClasses := (self selectedClassesValue collect:[:cls | cls projectDefinitionClass]) asSet.
 
     projectDefinitionClasses do:[:eachDefinitionClass |
         |toIncludeForThis|
 
-        toIncludeForThis := self selectedClasses value select:[:cls | cls projectDefinitionClass == eachDefinitionClass].
+        toIncludeForThis := self selectedClassesValue select:[:cls | cls projectDefinitionClass == eachDefinitionClass].
 
         self
             generateUndoableChange:(resources string:'Include %1 class(es) in Project %2 (Make Compiled Class)' with:toIncludeForThis size with:eachDefinitionClass name)
@@ -26900,7 +27094,7 @@
     ].
 
     "Created: / 19-02-2007 / 16:46:16 / cg"
-    "Modified: / 26-01-2012 / 14:05:25 / cg"
+    "Modified: / 28-02-2012 / 16:47:12 / cg"
 !
 
 classMenuInitialize
@@ -26920,7 +27114,7 @@
 
     |selectedClasses superClasses superClass name existingClass|
 
-    selectedClasses := self selectedClasses value.
+    selectedClasses := self selectedClassesValue.
     selectedClasses do:[:each | each autoload].
 
     superClasses := selectedClasses collect:[:c | c superclass].
@@ -26953,6 +27147,8 @@
     self switchToClassNamed:name.
 "/            meta: self isMeta
 "/            categories: self categories
+
+    "Modified: / 28-02-2012 / 16:47:15 / cg"
 !
 
 classMenuInspectClass
@@ -27089,21 +27285,21 @@
     "fileOut selected classes (chunk format) and eMail to someone"
 
     self
-        mailClasses:self selectedClasses value
+        mailClasses:self selectedClassesValue
         subject:'Class Source from Browser'
 
-    "Modified: / 20-09-2007 / 15:03:32 / cg"
+    "Modified: / 28-02-2012 / 16:47:18 / cg"
 !
 
 classMenuMakeAutoloadedInProject
     |projectDefinitionClasses|
 
-    projectDefinitionClasses := (self selectedClasses value collect:[:cls | cls theNonMetaclass projectDefinitionClass]) asSet.
+    projectDefinitionClasses := (self selectedClassesValue collect:[:cls | cls theNonMetaclass projectDefinitionClass]) asSet.
 
     projectDefinitionClasses do:[:eachDefinitionClass |
         |toMakeAutoloadedForThis|
 
-        toMakeAutoloadedForThis := self selectedClasses value select:[:cls | cls theNonMetaclass projectDefinitionClass == eachDefinitionClass].
+        toMakeAutoloadedForThis := self selectedClassesValue select:[:cls | cls theNonMetaclass projectDefinitionClass == eachDefinitionClass].
         self
             generateUndoableChange:(resources string:'Make %1 class(es) autoloaded in %2' with:toMakeAutoloadedForThis size with:eachDefinitionClass name)
             overClasses:(Array with: eachDefinitionClass)
@@ -27122,7 +27318,7 @@
 
     currentClass := self theSingleSelectedClass.
     currentClass isNil ifTrue:[
-        currentClass := self selectedClasses value first
+        currentClass := self selectedClassesValue first
     ].
     currentClass := currentClass theNonMetaclass.
     supers := (currentClass allSuperclasses reverse collect:[:cls | cls name]).
@@ -27180,7 +27376,7 @@
         eachClass theMetaclass setOwningClass:newOwner.
     ].
 
-    "Modified: / 12-09-2006 / 13:50:04 / cg"
+    "Modified: / 28-02-2012 / 16:47:28 / cg"
 !
 
 classMenuMakePublic
@@ -27363,7 +27559,7 @@
 
     |newProject packages msg|
 
-    packages := self selectedClasses value collect:[:each | each package].
+    packages := self selectedClassesValue collect:[:each | each package].
     packages size == 1 ifTrue:[
         msg := resources string:'Move class(es) from ''%1'' to which project:'
                            with:packages first allBold.
@@ -27377,8 +27573,8 @@
         ]
     ].
 
-    "Created: / 17.2.2000 / 22:50:07 / cg"
-    "Modified: / 17.2.2000 / 23:03:01 / cg"
+    "Created: / 17-02-2000 / 22:50:07 / cg"
+    "Modified: / 28-02-2012 / 16:47:31 / cg"
 !
 
 classMenuNewApplication
@@ -27814,7 +28010,7 @@
 !
 
 classMenuRegenerateProjectContentsDefinitions
-    self updateProjectContentsDefinitionsIn:(self selectedClasses value ? #()) regenerate:true
+    self updateProjectContentsDefinitionsIn:(self selectedClassesValue) regenerate:true
 
     "Created: / 12-10-2006 / 16:53:30 / cg"
 !
@@ -27845,8 +28041,8 @@
     |offerCancel offerYesToAll classesToRemove|
 
     classesToRemove := OrderedCollection new.
-    offerCancel := self selectedClasses value size > 1.
-    offerYesToAll := self selectedClasses value size > 1.
+    offerCancel := self selectedClassesValue size > 1.
+    offerYesToAll := self selectedClassesValue size > 1.
 
     YesToAllConfirmation handleConfirmationIn:[
         self
@@ -27923,7 +28119,7 @@
         ].
     ]
 
-    "Modified: / 04-09-2006 / 11:22:02 / cg"
+    "Modified: / 28-02-2012 / 16:47:47 / cg"
 !
 
 classMenuRename
@@ -28129,7 +28325,7 @@
 
 classMenuRewrite
     MethodRewriter new
-        classes: self selectedClasses value;
+        classes: self selectedClassesValue;
         open
 
     "Created: / 05-07-2011 / 14:48:32 / cg"
@@ -28178,53 +28374,73 @@
 classMenuSpawnBufferWithClassOrSubclassReferences
     "add a buffer showing references to any of the selected classes or any of its subclasses"
 
-    self spawnClassOrSubclassReferencesBrowserFor:(self selectedClasses value) in:#newBuffer
+    self spawnClassOrSubclassReferencesBrowserFor:(self selectedClassesValue) in:#newBuffer
+
+    "Modified: / 28-02-2012 / 16:48:06 / cg"
 !
 
 classMenuSpawnBufferWithClassProjects
     "add a new buffer showing the selected classes projects"
 
-    self spawnClassProjectsBrowserFor:(self selectedClasses value) in:#newBuffer
-
-    "Created: / 18.8.2000 / 19:12:33 / cg"
+    self spawnClassProjectsBrowserFor:(self selectedClassesValue) in:#newBuffer
+
+    "Created: / 18-08-2000 / 19:12:33 / cg"
 !
 
 classMenuSpawnBufferWithClassReferences
     "add a buffer showing references to any of the selected classes"
 
-    self spawnClassReferencesBrowserFor:(self selectedClasses value) in:#newBuffer
+    self spawnClassReferencesBrowserFor:(self selectedClassesValue) in:#newBuffer
+
+    "Modified: / 28-02-2012 / 16:48:11 / cg"
+!
+
+classMenuSpawnBufferWithCommonSuperclass
+    "open a new browser showing the selected classes' common superclass"
+
+    self spawnWithCommonSuperclassIn:#newBuffer
+
+    "Created: / 28-02-2012 / 08:58:56 / cg"
 !
 
 classMenuSpawnClass
     "open a new browser showing the selected classes only"
 
-    self spawnClassBrowserFor:(self selectedClasses value) in:#newBrowser
+    self spawnClassBrowserFor:(self selectedClassesValue) in:#newBrowser
+
+    "Modified: / 28-02-2012 / 16:48:14 / cg"
 !
 
 classMenuSpawnClassBuffer
     "add a buffer showing the selected classes only"
 
-    self spawnClassBrowserFor:(self selectedClasses value) in:#newBuffer
+    self spawnClassBrowserFor:(self selectedClassesValue) in:#newBuffer
+
+    "Modified: / 28-02-2012 / 16:48:16 / cg"
 !
 
 classMenuSpawnClassOrSubclassReferences
     "open a new browser showing references to the selected classes or any of its subclass"
 
-    self spawnClassOrSubclassReferencesBrowserFor:(self selectedClasses value) in:#newBrowser
+    self spawnClassOrSubclassReferencesBrowserFor:(self selectedClassesValue) in:#newBrowser
+
+    "Modified: / 28-02-2012 / 16:48:20 / cg"
 !
 
 classMenuSpawnClassProjects
     "open a new browser showing the selected classes projects"
 
-    self spawnClassProjectsBrowserFor:(self selectedClasses value) in:#newBrowser
-
-    "Created: / 18.8.2000 / 19:12:14 / cg"
+    self spawnClassProjectsBrowserFor:(self selectedClassesValue) in:#newBrowser
+
+    "Created: / 18-08-2000 / 19:12:14 / cg"
 !
 
 classMenuSpawnClassReferences
     "open a new browser showing references to the selected classes "
 
-    self spawnClassReferencesBrowserFor:(self selectedClasses value) in:#newBrowser
+    self spawnClassReferencesBrowserFor:(self selectedClassesValue) in:#newBrowser
+
+    "Modified: / 28-02-2012 / 16:48:26 / cg"
 !
 
 classMenuSpawnWithAllSubclasses
@@ -28239,12 +28455,20 @@
     self spawnWithAllSuperclassesIn:#newBrowser
 !
 
+classMenuSpawnWithCommonSuperclass
+    "open a new browser showing the selected classes' common superclass"
+
+    self spawnWithCommonSuperclassIn:#newBrowser
+
+    "Created: / 28-02-2012 / 08:58:10 / cg"
+!
+
 classMenuUpdate
     self classListApp forceUpdateList
 !
 
 classMenuUpdateProjectContentsDefinitions
-    self updateProjectContentsDefinitionsIn:(self selectedClasses value ? #()) regenerate:false
+    self updateProjectContentsDefinitionsIn:(self selectedClassesValue) regenerate:false
 
     "Created: / 10-10-2006 / 20:50:23 / cg"
 !
@@ -28892,7 +29116,7 @@
 
     self
         generateUndoableChange:nameOfOperation
-        overClasses:(self selectedClasses value ? #())
+        overClasses:(self selectedClassesValue)
         via:aBlock
 
     "Created: / 21-01-2012 / 10:22:19 / cg"
@@ -28903,8 +29127,10 @@
 
     self
         generateUndoableChange:nameOfOperation
-        overClasses:(self selectedClasses value ? #())
+        overClasses:(self selectedClassesValue)
         via:aBlock
+
+    "Modified: / 28-02-2012 / 16:49:22 / cg"
 !
 
 generateUndoableChangeOverSelectedMethods:nameOfOperation via:aBlock
@@ -28912,7 +29138,7 @@
 
     |selMethods generator count dict method methodName languageOfFirstMethod|
 
-    selMethods := self selectedMethods value.
+    selMethods := self selectedMethodsValue.
 
     languageOfFirstMethod := selMethods first mclass programmingLanguage.
     (selMethods conform:[:mthd | (mthd mclass programmingLanguage) = languageOfFirstMethod]) ifFalse:[
@@ -28939,7 +29165,7 @@
         dict at:#sForPlural put:'s'.
         dict at:#singleMethodNameOrNumberOfMethods put:(count printString allBold , ' methods').
     ] ifFalse:[
-        method := self selectedMethods value first.
+        method := self selectedMethodsValue first.
         methodName := method mclass nameWithoutPrefix , '>>' , method selector allBold.
         dict at:#numMethodsOrEmpty put:' '.
         dict at:#inSingleMethodOrEmpty put:' in ' , methodName.
@@ -28951,7 +29177,7 @@
     generator executeCollectedChangesNamed:(nameOfOperation expandPlaceholdersWith:dict)
 
     "Modified: / 06-12-2011 / 15:27:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 21-12-2011 / 15:46:19 / cg"
+    "Modified: / 28-02-2012 / 16:16:27 / cg"
 !
 
 launchSelectedApplication
@@ -29032,14 +29258,18 @@
 moveSelectedClassesToCategory:newCategory
     "change the class-category of the selected classes"
 
-    self moveClasses:(self selectedClasses value) toCategory:newCategory
+    self moveClasses:(self selectedClassesValue) toCategory:newCategory
+
+    "Modified: / 28-02-2012 / 16:59:32 / cg"
 !
 
 moveSelectedClassesToProject:newProject
     "change the packageID of the selected classes
      (and optionally the packageID of any methods (if they are from different packages)"
 
-    self moveClasses:(self selectedClasses value) toProject:newProject
+    self moveClasses:(self selectedClassesValue) toProject:newProject
+
+    "Modified: / 28-02-2012 / 16:59:35 / cg"
 !
 
 openClassDocumentationFor:aClass
@@ -29284,7 +29514,7 @@
         selectedClasses := classes copy.
         navigationState notNil ifTrue:[
             selectedProtocols := self selectedProtocols value copy.
-            selectedMethods := self selectedMethods value copy.
+            selectedMethods := self selectedMethodsValue copy.
             (selectedMethods size > 0
             and:[ selectedProtocols size == 0 ]) ifTrue:[
                 selectedProtocols := (selectedMethods collect:[:each | each category]) asSet asOrderedCollection
@@ -29313,7 +29543,7 @@
             brwsr meta onChangeEvaluate:[ brwsr classListGenerator changed ].
         ]
 
-    "Modified: / 26-10-2011 / 18:49:25 / cg"
+    "Modified: / 28-02-2012 / 16:30:36 / cg"
 !
 
 spawnClassBrowserForSearch:searchBlock sortBy:sortByWhat in:openHow label:lbl
@@ -29650,29 +29880,31 @@
 !
 
 spawnSingleClassBrowserFor:classes in:where
-    "browse selected class(es);
+    "browse selected class(es) in a single class (classlist) browser
         where is: #newBrowser - open a new browser showing the classes
         where is: #newBuffer  - add a new buffer showing the classes"
 
     ^ self spawnSingleClassBrowserFor:classes label:nil in:where
 
     "Created: / 22-07-2011 / 18:41:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 28-02-2012 / 09:22:57 / cg"
 !
 
 spawnSingleClassBrowserFor:class label:titleOrNil in:where
-    "browse selected class(es);
+    "browse selected class(es) in a single class (classlist) browser
         where is: #newBrowser - open a new browser showing the classes
         where is: #newBuffer  - add a new buffer showing the classes"
 
     ^ self spawnSingleClassBrowserFor:class label:titleOrNil in:where select:true
 
     "Created: / 22-07-2011 / 18:42:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 28-02-2012 / 09:23:05 / cg"
 !
 
 spawnSingleClassBrowserFor:class label:labelOrNil in:where select:doSelectIn
     "browse selected class(es);
-        where is: #newBrowser - open a new browser showing the classes
-        where is: #newBuffer  - add a new buffer showing the classes"
+        where is: #newBrowser - open a new browser showing the class
+        where is: #newBuffer  - add a new buffer showing the class"
 
     |spec meta allClasses selectedClasses selectedProtocols selectedMethods singleClass doSelect|
 
@@ -29689,7 +29921,7 @@
         selectedClasses := Array with: singleClass.
         navigationState notNil ifTrue:[
             selectedProtocols := self selectedProtocols value copy.
-            selectedMethods := self selectedMethods value copy.
+            selectedMethods := self selectedMethodsValue copy.
             (selectedMethods size > 0
             and:[ selectedProtocols size == 0 ]) ifTrue:[
                 selectedProtocols := (selectedMethods collect:[:each | each category]) asSet asOrderedCollection
@@ -29719,6 +29951,7 @@
         ]
 
     "Created: / 22-07-2011 / 18:37:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-02-2012 / 16:36:30 / cg"
 !
 
 spawnWithAllSubclassesIn:how
@@ -29737,13 +29970,13 @@
         ]
     ].
 
-    (all removeAllFoundIn:self selectedClasses value; yourself) isEmpty ifTrue:[
+    (all removeAllFoundIn:self selectedClassesValue; yourself) isEmpty ifTrue:[
         self information:'No additional subclasses (same as selected).'.
         ^ self
     ].
     brwsr := self spawnMultipleClassBrowserFor:allOrdered sortBy:#doNotSort in:how.
 
-    "Modified: / 12-09-2006 / 13:43:19 / cg"
+    "Modified: / 28-02-2012 / 16:53:07 / cg"
 !
 
 spawnWithAllSuperclassesIn:how
@@ -29761,13 +29994,33 @@
             ]
         ]
     ].
-    (all removeAllFoundIn:(self selectedClasses value); yourself) isEmpty ifTrue:[
+    (all removeAllFoundIn:(self selectedClassesValue); yourself) isEmpty ifTrue:[
         self information:'No additional superclasses (same as selected).'.
         ^ self
     ].
     brwsr := self spawnMultipleClassBrowserFor:allOrdered sortBy:#doNotSort in:how.
 
-    "Modified: / 12-09-2006 / 13:43:11 / cg"
+    "Modified: / 28-02-2012 / 16:53:10 / cg"
+!
+
+spawnWithCommonSuperclassIn:how
+    "open a new browser showing the selected classes' common superclass"
+
+    ^ self spawnWithCommonSuperclassOf:(self selectedNonMetaclasses) in:how
+
+    "Created: / 28-02-2012 / 09:02:42 / cg"
+!
+
+spawnWithCommonSuperclassOf:classes in:how
+    "open a new browser showing the classes' common superclass"
+
+    |common|
+
+    common := Behavior commonSuperclassOf:classes.
+    "/ self spawnClassBrowserFor:{ common } label:'Common superclass' in:how.
+    self spawnFullBrowserInClass:common selector:nil in:how
+
+    "Created: / 28-02-2012 / 09:07:39 / cg"
 !
 
 variablesMenuGenerateMultiSetterMethod
@@ -30196,7 +30449,7 @@
 
                     owner := cls topOwningClass.
                     (alreadyCheckedOut includes:owner) ifFalse:[
-                        (self selectedClasses value includes:owner) ifFalse:[
+                        ((self selectedClassesValue ? #()) includes:owner) ifFalse:[
                             answer := Dialog
                                         confirmWithCancel:(resources string:'Cannot checkOut private class: %1\\Shall the owner ''%2'' be checked out ?'
                                                                           with:cls nameWithoutPrefix allBold
@@ -30320,7 +30573,7 @@
 
     ^ self
         classMenuCheckIn:doCheck
-        classes:(self selectedClasses value)
+        classes:(self selectedClassesValue)
         usingManager:aManagerOrNil
 
     "Created: / 21-12-2011 / 18:21:30 / cg"
@@ -30462,7 +30715,9 @@
      or merge-in the repository version.
      "
 
-    self checkOutClasses:(self selectedClasses value) askForRevision:true
+    self checkOutClasses:(self selectedClassesValue) askForRevision:true
+
+    "Modified: / 28-02-2012 / 16:45:43 / cg"
 !
 
 classMenuCheckOutNewest
@@ -30471,7 +30726,9 @@
      or merge-in the repository version.
      "
 
-    self checkOutClasses:(self selectedClasses value) askForRevision:false
+    self checkOutClasses:(self selectedClassesValue) askForRevision:false
+
+    "Modified: / 28-02-2012 / 16:45:46 / cg"
 !
 
 classMenuCheckOutNewestUsingManager: manager
@@ -30480,7 +30737,7 @@
      or merge-in the repository version.
      "
 
-    self checkOutClasses:(self selectedClasses value) askForRevision:false usingManager: manager
+    self checkOutClasses:(self selectedClassesValue) askForRevision:false usingManager: manager
 
     "Modified: / 11-10-2011 / 23:09:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 21-12-2011 / 20:16:21 / cg"
@@ -30504,7 +30761,7 @@
      or merge-in the repository version.
      "
 
-    self checkOutClasses:(self selectedClasses value) askForRevision:true usingManager: manager
+    self checkOutClasses:(self selectedClassesValue) askForRevision:true usingManager: manager
 
     "Modified: / 11-10-2011 / 23:10:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 21-12-2011 / 20:16:41 / cg"
@@ -30515,9 +30772,9 @@
      with the the newest version found in the repository.
      That is the most recent version."
 
-    self doCompareClassesWithRepository:(self selectedClasses value).
-
-    "Modified: / 13-10-2006 / 11:44:09 / cg"
+    self doCompareClassesWithRepository:(self selectedClassesValue).
+
+    "Modified: / 28-02-2012 / 16:45:55 / cg"
 !
 
 classMenuCompareAgainstNewestInRepositoryUsingManager:aManagerOrNil
@@ -30525,9 +30782,8 @@
      with the the newest version found in the repository.
      That is the most recent version."
 
-    self doCompareClassesWithRepository:(self selectedClasses value) usingManager:aManagerOrNil.
-
-    "Modified: / 13-10-2006 / 11:44:09 / cg"
+    self doCompareClassesWithRepository:(self selectedClassesValue) usingManager:aManagerOrNil.
+
     "Created: / 21-12-2011 / 19:55:56 / cg"
 !
 
@@ -30630,12 +30886,12 @@
         ].
 
         revString := rev.
-        "/ this takes some time ... is it worth ?
-        (newestRev := mgr newestRevisionOf:currentClass) notNil ifTrue:[
-            newestRev ~= rev ifTrue:[
-                revString := rev , ' (newest is ' , newestRev , ')'
-            ]
-        ].
+"/        "/ this takes some time ... is it worth ?
+"/        (newestRev := mgr newestRevisionOf:currentClass) notNil ifTrue:[
+"/            newestRev ~= rev ifTrue:[
+"/                revString := rev , ' (newest is ' , newestRev , ')'
+"/            ]
+"/        ].
 
         self busyLabel:'comparing  ...' with:nil.
 
@@ -30974,7 +31230,7 @@
 
     |collectionOfClasses classes classesToUnload current fileName fileVersion remote diffs allDiffs title|
 
-    collectionOfClasses := self selectedClasses value.
+    collectionOfClasses := self selectedClassesValue.
 
     collectionOfClasses do:[:eachClass |
         |className metaclassName|
@@ -31285,7 +31541,7 @@
     |collectionOfClasses classes classesToUnload current remote diffs allDiffs
      title|
 
-    collectionOfClasses := self selectedClasses value.
+    collectionOfClasses := self selectedClassesValue.
 
     classesToUnload := IdentitySet new.
     classes :=
@@ -31347,7 +31603,7 @@
 
     "Modified: / 18-10-2006 / 13:08:21 / User"
     "Created: / 11-11-2006 / 15:36:43 / cg"
-    "Modified: / 12-09-2011 / 11:55:16 / cg"
+    "Modified: / 28-02-2012 / 16:46:07 / cg"
 !
 
 classMenuEditVersionInRepository
@@ -31431,7 +31687,7 @@
                self 
                 showRepositoryLogOf:cls short:shortOrNot
                 beforeLogDo:[:s |
-                    self selectedClasses value size > 1 ifTrue:[
+                    self selectedClassesValue size > 1 ifTrue:[
                         s nextPutLine:'-----------------------------------------------------------'. 
                         s nextPutLine:('%1 log for %2:' 
                                             bindWith:(shortOrNot ifTrue:['Short'] ifFalse:['Full']) 
@@ -31449,13 +31705,15 @@
             [:cls | 
                 |owner|
                 owner := cls owningClass.
-                (self selectedClasses value includes:owner) ifFalse:[
+                (self selectedClassesValue includes:owner) ifFalse:[
                     self warn:'cannot show log of private class: %1\\Please see the log of the owning class (%2).'
                         with:cls nameWithoutPrefix allBold
                         with:owner name.
                 ]
             ].
     self normalLabel.
+
+    "Modified: / 28-02-2012 / 16:47:53 / cg"
 !
 
 classMenuRevisionLog:shortOrNot usingManager: manager
@@ -31481,7 +31739,7 @@
                self 
                 showRepositoryLogOf:cls short:shortOrNot usingManager: manager
                 beforeLogDo:[:s |
-                    self selectedClasses value size > 1 ifTrue:[
+                    self selectedClassesValue size > 1 ifTrue:[
                         s nextPutLine:'-----------------------------------------------------------'. 
                         s nextPutLine:('%1 log for %2:' 
                                             bindWith:(shortOrNot ifTrue:['Short'] ifFalse:['Full']) 
@@ -31499,7 +31757,7 @@
             [:cls | 
                 |owner|
                 owner := cls owningClass.
-                (self selectedClasses value includes:owner) ifFalse:[
+                (self selectedClassesValue includes:owner) ifFalse:[
                     self warn:'cannot show log of private class: %1\\Please see the log of the owning class (%2).'
                         with:cls nameWithoutPrefix allBold
                         with:owner name.
@@ -34181,11 +34439,13 @@
         cls := mthd mclass.
     ] ifFalse:[
         self codeAspect value ~= #classDefinition ifTrue:[
-            ^ self warn:'Select either a class or a method.'
+            ^ self warn:'Select either a single class or a single method.'
         ].
         cls := self theSingleSelectedClass.
     ].
     aOneArgBlock value:cls.
+
+    "Modified: / 02-03-2012 / 14:32:58 / cg"
 !
 
 withCurrentMethodsClassAndSelectorDo:aTwoArgBlock
@@ -34354,6 +34614,9 @@
      "/ stop if an instance variable is true
      "/     ((context receiver instVarNamed:''foo'') == true)
 
+     "/ stop if shift-key is pressed
+     "/     Display shiftDown
+
      "/ stop after 5 calls (notice the scope of the counter variable, outside the block)
      "/     counter >= 5
 
@@ -34390,7 +34653,7 @@
 
     self commonTraceHelperWith:#breakPointIf: with:conditionBlock clear:true
 
-    "Modified: / 20-10-2010 / 09:33:57 / cg"
+    "Modified: / 14-02-2012 / 11:14:24 / cg"
 !
 
 debugMenuBreakPointIn
@@ -34485,7 +34748,7 @@
 debugMenuOpenCallGraphForClasses
     "open an OOM CallGraph view on the selected class(es)"
 
-    self debugMenuOpenCallGraphForClasses:(self selectedClasses value).
+    self debugMenuOpenCallGraphForClasses:(self selectedClassesValue).
 
     "Created: / 27-04-2010 / 14:07:58 / cg"
 !
@@ -34764,7 +35027,7 @@
 
     |selectedClasses|
 
-    selectedClasses := self selectedClasses value.
+    selectedClasses := self selectedClassesValue.
     selectedClasses isEmptyOrNil ifTrue:[
         selectedClasses := self selectedCategoryClasses
     ].
@@ -34782,7 +35045,7 @@
         ]
     ].
 
-    "Modified: / 06-07-2011 / 14:08:06 / cg"
+    "Modified: / 28-02-2012 / 16:52:45 / cg"
 ! !
 
 !NewSystemBrowser methodsFor:'menu actions-help'!
@@ -34820,12 +35083,12 @@
 !NewSystemBrowser methodsFor:'menu actions-lint'!
 
 runLint
-
-    self 
-        smalllintCheck: self selectedCodeComponentsAsEnvironment 
-        against: #smalllintRules
+    "run the new smallLint checker tool"
+
+    self runLintOnPreviousRules
 
     "Modified: / 17-04-2010 / 10:44:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-03-2012 / 17:39:34 / cg"
 ! !
 
 !NewSystemBrowser methodsFor:'menu actions-methodList'!
@@ -34837,14 +35100,14 @@
 
     |classes|
 
-    classes := self selectedMethods value collect:[:each | each mclass].
-    classes := classes asIdentitySet.
+    classes := self selectedMethodsClasses asOrderedCollection.
 
     ^ self
         classMenuCheckIn:true
-        classes:(classes asOrderedCollection)
+        classes:classes
 
     "Modified: / 18-11-2011 / 18:49:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-02-2012 / 09:12:37 / cg"
 !
 
 methodListMenuCheckInClassUsingManager: manager
@@ -34852,12 +35115,11 @@
 
     |classes|
 
-    classes := self selectedMethods value collect:[:each | each mclass].
-    classes := classes asIdentitySet.
+    classes := self selectedMethodsClasses asOrderedCollection.
 
     ^ self
         classMenuCheckIn:true
-        classes:(classes asOrderedCollection)
+        classes:classes
         usingManager: manager.
 
     "Created: / 18-11-2011 / 18:49:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -34947,6 +35209,14 @@
     "Created: / 07-08-2006 / 12:12:47 / cg"
 !
 
+methodListMenuSpawnBufferWithCommonSuperclass
+    "add a buffer/open a browser showing the selected methods' common superclass"
+
+    ^ self spawnWithCommonSuperclassOf:(self selectedMethodsClasses) in:#newBuffer
+
+    "Created: / 28-02-2012 / 10:18:01 / cg"
+!
+
 methodListMenuSpawnClassOrSubclassReferences
     "open a new browser showing references to the selected classes or any of its subclass"
 
@@ -34974,8 +35244,10 @@
 
     |classes|
 
-    classes := (self selectedMethods value collect:[:each | each mclass]) asIdentitySet asOrderedCollection.
+    classes := self selectedMethodsClasses asOrderedCollection.
     ^ self spawnClassBrowserFor:classes in:where select:false
+
+    "Modified: / 28-02-2012 / 09:09:44 / cg"
 !
 
 methodListMenuSpawnClassesBuffer
@@ -34984,6 +35256,14 @@
     ^ self methodListMenuSpawnClasses:#newBuffer
 !
 
+methodListMenuSpawnCommonSuperclass
+    "add a buffer/open a browser showing the selected methods' common superclass"
+
+    ^ self spawnWithCommonSuperclassOf:(self selectedMethodsClasses) in:#newBrowser
+
+    "Created: / 28-02-2012 / 10:15:54 / cg"
+!
+
 methodListMenuSpawnFullBrowser
     "add a buffer showing the selected methodss classes"
 
@@ -35001,8 +35281,8 @@
 
     |methods classes brwsr anyMeta anyNonMeta|
 
-    methods := self selectedMethods value.
-    classes := (methods collect:[:each | each mclass]) asIdentitySet asOrderedCollection.
+    methods := self selectedMethodsValue.
+    classes := self selectedMethodsClasses asOrderedCollection.
     brwsr := self spawnFullBrowserInClass:nil selector:nil in:where.
 
     classes size > 0 ifTrue:[
@@ -35025,8 +35305,9 @@
         brwsr immediateUpdate value:false.
     ].
     ^ brwsr
-! !
-
+
+    "Modified: / 28-02-2012 / 16:27:44 / cg"
+! !
 
 !NewSystemBrowser methodsFor:'menu actions-namespace'!
 
@@ -35134,7 +35415,7 @@
     ].
 
     namespaceList := namespaces copy.
-    selectedClasses := self selectedClasses value.
+    selectedClasses := self selectedClassesValue.
 
     self
         newBrowserOrBufferDependingOn:where
@@ -35150,7 +35431,7 @@
             "/ brwsr immediateUpdate value:false.
         ]
 
-    "Modified: / 18.8.2000 / 16:13:15 / cg"
+    "Modified: / 28-02-2012 / 16:53:04 / cg"
 ! !
 
 !NewSystemBrowser methodsFor:'menu actions-other'!
@@ -35181,8 +35462,8 @@
     settingsList := 
         #(
             #('Editor'                  #'AbstractSettingsApplication::EditSettingsAppl'                )
+            #('Code Editor 2'           #'Tools::CodeView2SettingsAppl'                                 )
             #('Syntax Color'            #'AbstractSettingsApplication::SyntaxColorSettingsAppl'         )
-            #('Code Editor 2'           #'Tools::CodeView2SettingsAppl'                                 )
             #('Code Format'             #'AbstractSettingsApplication::SourceCodeFormatSettingsAppl'    )
             #('System Browser'          #'AbstractSettingsApplication::SystemBrowserSettingsAppl'       )
             #('Compiler'                #'AbstractSettingsApplication::GeneralCompilerSettingsAppl'     )
@@ -35206,8 +35487,8 @@
     settingsApp window label:('System Browser Settings').
     settingsApp openWindow.
 
-    "Modified: / 06-07-2011 / 12:38:07 / cg"
     "Created: / 15-10-2011 / 12:01:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-02-2012 / 15:35:18 / cg"
 !
 
 openSettingsDialogAndSelectSourceCodeManagement
@@ -35252,11 +35533,13 @@
     |stream|
 
     stream := '' writeStream.
-    self selectedClasses value do:[:cls |
+    self selectedClassesValue do:[:cls |
         cls theNonMetaclass fileOutOn:stream.
     ].
 
     self window setClipboardText:stream contents
+
+    "Modified: / 28-02-2012 / 16:46:11 / cg"
 !
 
 classMenuFileOutBuildSupportFiles
@@ -35817,7 +36100,8 @@
         Transcript topView raise.
     ].
 
-    projectBuilder := Tools::ProjectBuilder new
+    projectBuilder := Tools::ProjectBuilder new.
+    projectBuilder 
         makeExeOnly:exeOnly;
         package:projectToBuild;
         "/ build
@@ -38343,7 +38627,7 @@
 
     printStream := Printer new.
 
-    (self selectedClasses value) do:[:eachClass |
+    (self selectedClassesValue) do:[:eachClass |
         (self selectedProtocols value sort) do:[:eachProtocol |
             (eachClass methodDictionary contains:[:m | m category = eachProtocol])
             ifTrue:[
@@ -38353,6 +38637,8 @@
     ].
 
     printStream close
+
+    "Modified: / 28-02-2012 / 16:59:38 / cg"
 !
 
 protocolCheckMenuSmalllintCheck: what
@@ -38765,13 +39051,13 @@
     someCategories := Set new.
 
     "/ offer the current classes's protocols in the dialog
-    (selClasses := self selectedClasses value) notNil ifTrue:[
+    (selClasses := self selectedClassesValue) notEmptyOrNil ifTrue:[
         selClasses do:[:eachClass |
             someCategories addAll:(eachClass categories).
         ]
     ] ifFalse:[
         "/ offer the current method-classes' protocols in the dialog
-        (selMethods := self selectedMethods value) notNil ifTrue:[
+        (selMethods := self selectedMethodsValue) notNil ifTrue:[
             selMethods do:[:eachMethod | |cls|
                 (cls := eachMethod mclass) notNil ifTrue:[
                     someCategories addAll:cls categories
@@ -38824,7 +39110,7 @@
             ]
         ].
         methodCategoryListApp notNil ifTrue:[
-            (self selectedClasses value ? #()) do:[:cls |
+            (self selectedClassesValue) do:[:cls |
                 "/ kludge - must also rename in addedProtocols
                 methodCategoryListApp renameAdditionalProtocol:currentMethodCategory to:newCategory forClass:cls.
             ].
@@ -38837,25 +39123,29 @@
         self immediateUpdate value:false.
     ]
 
-    "Modified: / 06-02-2007 / 10:21:34 / cg"
+    "Modified: / 28-02-2012 / 17:00:47 / cg"
 !
 
 protocolMenuSpawn
     "open a new browser showing the selected category only"
 
     ^ self
-        spawnProtocolBrowserFor:(self selectedClasses value)
+        spawnProtocolBrowserFor:(self selectedClassesValue)
         and:(self selectedProtocols value)
         in:#newBrowser
+
+    "Modified: / 28-02-2012 / 17:00:28 / cg"
 !
 
 protocolMenuSpawnBuffer
     "add a new buffer showing the selected category only"
 
     ^ self
-        spawnProtocolBrowserFor:(self selectedClasses value)
+        spawnProtocolBrowserFor:(self selectedClassesValue)
         and:(self selectedProtocols value)
         in:#newBuffer
+
+    "Modified: / 28-02-2012 / 16:54:00 / cg"
 !
 
 protocolMenuSpawnFullCategory
@@ -38912,11 +39202,13 @@
     |methodCategoryListApp|
 
     (methodCategoryListApp := self methodCategoryListApp) notNil ifTrue:[
-        (self selectedClasses value ? #()) do:[:aClass |
+        (self selectedClassesValue) do:[:aClass |
             methodCategoryListApp removeAllAdditionalProtocolForClass:aClass
         ].
         methodCategoryListApp forceUpdateList
     ]
+
+    "Modified: / 28-02-2012 / 16:53:56 / cg"
 !
 
 spawnFullProtocolBrowserFor:protocols in:where
@@ -38990,7 +39282,7 @@
     ] ifFalse:[
         spec := #multipleProtocolBrowserSpec.
     ].
-    selectedMethods := self selectedMethods value copy.
+    selectedMethods := self selectedMethodsValue copy.
 
     ^ self
         newBrowserOrBufferDependingOn:where
@@ -39040,6 +39332,8 @@
 
             brwsr immediateUpdate value:false.
         ]
+
+    "Modified: / 28-02-2012 / 16:34:54 / cg"
 ! !
 
 !NewSystemBrowser methodsFor:'menu actions-searching'!
@@ -39457,43 +39751,47 @@
 !
 
 searchMenuFindImplementationOf
-    self
-        askForSelector:'Search for implementation of (if sent to selected class):'
-        allowBuffer:true
-        allowBrowser:true
-        thenDo:[:selector :where |
-            |searchClass class mthd currentMethod|
-
-            searchClass := self theSingleSelectedClass.
-            searchClass isNil ifTrue:[
-                searchClass := self classHierarchyTopClass value.
-                searchClass isNil ifTrue:[
-                    self information:'No class selected (cannot search).'.
-                    ^ self
-                ]
-            ].
-
-            currentMethod := self theSingleSelectedMethod.
-            (currentMethod notNil
-            and:[currentMethod selector == selector]) ifTrue:[
-                searchClass := searchClass superclass.
-            ].
-
-            "/ search for the implementaion
-            class := searchClass whichClassIncludesSelector:selector.
-            class isNil ifTrue:[
-                self information:'None found'.
-            ] ifFalse:[
-                mthd := class compiledMethodAt:selector.
-                where isNil ifTrue:[
-                    self rememberLocationInHistory.
-                    self switchToClass:class selector:selector.
-                ] ifFalse:[
-                    self spawnMethodBrowserFor:(Array with:mthd) in:where
-                         label:(resources string:'Implementation of %1' with:selector)
-                ]
-            ].
-        ]
+    self obsoleteMethodWarning.
+    ^ self searchMenuFindResponseTo.
+"/    self
+"/        askForSelector:'Search for implementation of (if sent to selected class):'
+"/        allowBuffer:true
+"/        allowBrowser:true
+"/        thenDo:[:selector :where |
+"/            |searchClass class mthd currentMethod|
+"/
+"/            searchClass := self theSingleSelectedClass.
+"/            searchClass isNil ifTrue:[
+"/                searchClass := self classHierarchyTopClass value.
+"/                searchClass isNil ifTrue:[
+"/                    self information:'No class selected (cannot search).'.
+"/                    ^ self
+"/                ]
+"/            ].
+"/
+"/            currentMethod := self theSingleSelectedMethod.
+"/            (currentMethod notNil
+"/            and:[currentMethod selector == selector]) ifTrue:[
+"/                searchClass := searchClass superclass.
+"/            ].
+"/
+"/            "/ search for the implementaion
+"/            class := searchClass whichClassIncludesSelector:selector.
+"/            class isNil ifTrue:[
+"/                self information:'None found'.
+"/            ] ifFalse:[
+"/                mthd := class compiledMethodAt:selector.
+"/                where isNil ifTrue:[
+"/                    self rememberLocationInHistory.
+"/                    self switchToClass:class selector:selector.
+"/                ] ifFalse:[
+"/                    self spawnMethodBrowserFor:(Array with:mthd) in:where
+"/                         label:(resources string:'Implementation of %1' with:selector)
+"/                ]
+"/            ].
+"/        ]
+
+    "Modified: / 01-03-2012 / 07:36:12 / cg"
 !
 
 searchMenuFindMethod
@@ -40046,7 +40344,9 @@
 !
 
 doMoveSelectedMethodsToProject:newProject
-    self moveMethods:(self selectedMethods value) toProject:newProject
+    self moveMethods:(self selectedMethodsValue) toProject:newProject
+
+    "Modified: / 28-02-2012 / 16:16:12 / cg"
 !
 
 doRemoveMethodsConfirmed:methodsToRemove
@@ -40156,7 +40456,9 @@
 doRemoveSelectedMethodsUnconfirmed
     "remove selected methods without asking questions"
 
-    self doRemoveMethodsUnconfirmed:self selectedMethods value copy
+    self doRemoveMethodsUnconfirmed:self selectedMethodsValue copy
+
+    "Modified: / 28-02-2012 / 16:16:16 / cg"
 !
 
 fileOutMethods:aCollectionOfMethods format:formatSymbolOrNil fileNameTemplate:nameOrNil boxTitle:boxTitleOrNil
@@ -40266,7 +40568,7 @@
 
     cls := self theSingleSelectedClass.
     cls isNil ifTrue:[
-        classes := self selectedClasses value.
+        classes := self selectedClassesValue.
         classes notEmptyOrNil ifTrue:[
             cls := classes first.
         ]
@@ -40275,6 +40577,8 @@
         ^ cls programmingLanguage methodTemplate
     ].
     ^ SystemBrowser methodTemplate
+
+    "Modified: / 28-02-2012 / 16:59:30 / cg"
 !
 
 methodsPreviousVersionCode
@@ -40581,12 +40885,12 @@
     ].
 
     renameSelectedMethodsOnly ifTrue:[
-        (self selectedMethods value collect:[:m | m selector]) asSet size == 1 ifFalse:[
+        (self selectedMethodsValue collect:[:m | m selector]) asSet size == 1 ifFalse:[
             Dialog warn:'Multiple different selectors selected'.
             ^ self.
         ].
 
-        classesOfSelectedMethods := self selectedMethods value collect:[:m|m mclass].
+        classesOfSelectedMethods := self selectedMethodsValue collect:[:m|m mclass].
 "/        classesOfSelectedMethods := classesOfSelectedMethods 
 "/                collect:[:cls | 
 "/                    |className rbClass|
@@ -40608,9 +40912,19 @@
 
         rslt := self performRefactoring:refactoring.
         self switchToSelector:newSelector asSymbol.
-    ]
-
-    "Modified: / 09-02-2011 / 13:54:20 / cg"
+    ].
+
+    dialog browseOldSendersHolder value ifTrue:[
+        self spawnMethodSendersBrowserFor:(Array with:oldSelector) in:#newBrowser
+    ].
+    dialog browseNewSendersHolder value ifTrue:[
+        self spawnMethodSendersBrowserFor:(Array with:newSelector) in:#newBrowser
+    ].
+    dialog browseChangedMethodsHolder value ifTrue:[
+        self spawnMethodImplementorsBrowserFor:(Array with:newSelector) match:false in:#newBrowser
+    ].
+
+    "Modified: / 28-02-2012 / 16:28:12 / cg"
 !
 
 selectVariableForMoveMethod
@@ -41134,7 +41448,7 @@
 selectorMenuCheckInProjectExtensions
     |projects|
 
-    projects := ((self selectedMethods value) collect:[:each | each package]) asSet.
+    projects := ((self selectedMethodsValue) collect:[:each | each package]) asSet.
     projects do:[:packageToCheckIn |
         self
             projectMenuCheckInProject:packageToCheckIn
@@ -41142,6 +41456,8 @@
             extensions:true
             buildSupport:false
     ].
+
+    "Modified: / 28-02-2012 / 16:28:43 / cg"
 !
 
 selectorMenuCleanUpChangeSet
@@ -41151,7 +41467,7 @@
         ifFalse:[ ^ self].
 
     self withWaitCursorDo:[
-        self selectedMethods value do:[:eachMethod |
+        self selectedMethodsValue do:[:eachMethod |
             ChangeSet current condenseChangesForClass:eachMethod mclass selector:eachMethod selector
         ]
     ]
@@ -41166,9 +41482,10 @@
 
     <resource: #obsolete> "use ...Using:manager variant"
 
-    self doCompareMethodsWithRepository:(self selectedMethods value).
+    self doCompareMethodsWithRepository:(self selectedMethodsValue).
 
     "Modified: / 18-11-2011 / 18:43:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-02-2012 / 16:28:53 / cg"
 !
 
 selectorMenuCompareAgainstNewestInRepositoryUsingManager: manager
@@ -41176,7 +41493,7 @@
      with the the newest version found in the repository.
      That is the most recent version."
 
-    self doCompareMethodsWithRepository:(self selectedMethods value) usingManager: manager.
+    self doCompareMethodsWithRepository:(self selectedMethodsValue) usingManager: manager.
 
     "Created: / 18-11-2011 / 18:44:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 21-12-2011 / 20:20:20 / cg"
@@ -41198,11 +41515,12 @@
 
     |classes|
 
-    classes := (self selectedMethods value collect:[:m | m mclass theNonMetaclass]) asSet.
+    classes := (self selectedMethodsValue collect:[:m | m mclass theNonMetaclass]) asSet.
     self doCompareClassesWithRepository:classes.
 
     "Created: / 13-10-2006 / 11:40:23 / cg"
     "Modified (format): / 18-11-2011 / 18:47:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-02-2012 / 16:28:59 / cg"
 !
 
 selectorMenuCompareClassAgainstNewestInRepositoryUsingManager: manager
@@ -41212,7 +41530,7 @@
 
     |classes|
 
-    classes := (self selectedMethods value collect:[:m | m mclass theNonMetaclass]) asSet.
+    classes := (self selectedMethodsValue collect:[:m | m mclass theNonMetaclass]) asSet.
     self doCompareClassesWithRepository:classes usingManager: manager
 
     "Created: / 18-11-2011 / 18:47:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -41235,12 +41553,14 @@
 
     |selectedMethods|
 
-    selectedMethods := self selectedMethods value.
+    selectedMethods := self selectedMethodsValue.
 
     self
         doCompareMethod:(selectedMethods first)
         against:(selectedMethods second)
         label:(resources string:'Comparing methods')
+
+    "Modified: / 28-02-2012 / 16:29:05 / cg"
 !
 
 selectorMenuCompareWithInherited
@@ -41248,12 +41568,14 @@
 
     |m1 m2|
 
-    m1 := self selectedMethods value first.
+    m1 := self selectedMethodsValue first.
     m2 := m1 mclass superclass lookupMethodFor:(m1 selector).
     self
         doCompareMethod:m1
         against:m2
         label:(resources string:'Comparing against inherited')
+
+    "Modified: / 28-02-2012 / 16:29:11 / cg"
 !
 
 selectorMenuCompareWithMethod
@@ -41288,7 +41610,7 @@
 selectorMenuCompareWithSmallTeamVersionOnHost:hostName
     "compare the codeViews contents against a SmallTeam version"
 
-    self selectedMethods value do:[:eachMethod |
+    self selectedMethodsValue do:[:eachMethod |
         |v changeList change|
 
         changeList := SmallTeam changesOnHost:hostName.
@@ -41308,7 +41630,7 @@
     ].
 
     "Created: / 11-11-2006 / 15:15:26 / cg"
-    "Modified: / 12-11-2006 / 15:50:02 / cg"
+    "Modified: / 28-02-2012 / 16:29:13 / cg"
 !
 
 selectorMenuCompileWithSTC
@@ -41394,7 +41716,7 @@
 
     |methods fileNameTemplate m|
 
-    methods := self selectedMethods value.
+    methods := self selectedMethodsValue.
     methods size > 1 ifTrue:[
         fileNameTemplate := 'someMethods'.
     ] ifFalse:[
@@ -41407,7 +41729,7 @@
         fileNameTemplate:fileNameTemplate
         boxTitle:'FileOut selected method(s) as:'
 
-    "Modified: / 15.11.2001 / 17:57:52 / cg"
+    "Modified: / 28-02-2012 / 16:29:16 / cg"
 !
 
 selectorMenuFileOutSIFAs
@@ -41621,7 +41943,7 @@
 selectorMenuLoadSmallTeamVersionFromHost:hostName
     "load a smallTeam version"
 
-    self selectedMethods value do:[:eachMethod |
+    self selectedMethodsValue do:[:eachMethod |
         |changeList change|
 
         changeList := SmallTeam changesOnHost:hostName.
@@ -41663,7 +41985,7 @@
 selectorMenuMakeClassOrInstanceMethodWithForwarder:withForwarder
     "move the selected methods from inst to their class side or vice versa"
 
-    self selectedMethods value copy do:[:methodToMove |
+    self selectedMethodsValue copy do:[:methodToMove |
         |mclass question msg selectorToMove dontDoIt newMethod dstClass|
 
         mclass := methodToMove mclass.
@@ -41708,6 +42030,8 @@
 "/            ]
 "/        ]
     ]
+
+    "Modified: / 28-02-2012 / 16:29:23 / cg"
 !
 
 selectorMenuMakeIgnored
@@ -41843,11 +42167,11 @@
         ].
     ].
 
-    methods := self selectedMethods value.
+    methods := self selectedMethodsValue.
 
     self moveOrCopyMethods:methods toClass:newClass moveOrCopy:doWhat
 
-    "Modified: / 24-11-2006 / 12:22:23 / cg"
+    "Modified: / 28-02-2012 / 16:29:26 / cg"
 !
 
 selectorMenuMoveToClass
@@ -41862,7 +42186,7 @@
     |perPackageMethods|
 
     perPackageMethods := Dictionary new.
-    self selectedMethods value do:[:eachMethod |
+    self selectedMethodsValue do:[:eachMethod |
         |methodsPackage classPackage set|
 
         methodsPackage := eachMethod package.
@@ -41891,7 +42215,7 @@
 
     |newProject classProjects offered affectedMethods msg|
 
-    affectedMethods := self selectedMethods value.
+    affectedMethods := self selectedMethodsValue.
     classProjects := (affectedMethods collect:[:eachMethod | eachMethod mclass package]) asSet.
 
     LastProjectMoves size > 0 ifTrue:[
@@ -41921,22 +42245,22 @@
     ].
 
     "Created: / 17-02-2000 / 23:02:49 / cg"
-    "Modified: / 11-08-2006 / 13:40:58 / cg"
+    "Modified: / 28-02-2012 / 16:29:32 / cg"
 !
 
 selectorMenuMoveToProtocol
     "move selected methods to some other category"
 
     |mthd superClass inherited someCategories goodCandidates newCategory selClasses
-     initialAnswer methodSelection selectors|
-
-    methodSelection := self selectedMethods value copy.
+     initialAnswer methodSelection selectors subclassCategories gotInherited|
+
+    methodSelection := self selectedMethodsValue copy.
 
     someCategories := Set new.
     goodCandidates := Set new.
 
     "/ offer the current classes's protocols in the dialog
-    (selClasses := self selectedClasses value) notNil ifTrue:[
+    (selClasses := self selectedClassesValue) notNil ifTrue:[
         selClasses do:[:eachClass |
             someCategories addAll:(eachClass categories).
         ]
@@ -42021,23 +42345,49 @@
         goodCandidates add:'enumeration'.
     ].
 
-    someCategories := someCategories asOrderedCollection sort.
     goodCandidates size == 1 ifTrue:[
         initialAnswer := goodCandidates anElement
     ] ifFalse:[
         (mthd := self theSingleSelectedMethod) notNil ifTrue:[
+            gotInherited := false.
+
+            "look for protocol of inherited"
             superClass := mthd mclass superclass.
             superClass notNil ifTrue:[
                 superClass := superClass whichClassIncludesSelector:mthd selector.
                 superClass notNil ifTrue:[
                     inherited := superClass compiledMethodAt:mthd selector.
                     inherited notNil ifTrue:[
-                        initialAnswer := inherited category
-                    ]
-                ]
-            ]
-        ]
-    ].
+                        initialAnswer := inherited category.
+                        gotInherited := true.
+                    ]
+                ] ifFalse:[
+                    superClass := mthd mclass superclass.
+                ].
+            ].
+            "look for majority protocol in subclasses"
+            subclassCategories := Bag new.
+            mthd mclass allSubclassesDo:[:cls |
+                |redefined|
+
+                redefined := superClass compiledMethodAt:mthd selector.
+                redefined notNil ifTrue:[
+                    subclassCategories add:(redefined category).
+                ]
+            ].
+            subclassCategories notEmpty ifTrue:[
+                subclassCategories := (subclassCategories valuesAndCounts 
+                                            sort:[:a :b | a value > b value])
+                                                collect:[:each | each key].
+                someCategories addAll:(subclassCategories first:(3 min:subclassCategories size)).
+                gotInherited ifFalse:[
+                    initialAnswer := subclassCategories first.
+                ]
+            ].
+        ]
+    ].
+
+    someCategories := someCategories asOrderedCollection sort.
 
     newCategory := self
                         askForMethodCategory:'Move to which protocol ?'
@@ -42048,7 +42398,7 @@
 
     self moveMethods:methodSelection toProtocol:newCategory
 
-    "Modified: / 02-08-2011 / 09:22:49 / cg"
+    "Modified: / 28-02-2012 / 16:52:19 / cg"
 !
 
 selectorMenuNewImageSpec
@@ -42215,7 +42565,7 @@
     (self askIfModified:'Code was modified.\\Push method(s) anyway ?')
     ifFalse:[^ self].
 
-    selectedMethods := self selectedMethods value.
+    selectedMethods := self selectedMethodsValue.
 
     (selectedMethods collect:[:m | m mclass]) asIdentitySet do:[:eachClass |
         |methods selectors nm|
@@ -42239,6 +42589,8 @@
         refactoring model name:nm.
         self performRefactoring:refactoring.
     ].
+
+    "Modified: / 28-02-2012 / 16:29:38 / cg"
 !
 
 selectorMenuPushUpMethod
@@ -42250,16 +42602,20 @@
 selectorMenuRecompile
     "recompile the selected methods (for Debug only)"
 
-    self selectedMethods value do:[:eachMethod |
+    self selectedMethodsValue do:[:eachMethod |
         eachMethod mclass recompile:eachMethod selector
     ]
+
+    "Modified: / 28-02-2012 / 16:29:42 / cg"
 !
 
 selectorMenuRemove
     "confirm removal of the selected methods (but does not search for senders),
      then remove them."
 
-    self doRemoveMethodsConfirmed:(self selectedMethods value)
+    self doRemoveMethodsConfirmed:(self selectedMethodsValue)
+
+    "Modified: / 28-02-2012 / 16:29:45 / cg"
 !
 
 selectorMenuRemoveParameter
@@ -42300,7 +42656,7 @@
 
     mthd := self theSingleSelectedMethod.
     mthd isNil ifTrue:[
-        methods := self selectedMethods value ? #().
+        methods := self selectedMethodsValue.
         (methods asSet collect:[:eachMethod | eachMethod selector]) size == 1 ifTrue:[
             mthd := methods first.
         ]
@@ -42325,11 +42681,13 @@
 "/
 "/    mthd := self theSingleSelectedMethod.
 "/    self renameMethod:mthd selector in:mthd mclass.
+
+    "Modified: / 28-02-2012 / 16:43:57 / cg"
 !
 
 selectorMenuRewrite
     MethodRewriter new
-        methods: self selectedMethods value;
+        methods: self selectedMethodsValue;
         open
 
     "Created: / 05-07-2011 / 14:49:06 / cg"
@@ -42380,7 +42738,7 @@
                 selectorsToRemove do:[:eachSelectorToRemove |
                     sent := mthd messagesSent.
                    (sent includes:eachSelectorToRemove) ifTrue:[
-                       (self selectedMethods value includesIdentical:mthd) ifFalse:[
+                       (self selectedMethodsValue includesIdentical:mthd) ifFalse:[
                            possiblyInvoked add:mthd.
                        ]
                    ]
@@ -42390,7 +42748,7 @@
                 newFound := IdentitySet new.
                 selectorsToRemove do:[:eachSelectorToRemove |
                     (mthd refersToLiteral:eachSelectorToRemove) ifTrue:[
-                        (self selectedMethods value includesIdentical:mthd) ifFalse:[
+                        (self selectedMethodsValue includesIdentical:mthd) ifFalse:[
                             possiblyUsedAsSelector add:mthd.
                         ]
                     ].
@@ -42459,6 +42817,8 @@
      ].
 
      self doRemoveSelectedMethodsUnconfirmed
+
+    "Modified: / 28-02-2012 / 16:30:03 / cg"
 !
 
 selectorMenuSelectMethodsWithString
@@ -42474,10 +42834,12 @@
 
     |projects|
 
-    projects := (self selectedMethods value collect:[:m | m package]) asSet asSortedCollection.
+    projects := (self selectedMethodsValue collect:[:m | m package]) asSet asSortedCollection.
     ^ self
         spawnProjectBrowserFor:projects
         in:#newBrowser
+
+    "Modified: / 28-02-2012 / 16:30:06 / cg"
 !
 
 selectorMenuSpawnExtensionsProjectBuffer
@@ -42485,10 +42847,12 @@
 
     |projects|
 
-    projects := (self selectedMethods value collect:[:m | m package]) asSet asSortedCollection.
+    projects := (self selectedMethodsValue collect:[:m | m package]) asSet asSortedCollection.
     ^ self
         spawnProjectBrowserFor:projects
         in:#newBuffer
+
+    "Modified: / 28-02-2012 / 16:30:08 / cg"
 !
 
 selectorMenuSpawnImplementors
@@ -42535,18 +42899,22 @@
     "open a new browser showing the selected methods only"
 
     ^ self
-        spawnMethodBrowserFor:(self selectedMethods value)
+        spawnMethodBrowserFor:(self selectedMethodsValue)
         in:#newBrowser
         label:nil
+
+    "Modified: / 28-02-2012 / 16:30:11 / cg"
 !
 
 selectorMenuSpawnMethodBuffer
     "add a new buffer showing the selected methods only"
 
     ^ self
-        spawnMethodBrowserFor:(self selectedMethods value)
+        spawnMethodBrowserFor:(self selectedMethodsValue)
         in:#newBuffer
         label:nil
+
+    "Modified: / 28-02-2012 / 16:30:14 / cg"
 !
 
 selectorMenuSpawnProjectExtensions
@@ -42554,8 +42922,10 @@
      selected methods project(s)"
 
     ^ self
-        spawnProjectExtensionsBrowserFor:(self selectedMethods value)
+        spawnProjectExtensionsBrowserFor:(self selectedMethodsValue)
         in:#newBrowser
+
+    "Modified: / 28-02-2012 / 16:30:16 / cg"
 !
 
 selectorMenuSpawnProjectExtensionsBuffer
@@ -42563,8 +42933,10 @@
      selected methods project(s)"
 
     ^ self
-        spawnProjectExtensionsBrowserFor:(self selectedMethods value)
+        spawnProjectExtensionsBrowserFor:(self selectedMethodsValue)
         in:#newBuffer
+
+    "Modified: / 28-02-2012 / 16:30:19 / cg"
 !
 
 selectorMenuSpawnSenders
@@ -42665,7 +43037,7 @@
 spawnCallersIn:openHow 
     "open a new browser or add a buffer showing the selected method's callers"
 
-    self spawnCallersBrowserFor:(self selectedMethods value) in:openHow
+    self spawnCallersBrowserFor:(self selectedMethodsValue) in:openHow
 
     "Created: / 27-04-2010 / 15:17:33 / cg"
 !
@@ -42691,9 +43063,9 @@
     |searchBlock "must be first local in block (see #methodsSelectionChangedAt:index, which fetches this value)"
      spec aMethod multipleMethods methods lbl|
 
-    multipleMethods := self selectedMethods value size > 1.
+    multipleMethods := self selectedMethodsValue size > 1.
     multipleMethods ifTrue:[
-        methods := self selectedMethods value copy.
+        methods := self selectedMethodsValue copy.
         lbl := resources string:'implementor chains'.
     ] ifFalse:[
         aMethod := self theSingleSelectedMethod.
@@ -42758,7 +43130,7 @@
             ].
         ]
 
-    "Modified: / 1.3.2000 / 21:03:34 / cg"
+    "Modified: / 28-02-2012 / 16:37:04 / cg"
 !
 
 spawnLocalImplementorsBuffer
@@ -43204,7 +43576,7 @@
         |selectedMethods classes list newBrowser label searchBlock
          initialList anyRedefined|
 
-        (selectedMethods := self selectedMethods value) size == 0 ifTrue:[
+        (selectedMethods := self selectedMethodsValue) size == 0 ifTrue:[
             self warn:'No method selected.'.
             ^ self
         ].
@@ -43273,6 +43645,8 @@
         newBrowser selectMethods:(selectedMethods copy).
         newBrowser sortBy value:false.
     ]
+
+    "Modified: / 28-02-2012 / 16:30:45 / cg"
 !
 
 spawnMethodLocalImplementorsBrowserFor:aSelectorCollection in:openHow
@@ -43351,7 +43725,13 @@
         theSingleSelector notNil ifTrue:[
             cachedList := searchBlock value.
             cachedList size == 0 ifTrue:[
-                self information:(label , ' - none found').
+                (Dialog 
+                    confirm:(label , (resources string:' - none found'))
+                    yesLabel:(resources string:'Show Implementors') noLabel:'OK'
+                    initialAnswer:false
+                ) ifTrue:[
+                    self spawnMethodImplementorsBrowserFor:aSelectorCollection in:openHow
+                ].
                 ^ self
             ].
             (cachedList size == 1 and:[cachedList first == self theSingleSelectedMethod]) ifTrue:[
@@ -43455,9 +43835,9 @@
     |searchBlock "must be first local in block (see #methodsSelectionChangedAt:index, which fetches this value)"
      spec aMethod multipleMethods methods lbl|
 
-    multipleMethods := self selectedMethods value size > 1.
+    multipleMethods := self selectedMethodsValue size > 1.
     multipleMethods ifTrue:[
-        methods := self selectedMethods value copy.
+        methods := self selectedMethodsValue copy.
         lbl := resources string:'Sender chains'.
     ] ifFalse:[
         aMethod := self theSingleSelectedMethod.
@@ -43524,7 +43904,7 @@
             ].
         ]
 
-    "Modified: / 1.3.2000 / 21:03:34 / cg"
+    "Modified: / 28-02-2012 / 16:36:22 / cg"
 ! !
 
 !NewSystemBrowser methodsFor:'menu actions-subversion'!
@@ -43539,9 +43919,9 @@
 !NewSystemBrowser methodsFor:'menu actions-subversion-class'!
 
 classMenuSubversionShowRevisionLog
-
     | pkg classes branch path |
-    classes := self selectedClasses value.
+
+    classes := self selectedClassesValue.
     pkg := self theSingleSelectedProjectFromClasses.
     path := classes size == 1 
                 ifTrue: [SVN::Repository containerNameForClass: classes anyOne]
@@ -43553,8 +43933,8 @@
         open
 
     "Modified: / 25-06-2010 / 10:08:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
+    "Modified: / 28-02-2012 / 16:48:38 / cg"
+! !
 
 !NewSystemBrowser methodsFor:'menu actions-variables'!
 
@@ -44352,7 +44732,7 @@
     ].
 
 "/    cls := self theSingleSelectedClass.
-    cls := Behavior commonSuperclassOf:(self selectedClasses value).
+    cls := Behavior commonSuperclassOf:(self selectedClassesValue).
     variablesToRemove do:[:variableToRemove |
         classVar ifTrue:[
             self codeMenuRemoveClassVariable:variableToRemove inClass:(cls theNonMetaclass)
@@ -44361,7 +44741,7 @@
         ]
     ].
 
-    "Modified: / 12-10-2006 / 21:55:29 / cg"
+    "Modified: / 28-02-2012 / 16:51:57 / cg"
 !
 
 variablesMenuRemoveClassVariable
@@ -45215,14 +45595,15 @@
 "/    ] ifFalse:[
         (menu isKindOf:Menu) ifTrue:[
             "/ a newStyle menuPanel
-            menu atMenuItemLabeled:'Refactor' putSubmenu:shiftedMenu visible:true.
+            "/ (menu atNameKey:'refactor') "atMenuItemLabeled:'Refactor'" putSubmenu:shiftedMenu visible:true.
+            menu atMenuItemLabeled:(resources string:'Refactor') putSubmenu:shiftedMenu visible:true.
         ] ifFalse:[
             "/ an oldStyle popUpMenu
             "/ this is a kludge...
             shiftedMenu := shiftedMenu asOldStylePopUpMenuFor:self.
             "/ would like to add the shifted-menu here
             menu menuView
-                addLabels:(Array with:'-' with:'Refactor')
+                addLabels:(Array with:'-' with:(resources string:'Refactor'))
                 selectors:#( nil refactorings)
                 accelerators:#(nil 'Shift')
                 after:#accept.
@@ -45250,7 +45631,7 @@
     ^ menu
 
     "Modified: / 18-10-2008 / 18:52:50 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 30-06-2011 / 10:47:03 / cg"
+    "Modified: / 01-03-2012 / 20:04:50 / cg"
 !
 
 compareClassWithSmallTeamVersionMenu
@@ -45261,7 +45642,7 @@
 
         m := Menu new.
         hosts := Set new.
-        self selectedClasses value do:[:cls |
+        self selectedClassesValue do:[:cls |
             hosts addAll:(SmallTeam hostsWithChangeForClassOrMetaclass:cls theNonMetaclass).
         ].
         hosts := hosts asOrderedCollection sort.
@@ -45291,7 +45672,7 @@
         SmallTeam notNil ifTrue:[
             m := Menu new.
             hosts := Set new.
-            self selectedMethods value do:[:m |
+            self selectedMethodsValue do:[:m |
                 hosts addAll:(SmallTeam hostsWithChangeForClass:(m mclass) selector:(m selector)).
             ].
             hosts := hosts asOrderedCollection sort.
@@ -45319,7 +45700,7 @@
 
         m := Menu new.
         hosts := Set new.
-        self selectedMethods value do:[:m |
+        self selectedMethodsValue do:[:m |
             hosts addAll:(SmallTeam hostsWithChangeForClass:(m mclass) selector:(m selector)).
         ].
         hosts := hosts asOrderedCollection sort.
@@ -45506,7 +45887,7 @@
 
         m := Menu new.
         hosts := Set new.
-        self selectedMethods value do:[:m |
+        self selectedMethodsValue do:[:m |
             hosts addAll:(SmallTeam hostsWithChangeForClass:(m mclass) selector:(m selector)).
         ].
         hosts := hosts asOrderedCollection sort.
@@ -45703,7 +46084,7 @@
 
         "/ not exactly one method selected;
         "/ generate a menu for all selected method's implementors and sent messages.
-        methods := self selectedMethods value.
+        methods := self selectedMethodsValue.
         methods isEmptyOrNil ifTrue:[
             methods := OrderedCollection new.
             self selectedClassesDo:[:cls |
@@ -45741,7 +46122,7 @@
     ^ m
 
     "Created: / 27-04-2010 / 15:05:52 / cg"
-    "Modified: / 07-05-2010 / 20:00:20 / cg"
+    "Modified: / 28-02-2012 / 16:27:41 / cg"
 !
 
 operationsMenu
@@ -45862,18 +46243,19 @@
 
     m := Menu new.
     m addItem:(MenuItem 
-                label:'Smalltalk method' 
+                label:'Smalltalk Method' 
                 value:[self selectorMenuNewMethod: SmalltalkLanguage instance]).
 
     allLanguages do:[:eachLanguage |
             m addItem:(MenuItem 
-                        label:(eachLanguage name) , ' method'
+                        label:(eachLanguage name) , ' Method'
                         value:[self selectorMenuNewMethod: eachLanguage])
 
     ].
     ^ m
 
     "Created: / 30-12-2009 / 19:43:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-02-2012 / 22:15:06 / cg"
 !
 
 sentMessagesMenu
@@ -46811,11 +47193,10 @@
 !
 
 switchToClass:aClass selector:aSelector
-
-
-    ^self switchToClass: aClass selector: aSelector updateHistory: true
+    ^ self switchToClass: aClass selector: aSelector updateHistory: true
 
     "Modified: / 27-02-2008 / 16:34:46 / janfrog"
+    "Modified (format): / 28-02-2012 / 09:29:44 / cg"
 !
 
 switchToClass:aClass selector:aSelector updateHistory: updateHistory
@@ -46905,7 +47286,7 @@
                 self organizerMode value:(OrganizerCanvas organizerModeNamespace).
                 orgMode := self organizerMode value.
             ] ifFalse:[
-                ((self selectedClasses value ? #()) contains:[:cls | cls nameSpace == aClass]) ifTrue:[^ self ].
+                ((self selectedClassesValue) contains:[:cls | cls nameSpace == aClass]) ifTrue:[^ self ].
 
                 "/ select the first class of that namespace
                 classes := aClass allClasses.
@@ -47015,7 +47396,7 @@
 
     "Created: / 22-02-2008 / 09:05:51 / janfrog"
     "Modified: / 27-02-2008 / 16:45:21 / janfrog"
-    "Modified: / 05-10-2011 / 13:49:41 / cg"
+    "Modified: / 28-02-2012 / 16:53:17 / cg"
 !
 
 switchToClassNameMatching:aMatchString
@@ -47038,6 +47419,10 @@
 switchToClassNameOrSelectorMatching:aMatchString
     |className class implementors answer classesMatchingCaseless|
 
+    aMatchString isEmptyOrNil ifTrue:[
+        ^ self.
+    ].
+
     aMatchString knownAsSymbol ifTrue:[
         class := Smalltalk classNamed:aMatchString.
         class notNil ifTrue:[
@@ -47045,12 +47430,14 @@
             ^ self.
         ].
         classesMatchingCaseless := Smalltalk keys select:[:nm | nm sameAs:aMatchString].
+"/        matchStringLowercase := aMatchString asLowercase.
+"/        classesWithPrefixCaseless := Smalltalk keys select:[:nm | nm asLowercase startsWith:aMatchString].
 
 "/        impl := Smalltalk allImplementorsOf:aMatchString asSymbol.
 "/        impl notEmptyOrNil ifTrue:[
 "/        ].
         (aMatchString first isLetter not
-        or:[ aMatchString first isLowercase]) ifTrue:[
+         or:[ aMatchString first isLowercase]) ifTrue:[
             implementors := SystemBrowser findImplementorsMatching:aMatchString in:(Smalltalk allClasses) ignoreCase:true.
             implementors size > 0 ifTrue:[
                 (classesMatchingCaseless isEmpty and:[implementors size == 1]) ifTrue:[
@@ -47073,13 +47460,15 @@
                                         with:implementors size)
                         fromList:(implementors collect:[:m | m mclass name])
                         values:implementors 
-                        buttons:#('No, Search for a Class') values:#(searchClass) 
+                        buttons:#('No, Search for a Class' 'Show all Implementors') values:#(searchClass browseAllImplementors) 
                         lines:10 cancel:nil
                         postBuildBlock:[:box | box minExtent:300@250].
                 ] ifFalse:[
                     answer := Dialog 
                         choose:(resources 
-                                        stringWithCRs:'No class named "%1.\But there are %2 implementors of it and %3 classes with a similar name.\\Goto one of them ?' 
+                                        stringWithCRs:'No class named "%1".\But there are %2 implementors of it and %3 '
+                                                      , (classesMatchingCaseless size == 1 ifTrue:['class'] ifFalse:['classes'])
+                                                      ,' with a similar name.\\Goto one of them ?' 
                                         with:aMatchString allBold
                                         with:implementors size
                                         with:classesMatchingCaseless size)
@@ -47088,12 +47477,25 @@
                                   ,{'Classes:' colorizeAllWith:Color grey}
                                   ,classesMatchingCaseless)
                         values:(#(nil),implementors,#(nil),classesMatchingCaseless) 
-                        buttons:#('No, Search for a Class') values:#(searchClass) 
+                        buttons:#('No, Search for a Class' 'Show all Implementors') values:#(searchClass browseAllImplementors) 
                         lines:10 cancel:nil
                         postBuildBlock:[:box | box minExtent:300@250].
                 ].
 
                 answer isNil ifTrue:[^ self].
+                answer == #browseAllImplementors ifTrue:[
+                    self
+                        spawnMethodBrowserForSearch:[
+                                SystemBrowser 
+                                    findImplementorsOf:aMatchString 
+                                    in:Smalltalk allClasses 
+                                    ignoreCase:false.
+                            ]
+                        sortBy:#class
+                        in:#newBuffer
+                        label:(resources string:'Implementors of %1' string with:aMatchString).
+                    ^ self                    
+                ].
                 answer ~~ #searchClass ifTrue:[
                     answer isSymbol ifTrue:[
                         self switchToClass:(Smalltalk classNamed:answer).
@@ -47111,8 +47513,8 @@
         self switchToClassNamed:className.
     ]
 
-    "Modified: / 13-02-2000 / 20:57:42 / cg"
     "Modified: / 04-07-2006 / 18:48:25 / fm"
+    "Modified (comment): / 07-03-2012 / 12:05:07 / cg"
 !
 
 switchToClassNamed:aString
@@ -47400,7 +47802,9 @@
 !
 
 hasOnlySmalltalkClassesSelected
-    ^ (self selectedClasses value ? #()) conform:[:cls | cls programmingLanguage isSmalltalk]
+    ^ (self selectedClassesValue) conform:[:cls | cls programmingLanguage isSmalltalk]
+
+    "Modified: / 28-02-2012 / 16:58:46 / cg"
 !
 
 javaMode
@@ -48706,7 +49110,7 @@
                         ].
                     ].
 
-                    (initialList asSet = (self selectedMethods value ? #()) asSet)
+                    (initialList asSet = self selectedMethodsValue asSet)
                     "/ (numFound == 1 and:[initialList first == self theSingleSelectedMethod])
                     ifTrue:[
                         answer := Dialog
@@ -48751,8 +49155,7 @@
             ].
         ].
 
-    "Modified: / 11-05-2010 / 16:51:50 / cg"
-    "Modified (comment): / 06-12-2011 / 11:44:27 / cg"
+    "Modified: / 28-02-2012 / 16:38:36 / cg"
 !
 
 askForMethodAndSpawnSearchTitle:title browserLabel:labelHolderOrBlock searchWith:aSelectorOrBlock searchWhat:searchWhat searchArea:whereDefault
@@ -48926,15 +49329,15 @@
 
     allProjects := Smalltalk allProjectIDs.
 
-    selectedClasses := self selectedClasses value.
+    selectedClasses := self selectedClassesValue.
     selectedClasses notNil ifTrue:[
         classesProjects := selectedClasses
                             collectAll:[:cls |
                                 (cls methodDictionary values
                                     collect:[:m | m package ]) asSet ].
     ] ifFalse:[
-        selectedMethods := self selectedMethods value.
-        selectedMethods notNil ifTrue:[
+        selectedMethods := self selectedMethodsValue.
+        selectedMethods notEmptyOrNil ifTrue:[
             classesProjects := selectedMethods
                                 collectAll:[:mthd |
                                     (mthd mclass methodDictionary values
@@ -48965,7 +49368,7 @@
         suggestions:offered
 
     "Created: / 11-08-2006 / 13:31:34 / cg"
-    "Modified: / 12-10-2006 / 20:51:57 / cg"
+    "Modified: / 28-02-2012 / 16:45:05 / cg"
 !
 
 askForSelector:title allowBuffer:allowBuffer allowBrowser:allowBrowser thenDo:aBlock
@@ -48978,8 +49381,8 @@
     openHow := nil.
 
     selectors := Set new.
-    methods := self selectedMethods value.
-    methods size > 0 ifTrue:[
+    methods := self selectedMethodsValue.
+    methods notEmptyOrNil ifTrue:[
         firstMethod := methods first.
         firstSelector := firstMethod selector.
     ].
@@ -49073,6 +49476,8 @@
         aBlock value:selector asSymbol value:openHow
     ].
     ^ selector
+
+    "Modified: / 28-02-2012 / 16:39:13 / cg"
 !
 
 askIfModified
@@ -49278,7 +49683,7 @@
         initialText := sel asString withoutSeparators
     ] ifFalse:[
         self codeAspect == #method ifTrue:[
-            methods := self selectedMethods value.
+            methods := self selectedMethodsValue.
             methods size > 0 ifTrue:[
                 someMethod := methods first.
                 usedGlobals := someMethod usedGlobals collect:[:eachVar | eachVar asSymbol].
@@ -49321,7 +49726,7 @@
     ^ box
 
     "Created: / 13-02-2000 / 20:56:18 / cg"
-    "Modified: / 11-07-2010 / 16:44:45 / cg"
+    "Modified: / 28-02-2012 / 16:16:21 / cg"
 !
 
 enterBoxForCodeSelectionTitle:title okText:okText
@@ -49483,9 +49888,11 @@
 
     |sel|
 
-    sel := self selectedClasses value.
+    sel := self selectedClassesValue.
     sel size > 0 ifTrue:[^ sel first].
     ^ nil
+
+    "Modified: / 28-02-2012 / 16:45:01 / cg"
 !
 
 anySelectedMethod
@@ -49493,9 +49900,11 @@
 
     |sel|
 
-    sel := self selectedMethods value.
+    sel := self selectedMethodsValue.
     sel size > 0 ifTrue:[^ sel anElement].
     ^ nil
+
+    "Modified: / 28-02-2012 / 16:14:38 / cg"
 !
 
 classIfValidNonMetaClassName:aClassName
@@ -49593,14 +50002,16 @@
 
     |classes|
 
-    classes := self selectedClasses value copy.
+    classes := self selectedClassesValue copy.
     classes size == 0 ifTrue:[
         self isMethodListBrowser ifTrue:[
-            classes := ((self selectedMethods value collect:[:m | m mclass])
+            classes := ((self selectedMethodsClasses)
                             collect:[:each| each theNonMetaclass]) asIdentitySet.
         ]
     ].
     ^ classes
+
+    "Modified: / 28-02-2012 / 16:48:58 / cg"
 !
 
 codePaneAndPluginView
@@ -49732,7 +50143,7 @@
         ].
     ].
     "/ take selected classes name as default
-    (classes := self selectedClasses value) notEmptyOrNil ifTrue:[
+    (classes := self selectedClassesValue) notEmptyOrNil ifTrue:[
         sel := (classes collect:[:cls | cls theNonMetaclass name]) asSortedCollection asStringWith:$|
     ].
     sel isNil ifTrue:[
@@ -49746,6 +50157,8 @@
 "/    ].
 
     ^ sel
+
+    "Modified: / 28-02-2012 / 16:49:25 / cg"
 !
 
 listOfAllNamespaces
@@ -49997,7 +50410,9 @@
 selectedClassesDo:aBlock
     "evaluate aBlock for each selected class."
 
-    (self selectedClasses value ? #()) do:aBlock
+    (self selectedClassesValue) do:aBlock
+
+    "Modified: / 28-02-2012 / 16:53:49 / cg"
 !
 
 selectedClassesInCategories:aCollectionOfCategories
@@ -50041,10 +50456,12 @@
      for private classes, evaluate privateBlock."
 
     self
-        classes:(self selectedClasses value)
+        classes:(self selectedClassesValue)
         nonMetaDo:aBlock
         ifUnloaded:unloadedBlock
         ifPrivate:privateBlock
+
+    "Modified: / 28-02-2012 / 16:53:41 / cg"
 !
 
 selectedClassesWithWaitCursorDo:aBlock
@@ -50150,11 +50567,13 @@
 selectedMethodsDo:aBlock
     "evaluate aBlock for each selected method."
 
-    (self selectedMethods value ? #()) do:aBlock
+    self selectedMethodsValue do:aBlock
+
+    "Modified: / 28-02-2012 / 16:43:14 / cg"
 !
 
 selectedNonMetaclasses
-    ^ (self selectedClasses value ? #()) collect:[:cls | cls theNonMetaclass].
+    ^ (self selectedClassesValue) collect:[:cls | cls theNonMetaclass].
 
     "Created: / 12-09-2006 / 13:40:25 / cg"
 !
@@ -50208,7 +50627,7 @@
     navigationState isFullProtocolBrowser ifTrue:[
         targets := Smalltalk allClassesAndMetaclasses
     ] ifFalse:[
-        targets := self selectedClasses value
+        targets := self selectedClassesValue
     ].
     targets isEmptyOrNil ifTrue:[^self].
     
@@ -50229,7 +50648,7 @@
     ].
 
     "Modified: / 01-08-2010 / 14:39:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 04-08-2011 / 19:05:33 / cg"
+    "Modified: / 28-02-2012 / 16:52:57 / cg"
 !
 
 selectedProtocolsDo:aBlock
@@ -50243,7 +50662,7 @@
     navigationState isFullProtocolBrowser ifTrue:[
         targets := Smalltalk allClassesAndMetaclasses
     ] ifFalse:[
-        targets := self selectedClasses value
+        targets := self selectedClassesValue
     ].
     allIncluded := protocols includes:(BrowserList nameListEntryForALL).
 
@@ -50263,6 +50682,8 @@
             ]
         ]
     ].
+
+    "Modified: / 28-02-2012 / 16:53:00 / cg"
 !
 
 selectedSelectorInCodeViewOrNil
@@ -50292,9 +50713,9 @@
 !
 
 selectedSelectors
-    ^ (self selectedMethods value ? #()) collect:[:mthd | mthd selector]
-
-    "Created: / 11.2.2000 / 10:29:30 / cg"
+    ^ self selectedMethodsValue collect:[:mthd | mthd selector]
+
+    "Created: / 11-02-2000 / 10:29:30 / cg"
 !
 
 selectedTemporaryVariableInCodeViewOrNil
@@ -50433,8 +50854,9 @@
 theSingleSelectedLintRuleHolder
 
     ^BlockValue
-        with:
-            [:generator| | rule size |
+        with:[:generator| 
+            | rule size |
+
             rule := nil.
             size := 0.
             (generator value ? #()) do:[:each|rule := each.size := size + 1].
@@ -50442,6 +50864,7 @@
         argument: self selectedLintRules
 
     "Created: / 05-02-2010 / 12:56:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 01-03-2012 / 15:31:23 / cg"
 !
 
 theSingleSelectedLoadedNonMetaclassOrNil
@@ -50612,7 +51035,6 @@
     ^ navigationState projectListApplication
 ! !
 
-
 !NewSystemBrowser methodsFor:'private-history'!
 
 lastSearchPatterns
@@ -50640,19 +51062,9 @@
 !
 
 rememberSearchPattern:aString
-    LastSearchPatterns isNil ifTrue:[
-        LastSearchPatterns := OrderedCollection new.
-    ].
-    (LastSearchPatterns includes:aString) ifTrue:[
-        LastSearchPatterns remove:aString.
-    ] ifFalse:[
-        LastSearchPatterns size > 20 ifTrue:[
-            LastSearchPatterns removeFirst
-        ]
-    ].
-    LastSearchPatterns addFirst:aString.
-
-    "Modified: / 24-11-2010 / 12:51:31 / cg"
+    self class rememberSearchPattern:aString
+
+    "Modified: / 14-02-2012 / 14:00:36 / cg"
 ! !
 
 !NewSystemBrowser methodsFor:'private-presentation'!
@@ -50691,7 +51103,7 @@
 
     self codeInfoVisible value ifFalse:[^ nil].
 
-    selectedClasses := self selectedClasses value.
+    selectedClasses := self selectedClassesValue.
     selectedClasses isEmptyOrNil ifTrue:[^ nil].
     categories := (selectedClasses collect:[:each|each category]) asSet.
     categories size ~~ 1 ifTrue:[^ nil].
@@ -50707,6 +51119,8 @@
                 with:selectedClasses first name
                 with:selectedClasses size
                 with:category
+
+    "Modified: / 28-02-2012 / 16:45:20 / cg"
 !
 
 classInheritanceInfo
@@ -50958,7 +51372,7 @@
 
     self codeInfoVisible value ifFalse:[^ nil].
 
-    selectedMethods := self selectedMethods value.
+    selectedMethods := self selectedMethodsValue.
     selectedMethods isEmptyOrNil ifTrue:[^ nil].
 
     firstMethod := selectedMethods first.
@@ -50991,6 +51405,8 @@
         ^ prefix.
     ].
     ^ prefix,' - ' , msg.
+
+    "Modified: / 28-02-2012 / 16:16:33 / cg"
 !
 
 getMethodInfoForMethod:aMethod
@@ -51268,7 +51684,7 @@
 updateCategorySelectionForChangedClassSelection
     |classes selectedCategories oldSelectedCategories nameListEntryForALL|
 
-    classes := self selectedClasses value.
+    classes := self selectedClassesValue.
     classes size > 0 ifTrue:[
         "/ category-selection feedBack:
         "/ update the category-selection, if '* all *' is in its selection
@@ -51287,7 +51703,7 @@
     ].
 
     "Created: / 24-02-2000 / 14:10:09 / cg"
-    "Modified: / 12-09-2006 / 13:57:50 / cg"
+    "Modified: / 28-02-2012 / 16:51:33 / cg"
 !
 
 updateInfoForChangedClassSelection
@@ -51302,8 +51718,8 @@
                                   with:singleSelectedClass category allBold).
             ] ifFalse:[
 
-                selectedClasses := self selectedClasses value.
-                categories := ((selectedClasses ? #()) collect:[:cls | cls category]) asSet.
+                selectedClasses := self selectedClassesValue.
+                categories := (selectedClasses collect:[:cls | cls category]) asSet.
                 categories size == 1 ifTrue:[
                     msg := (resources string:'Category: %1'
                                       with:categories anElement allBold).
@@ -51320,12 +51736,14 @@
         ^ self.
     ].
     self clearInfo.
+
+    "Modified: / 28-02-2012 / 16:51:46 / cg"
 !
 
 updateProtocolSelectionForChangedMethodSelection
     |methods selectedProtocolsHolder selectedProtocols oldSelectedProtocols|
 
-    methods := self selectedMethods value.
+    methods := self selectedMethodsValue.
     methods size > 0 ifTrue:[
         "/ protocol-selection feedBack:
         "/ update the protocol-selection, if '* all *' is in its selection
@@ -51342,6 +51760,8 @@
             ].
         ].
     ].
+
+    "Modified: / 28-02-2012 / 16:36:38 / cg"
 !
 
 withActivityNotificationsRedirectedToInfoLabelDo:aBlock
@@ -51570,11 +51990,12 @@
     firstComment := comments first.
     firstComment string withoutSeparators isEmpty ifTrue:[
         firstComment isEndOfLineComment ifFalse:[
-            Dialog
-                warn:'Useless (empty) Method-Comment. Please add flesh or remove it !!'.
+            Dialog warn:'Useless (empty) Method-Comment. Please add flesh or remove it !!'.
             ^ self
         ]
     ].
+
+    "Modified (format): / 06-03-2012 / 18:38:55 / cg"
 !
 
 checkIfSameSemanticsRedefinedWith:methodHere inClass:aClass
@@ -51798,81 +52219,85 @@
 !NewSystemBrowser methodsFor:'private-smalllint'!
 
 loadSmalllint
-    |pkg dlg|
+    |pkg |
 
     pkg := Smalltalk at:#'stx_goodies_refactoryBrowser_lint'.
     (pkg isNil or:[ pkg isFullyLoaded not ]) ifTrue:[
-        Smalltalk loadPackage:#'stx:goodies/refactoryBrowser/lint'
-            asAutoloaded:false
-    ].
-
-    "
-        Tools::NewSystemBrowser basicNew loadSmallLint"
+        Smalltalk loadPackage:#'stx:goodies/refactoryBrowser/lint' asAutoloaded:false
+    ].
+
+    "
+     Tools::NewSystemBrowser basicNew loadSmallLint
+    "
+
     "Created: / 17-04-2010 / 09:40:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-smalllintCheck:anEnvironment against:ruleSetSymbol 
+    "Modified (comment): / 07-03-2012 / 20:06:11 / cg"
+!
+
+smalllintCheck:anEnvironment against:ruleSetSymbol
+    "this is exected by an async task!!"
+
     |rule|
 
-    self 
-        assert:(#( #smalllintRulesAll #smalllintRulesFromUser #smalllintRules ) 
-                includes:ruleSetSymbol).
+    self assert:(#( #smalllintRulesAll #smalllintRulesFromUser #smalllintRules ) includes:ruleSetSymbol).
+
     rule := self perform:ruleSetSymbol asSymbol.
-
-    "JV@2011-01-30: Oops, what the code below was supposed to do?"
-"/    rule isNil ifTrue:[ ^ self ].
-"/    rule isEmpty ifTrue:[
-"/        rule := self smalllintRulesFromUser.
-"/    ].
-    "Changed to"
-    rule isNil ifTrue:[
-        rule := self smalllintRulesFromUser.
-    ].
-    rule isNil ifTrue:[
-        ^self "/User cancelled the dialog
+    rule isNil ifTrue:[ ^ self ].
+"/ cg: that is wrong implemented in RBxxxRule: isEmpty has two meanings:
+"/     for composite: has sub-rules
+"/     for non-composite: has a result
+"/ therefore, isEmpty returns true here, so we will be always asked twice!!
+
+    rule isEmptyInTree ifTrue:[
+        ruleSetSymbol ~~ #smalllintRulesFromUser ifTrue:[
+            rule := self smalllintRulesFromUser.
+            rule isNil ifTrue:[ ^ self ].
+        ]
     ].
 
     self showMessage:'Checking code...'
         while:[
+            |showResult|
+
             self smalllintRunRule:rule onEnvironment:anEnvironment.
-            self 
-                spawnSmalllintBrowserByRuleFor:rule
-                in:#newBuffer
-                label:'SmallLint results for ' , anEnvironment label
+            showResult := true.
+            [rule notNil and:[rule isEmpty]] whileTrue:[
+                (Dialog confirm:'Nothing special found.\\Proceed to select more/different lint rules.' withCRs) ifTrue:[
+                    rule := self smalllintRulesFromUser.
+                    rule notNil ifTrue:[
+                        self smalllintRunRule:rule onEnvironment:anEnvironment.
+                    ].
+                ] ifFalse:[
+                    rule := nil
+                ].
+            ].
+            rule notNil ifTrue:[
+                self 
+                    spawnSmalllintBrowserByRuleFor:rule
+                    in:#newBuffer
+                    label:'SmallLint results for ' , anEnvironment label
+            ].
         ].
 
     "Modified: / 15-12-2008 / 18:51:43 / Josef Grega <gregaj1@fel.cvut.cz>"
     "Modified: / 28-12-2008 / 14:40:01 / bazantj <enter your email here>"
     "Created: / 24-02-2009 / 11:02:57 / Jan Vrany <vranyj1@fel.cvut.cz>"
     "Modified: / 22-07-2009 / 14:38:30 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 23-09-2011 / 15:26:48 / cg"
-    "Modified: / 31-01-2012 / 12:07:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-smalllintRules
-
-   ^LastLintRules 
-        ifNil:[self smalllintRulesFromUser]
-        ifNotNil:[LastLintRules]
-
-
-    "
-        Tools::NewSystemBrowser basicNew smalllintRules
-    "
-
-    "Modified: / 17-04-2010 / 09:42:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-08-2010 / 20:45:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-03-2012 / 20:25:58 / cg"
 !
 
 smalllintRulesAll
-
     | all checks |
+
     all := RBCompositeLintRule allRules.
-    checks := all rules detect:[ :each | each name = 'Lint checks' ].
-    checks rules: (checks rules reject: [ :each | each name = 'Squeak bugs' ]).
+    checks := all rules detect:[ :each | each isLintChecksGroupParent ].
+    checks rules: (checks rules reject: [ :each | each isSqueakBugsGroupParent ]).
     ^all
 
     "Created: / 17-04-2010 / 10:07:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 25-08-2010 / 14:38:21 / Jan Vrany <enter your email here>"
+    "Modified: / 07-03-2012 / 20:26:29 / cg"
 !
 
 smalllintRulesFromUser
@@ -51881,7 +52306,7 @@
     self loadSmalllint.
     dlg := Tools::LintRuleSelectionDialog new.
     dlg selection: (LastLintRules ifNil:[nil"self smalllintRulesAll flattened"] ifNotNil:[LastLintRules flattened]).
-    ^(dlg open; accepted) 
+    ^ (dlg open; accepted) 
             ifTrue:[ LastLintRules := dlg selectionAsRule ] 
             ifFalse:[ nil ].
 
@@ -51892,66 +52317,62 @@
 
     "Created: / 17-04-2010 / 09:41:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 25-08-2010 / 15:35:16 / Jan Vrany <enter your email here>"
+    "Modified (format): / 06-03-2012 / 18:55:09 / cg"
 !
 
 smalllintRulesOrAll
-
     "Returns a set of user-selected SmallLint rules or all rules,
      if no user selection is done"    
 
-   ^LastLintRules notNil ifTrue:[
-        LastLintRules
-    ] ifFalse:[
-        self smalllintRulesAll
-    ]
+   ^LastLintRules notNil 
+        ifTrue:[ LastLintRules ] 
+        ifFalse:[ self smalllintRulesAll ]
 
     "Created: / 23-01-2012 / 10:59:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-smalllintRulesOrAllHolder
-    "Returns a holder on user-selected SmallLint rules
-     (or all rules if user made no selection"
-
-    ^[ self smalllintRulesOrAll ]
-
-    "Modified: / 17-04-2010 / 09:42:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Created: / 23-01-2012 / 11:05:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 07-03-2012 / 20:05:40 / cg"
 !
 
 smalllintRunRule: aLintRule onEnvironment: anEnvironment
+    "run a checker in the background"
 
     | rules |
+
     rules := aLintRule flattened.
-    rules withIndexDo:
-        [:rule :index|
+    rules withIndexDo:[:rule :index|
         ProgressNotification new
             messageText: ('Checking: ', rule name);
             parameter: (rules size / 100) * index;
             raiseRequest.
-       (SmalllintChecker runRule: rule onEnvironment: anEnvironment)]
+       (SmalllintChecker runRule: rule onEnvironment: anEnvironment)
+    ].
+    ProgressNotification new
+        messageText: ('Done');
+        parameter: 100;
+        raiseRequest.
 
     "Modified: / 15-12-2008 / 18:51:43 / Josef Grega <gregaj1@fel.cvut.cz>"
     "Modified: / 28-12-2008 / 14:40:01 / bazantj <enter your email here>"
     "Modified: / 22-07-2009 / 14:38:30 / Jan Vrany <vranyj1@fel.cvut.cz>"
     "Created: / 28-08-2010 / 12:12:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 01-03-2012 / 15:22:20 / cg"
 !
 
 spawnSmalllintBrowserByRuleFor: result in:where label:labelOrNil
-
     ^ self
         newBrowserOrBufferDependingOn:where
         label:labelOrNil
         forSpec: #smallLintByRuleResultBrowserSpec
-        setupWith:[:browser | |methodGenerator classGenerator ruleGenerator |
+        setupWith:[:browser | 
+            |methodGenerator classGenerator ruleGenerator|
+
             ruleGenerator :=
-                Iterator on:
-                    [:whatToDo|
+                Iterator on:[:whatToDo|
                     result failedRules do:whatToDo].
 
             methodGenerator :=
-                Iterator on:
-                    [:whatToDo|
+                Iterator on: [:whatToDo|
                     | selectedRules selectedClasses failedMethods |
+
                     selectedClasses := browser selectedClasses value.
                     selectedRules := browser selectedLintRules value.
                     failedMethods := OrderedCollection new.
@@ -51978,7 +52399,11 @@
             browser meta
                 onChangeSend: #changed to: browser selectorListGenerator.
 
-
+            "/ cg: does not work - why?
+            result failedRules size == 1 ifTrue:[
+                "/ autoselect the first one
+                browser selectedLintRules value:(result failedRules).
+            ].
 
             "/self halt.
             "
@@ -52086,7 +52511,7 @@
     "Created: / 02-02-2010 / 20:05:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 02-02-2010 / 21:46:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 25-08-2010 / 10:30:33 / Jan Vrany <enter your email here>"
-    "Modified: / 04-08-2011 / 19:05:35 / cg"
+    "Modified: / 01-03-2012 / 19:52:57 / cg"
 ! !
 
 !NewSystemBrowser methodsFor:'private-syntax coloring'!
@@ -52649,10 +53074,10 @@
 searchFieldCreated:anInputField
     anInputField emptyFieldReplacementText:
         "/(resources string:'Class Search & History').
-        (resources string:'Search (Ctrl-L)').
+        (resources string:'Search Class/Selector (Ctrl-L)').
 
     "Modified: / 09-02-2010 / 21:56:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 15-07-2011 / 19:14:45 / cg"
+    "Modified: / 07-03-2012 / 11:59:16 / cg"
 !
 
 searchFieldPanelCreated:aPanel
@@ -52830,8 +53255,8 @@
         aMethod isNil ifTrue:[
             "/ no method selected
             aClassOrNil isNil ifTrue:[
-                (self selectedClasses value isEmptyOrNil
-                and:[ self selectedCategories value isEmptyOrNil
+                (self selectedClassesValue isEmptyOrNil
+                and:[ self selectedCategoriesValue isEmptyOrNil
                 and:[ self selectedProjects value isEmptyOrNil
                 and:[ navigationState isNameSpaceBrowser not
                       or:[ self selectedNamespaces value isEmptyOrNil ] ]]]) ifTrue:[
@@ -52862,10 +53287,10 @@
 "/            tabList add:'Lint'.            actionList add:[ self updateCodeEditorVisibilityForLintOfMethod:aMethod ].
         ].
 
-        self selectedMethods value size == 2 ifTrue:[
+        self selectedMethodsValue size == 2 ifTrue:[
             tabList add:'Diff'.
-            actionList add:[ self updateDiffViewerVisibilityFor:(self selectedMethods value first source)
-                                                            and:(self selectedMethods value second source) ].
+            actionList add:[ self updateDiffViewerVisibilityFor:(self selectedMethodsValue first source)
+                                                            and:(self selectedMethodsValue second source) ].
         ].
     ] ifFalse:[
         tabList add:'Source'.               actionList add:[ self updateCodeEditorVisibilityForSource ].
@@ -52910,7 +53335,7 @@
     ].
 
     "Created: / 17-08-2006 / 16:44:51 / cg"
-    "Modified: / 06-09-2006 / 19:22:45 / cg"
+    "Modified: / 28-02-2012 / 17:02:07 / cg"
 ! !
 
 !NewSystemBrowser methodsFor:'startup & release'!
@@ -53859,6 +54284,14 @@
                                or:[navigationState isProtocolOrFullProtocolBrowser
                                or:[navigationState isChainBrowser ]]].
 
+    "/
+    "/ double clicking on wrapped method removes the wrap
+    "/
+    aMethod isWrapped ifTrue:[
+        self debugMenuRemoveBreakOrTrace.
+        ^ self
+    ].
+
     mSelector := aMethod selector.
     mClass := aMethod mclass.
     mClass isNil ifTrue:[
@@ -53876,14 +54309,6 @@
     ].
 
     "/
-    "/ double clicking on wrapped method removes the wrap
-    "/
-    aMethod isWrapped ifTrue:[
-        self debugMenuRemoveBreakOrTrace.
-        ^ self
-    ].
-
-    "/
     "/ double clicking on a resource-methods opens
     "/ an appropriate editor
     "/
@@ -53934,7 +54359,7 @@
         spawnMethodInheritanceBrowserFor:(Array with:mSelector)
         in:#newBuffer
 
-    "Modified: / 05-07-2010 / 15:53:42 / cg"
+    "Modified: / 14-02-2012 / 11:11:58 / cg"
 !
 
 methodDoubleClickedAt:index
@@ -54145,9 +54570,11 @@
 
     self
         browseVarRefsToAny:names
-        classes:self selectedClasses value
+        classes:self selectedClassesValue
         variables:type access:#readOrWrite all:true
         title:title  in:#newBuffer
+
+    "Modified: / 28-02-2012 / 16:51:54 / cg"
 ! !
 
 !NewSystemBrowser methodsFor:'user actions-accepting'!
@@ -54164,7 +54591,7 @@
     language := languageOrNil 
                     ifNotNil: [languageOrNil]
                     ifNil: [self hasMethodSelected
-                            ifTrue:[self selectedMethods value first programmingLanguage]
+                            ifTrue:[self selectedMethodsValue first programmingLanguage]
                             ifFalse:[cls programmingLanguage]].
 
     "/ a quick parse for the selector ...
@@ -54331,7 +54758,11 @@
 answer:(self currentNamespace)
 do:[
                             ("self canUseRefactoringSupport"
-                            (language isSmalltalk) and:[(Smalltalk at:cls theNonMetaclass name)==cls and:[cls programmingLanguage == language]]) ifTrue:[
+                             language isSmalltalk 
+                             and:[(Smalltalk at:cls theNonMetaclass name)==cls 
+                             and:[cls programmingLanguage == language
+                             and:[InteractiveAddMethodChange notNil]]]
+                            ) ifTrue:[
                                 "/ cg: Q: is the AddMethodChange prepared for languages ?
                                 change := InteractiveAddMethodChange compile:code in:cls classified:cat.
                                 change controller:codeView.
@@ -54411,8 +54842,7 @@
     ^ returnValue.
 
     "Created: / 30-12-2009 / 20:01:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 12-09-2011 / 11:10:26 / cg"
-    "Modified (format): / 06-12-2011 / 11:50:34 / cg"
+    "Modified: / 28-02-2012 / 16:14:33 / cg"
 !
 
 askForInitialApplicationCodeFor:aClass
@@ -54485,7 +54915,7 @@
         ]
     ].
     cls isNil ifTrue:[
-        classes := self selectedClasses value.
+        classes := self selectedClassesValue.
         classes isEmptyOrNil ifTrue:[
             self warn:'oops class is gone; reselect and try again'.
             ^ nil
@@ -54520,7 +54950,7 @@
     ].
     ^ cls
 
-    "Modified: / 12-10-2006 / 21:53:50 / cg"
+    "Modified: / 28-02-2012 / 16:48:55 / cg"
 !
 
 doAcceptClassAspect:aspect get:getSelector set:setSelector code:theCode
@@ -54904,7 +55334,7 @@
     mthd notNil ifTrue:[
         cat := mthd category
     ] ifFalse:[
-        protocols := ((self selectedMethods value ? #()) collect:[:m | m category]) asSet.
+        protocols := (self selectedMethodsValue collect:[:m | m category]) asSet.
         protocols size == 1 ifTrue:[
             cat := protocols first
         ] ifFalse:[
@@ -54921,6 +55351,8 @@
         ]
     ].
     ^ cat
+
+    "Modified: / 28-02-2012 / 16:42:53 / cg"
 !
 
 selectorAndNameOfMethodFromCode:someCode in:aClass
@@ -55212,11 +55644,13 @@
     "load an autoloaded class.
      Invoked on doubleClick on a class or via the menu"
 
-    self loadClasses:self selectedClasses value.
+    self loadClasses:self selectedClassesValue.
 
     "/ to force update.
     "/ (I guess, this is not needed)
-    self selectedClasses value:(self selectedClasses value copy).
+    self selectedClasses value:(self selectedClassesValue copy).
+
+    "Modified: / 28-02-2012 / 16:45:33 / cg"
 !
 
 classMenuUnload
@@ -55225,9 +55659,9 @@
     self unloadClasses:self selectedNonMetaclasses.
     "/ to force update.
     "/ (I guess, this is not needed)
-    self selectedClasses value:(self selectedClasses value copy).
-
-    "Modified: / 12-09-2006 / 13:48:12 / cg"
+    self selectedClasses value:(self selectedClassesValue copy).
+
+    "Modified: / 28-02-2012 / 16:48:42 / cg"
 !
 
 classReload
@@ -55235,14 +55669,14 @@
 
     |classes names|
 
-    classes := self selectedClasses value.
+    classes := self selectedClassesValue.
     names := classes collect:[:cls | cls name].
     self unloadClasses:classes.
     self loadClasses:(names collect:[:nm | Smalltalk classNamed:nm]).
 
     "/ to force update.
     "/ (I guess, this is not needed)
-    self selectedClasses value:(self selectedClasses value copy).
+    self selectedClasses value:(self selectedClassesValue copy).
 
     "Created: / 04-07-2011 / 18:10:08 / cg"
 !
@@ -55830,11 +56264,15 @@
     "Created: / 28-08-2010 / 11:47:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-showMessage:message while:block 
-    |state workerBlock worker|
+showMessage:message while:block
+    "used for long-during lint operations: show a progressbar and a message in the top pane,
+     execute block in another (background-) thread"
+
+    |state worker|
 
     state := self navigationState.
-    workerBlock := [
+    worker := 
+        [
             self showMessagePane:#progressInfoSpec in:state.
             block on:UserNotification
                 do:[:notification | 
@@ -55844,13 +56282,14 @@
                     ].
                     notification proceed
                 ]
-        ].
-    worker := workerBlock newProcess 
-                addExitAction:[ self hideMessagePaneIn:state ].
+        ] newProcess. 
+    worker addExitAction:[ self hideMessagePaneIn:state ].
+    worker priorityRange:(4 to:8).
     state worker:worker.
     worker resume.
 
     "Created: / 28-08-2010 / 20:10:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 06-03-2012 / 18:37:40 / cg"
 !
 
 showMessagePane: spec 
@@ -55913,15 +56352,15 @@
 !NewSystemBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Tools__NewSystemBrowser.st 7940 2012-03-17 20:05:16Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1734 2012/03/16 22:21:13 stefan Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1702 2012/01/26 13:58:43 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1734 2012/03/16 22:21:13 stefan Exp §'
 !
 
 version_SVN
-    ^ '$Id: Tools__NewSystemBrowser.st 7940 2012-03-17 20:05:16Z vranyj1 $'
+    ^ '$Id: Tools__NewSystemBrowser.st 7952 2012-03-21 17:50:14Z vranyj1 $'
 ! !
 
 NewSystemBrowser initialize!