class: Tools::NewSystemBrowser
authorClaus Gittinger <cg@exept.de>
Sun, 09 Jun 2013 11:07:28 +0200
changeset 12885 18e6f38c7b98
parent 12884 399d8af76101
child 12886 7b0e8db1cf42
class: Tools::NewSystemBrowser added: #hasClassOrMethodSelected #hasClassOrMethodSelectedHolder #updateToolBarButtonEnablement changed:5 methods category of: lint checking methods in a methodlist
Tools__NewSystemBrowser.st
--- a/Tools__NewSystemBrowser.st	Fri Jun 07 15:30:56 2013 +0200
+++ b/Tools__NewSystemBrowser.st	Sun Jun 09 11:07:28 2013 +0200
@@ -472,13 +472,16 @@
      the UIHelpTool may not be able to read the specification."
 
     "
-     UIHelpTool openOnClass:Tools::NewSystemBrowser
+     UIHelpTool openOnClass:Tools::NewSystemBrowser    
     "
 
     <resource: #help>
 
     ^ super helpSpec addPairsFrom:#(
 
+#runLintOnClasses
+''
+
 #runTestCases
 ''
 
@@ -17117,7 +17120,7 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
         (
          (MenuItem
@@ -17252,12 +17255,12 @@
           )
          (MenuItem
             activeHelpKey: runLintOnClasses
-            enabled: hasClassSelectedHolder
+            enabled: hasClassOrMethodSelectedHolder
             label: 'Run Static Analysis (Lint)'
             itemValue: runLint
             nameKey: RunLint
             isButton: true
-            submenu:
+            submenu: 
            (Menu
               (
                (MenuItem
@@ -20027,6 +20030,20 @@
     ^ self selectedClassNameInCodeViewOrNil notNil
 !
 
+hasClassOrMethodSelected
+    ^ self selectedClassesValue size > 0
+    or:[ self selectedMethodsValue size > 0 ]
+!
+
+hasClassOrMethodSelectedHolder
+    |holder|
+
+    (holder := builder bindingAt:#hasClassOrMethodSelectedHolder) isNil ifTrue:[
+        builder aspectAt:#hasClassOrMethodSelectedHolder put:(holder := false asValue).
+    ].
+    ^ holder.
+!
+
 hasClassSelected
     ^ self selectedClassesValue size > 0
 
@@ -22231,6 +22248,7 @@
     "/ self delayedUpdateCode.
     self setDoitActionForClass.
     self enqueueDelayedUpdateCode.
+    self updateToolBarButtonEnablement.
 
     "Modified: / 01-06-2012 / 23:01:52 / cg"
 !
@@ -22275,7 +22293,7 @@
     self hasInstrumentedMethodSelectedHolder value:(self hasInstrumentedMethodSelected).
 
     "/ if showing history or log,
-    "/ dont update codeView, as long as no protocol is selected
+    "/ don't update codeView, as long as no protocol is selected
     ((codeAspect := self codeAspect) == #repositoryLog
     or:[codeAspect == #repositoryHistory]) ifTrue:[
         self selectedMethodsValue size == 0 ifTrue:[
@@ -22286,6 +22304,7 @@
     self enqueueDelayedUpdateCodeWithAutoSearch.
     self hasSingleResourceMethodSelectedHolder value:(self hasSingleResourceMethodSelected).
     self updateExecuteMethodVisibility.
+    self updateToolBarButtonEnablement.
     self setDoitActionForClass.
 
     "/ self showMethodInfo.
@@ -23273,6 +23292,10 @@
     "Created: / 01-06-2012 / 23:01:35 / cg"
 !
 
+updateToolBarButtonEnablement
+    self hasClassOrMethodSelectedHolder value:self hasClassOrMethodSelected.
+!
+
 variableSelectionChanged
     "variable selection changed by user interaction"
 
@@ -26717,50 +26740,53 @@
 
     self assert:(#( #smalllintRulesAll #smalllintRulesFromUser #smalllintRules ) includes:ruleSetSymbol).
 
-    rule := self perform:ruleSetSymbol asSymbol.
-    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 ].
-        ]
-    ].
-
-    runRules :=
-        [
-            |showResult|
-
-            self smalllintRunRule:rule onEnvironment:anEnvironment.
-            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
-            ].
-        ].
-
-    "background operation (Jan's pref) makes it difficult to stop and debug...)"
-    UserPreferences current runLintChecksInBackground ifTrue:[
-        self showMessage:'Checking code...' whileExecutingBackgroundAction:runRules.
-    ] ifFalse:[
-        self withWaitCursorDo:runRules
-    ].
+    self withWaitCursorDo:[
+        rule := self perform:ruleSetSymbol asSymbol.
+        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 ].
+            ]
+        ].
+
+        runRules :=
+            [
+                |showResult|
+
+                self smalllintRunRule:rule onEnvironment:anEnvironment.
+                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
+                ].
+            ].
+
+        "background operation (Jan's pref) makes it difficult to stop and debug...)"
+        UserPreferences current runLintChecksInBackground ifTrue:[
+            self showMessage:'Checking code...' whileExecutingBackgroundAction:runRules.
+        ] ifFalse:[
+            runRules value
+        ].
+    ]
 
     "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>"
@@ -37305,7 +37331,6 @@
     "Modified: / 28-02-2012 / 16:27:44 / cg"
 ! !
 
-
 !NewSystemBrowser methodsFor:'menu actions-namespace'!
 
 nameSpaceMenuCheckOut
@@ -58499,15 +58524,15 @@
 !NewSystemBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1894 2013-06-07 12:22:45 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1895 2013-06-09 09:07:28 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1894 2013-06-07 12:22:45 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1895 2013-06-09 09:07:28 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: Tools__NewSystemBrowser.st,v 1.1894 2013-06-07 12:22:45 cg Exp $'
+    ^ '$Id: Tools__NewSystemBrowser.st,v 1.1895 2013-06-09 09:07:28 cg Exp $'
 ! !