Tools__LintRuleList.st
changeset 16438 a40d4e889605
parent 16426 a33263131d60
child 16442 2bf5919298e3
--- a/Tools__LintRuleList.st	Wed May 04 18:56:24 2016 +0200
+++ b/Tools__LintRuleList.st	Wed May 04 19:07:26 2016 +0200
@@ -192,13 +192,19 @@
      #(Menu
         (
          (MenuItem
+            label: 'Run this Rule Again'
+            itemValue: runRuleAgain
+          )
+         (MenuItem
             label: '-'
-            isVisible: false
           )
          (MenuItem
-            label: 'Inspect'
-            itemValue: menuInspect
-            translateLabel: true
+            label: 'Inspect Rule'
+            itemValue: menuInspectRule
+          )
+         (MenuItem
+            label: 'Browse Rule Class'
+            itemValue: menuBrowseRuleClass
           )
          )
         nil
@@ -334,15 +340,25 @@
 !
 
 modeHolder
-
-    modeHolder ifNil:
-        [modeHolder := ValueHolder with: #display].
+    "the mode - can run in select or in display modes.
+     select is to choose a set of rules;
+     display for presentation of results (in a browser).
+     See documentation for details"
+     
+    modeHolder isNil ifTrue:[
+        modeHolder := ValueHolder with: #display
+    ].
     ^modeHolder
 
     "Modified: / 15-04-2010 / 20:56:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 modeHolder:aValueModel
+    "the mode - can run in select or in display modes.
+     select is to choose a set of rules;
+     display for presentation of results (in a browser).
+     See documentation for details"
+
     modeHolder := aValueModel.
 !
 
@@ -420,8 +436,9 @@
 
     | itemIndex item |
 
-    button ~= 1 ifTrue:[^aView buttonPress:button x:x y:y].
-    self modeHolder value ~~ #select ifTrue:[^aView buttonPress:button x:x y:y].
+    (button == 1 and:[self modeHolder value == #select]) ifFalse:[
+        ^ aView buttonPress:button x:x y:y
+    ].
 
     itemIndex := aView yVisibleToLineNr:y.
     itemIndex isNil ifTrue:[^self].
@@ -492,9 +509,14 @@
     | menu |
 
     super initialize.
-    menu := self menuFor: #menu.
-    menu isArray ifTrue:[ menu := Menu decodeFromLiteralArray: menu ].
-    menuHolder := ValueHolder with: menu.
+    
+    menuHolder := 
+        [
+            menu := self menuFor: #menu.
+            menu isArray ifTrue:[ menu := Menu decodeFromLiteralArray: menu ].
+            menu
+        ].
+    
     "/ self selection: Set new.
 
     "Modified: / 25-08-2010 / 15:24:45 / Jan Vrany <enter your email here>"
@@ -503,14 +525,30 @@
 
 !LintRuleList methodsFor:'menu actions'!
 
-menuInspect
+menuBrowseRuleClass
+    | selection |
 
+    selection := self listSelection value.
+    selection size = 1 ifTrue:[selection anyOne rule class browse].
+    selection size > 1 ifTrue:[SystemBrowser 
+                                    browseClasses:(selection collect:[:e|e rule class])
+                                    label:'Rule classes'].
+!
+
+menuInspectRule
     | selection |
+
     selection := self listSelection value.
     selection size = 1 ifTrue:[selection anyOne rule inspect].
     selection size > 1 ifTrue:[(selection collect:[:e|e rule]) inspect].
+!
 
-    "Modified: / 25-08-2010 / 14:25:24 / Jan Vrany <enter your email here>"
+runRuleAgain
+    self selectedLintRules value do:[:eachRule |
+        eachRule run.
+        self updateList.
+        self updateOutputGenerator        
+    ].    
 ! !
 
 !LintRuleList methodsFor:'private'!