Tools__LintRuleDetail.st
branchjv
changeset 17379 028adf14bc05
parent 16571 cf319f2e56d0
parent 17297 78fd75347bc3
--- a/Tools__LintRuleDetail.st	Wed Jan 25 19:02:59 2017 +0000
+++ b/Tools__LintRuleDetail.st	Wed Feb 01 11:36:30 2017 +0000
@@ -29,7 +29,7 @@
 
 ApplicationModel subclass:#LintRuleDetail
 	instanceVariableNames:'ruleHolder rationaleVisibleHolder rationalView
-		selectedMethodsHolder'
+		selectedMethodsHolder selectedClassesHolder'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-Lint'
@@ -63,6 +63,23 @@
  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  OTHER DEALINGS IN THE SOFTWARE.
 "
+!
+
+documentation
+"
+    Embeddable list to display affected methods from a selected SmallLint rules.
+    (this is embedded in the browser when showing lint check outcomes)
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
 ! !
 
 !LintRuleDetail class methodsFor:'help specs'!
@@ -196,6 +213,7 @@
         #ruleHolder
         #ruleRationaleAspect
         #selectedMethodsHolder
+        #selectedClassesHolder
       ).
 
     "Modified: / 01-03-2012 / 16:31:04 / cg"
@@ -208,6 +226,7 @@
 
     rule := self ruleHolder value.
     rule isNil ifTrue:[^ self].
+    
     ruleClass := rule class.
     (ruleClass implements:#rationale) ifTrue:[
         sel := #rationale.
@@ -233,7 +252,7 @@
     "Modified: / 01-03-2012 / 08:50:20 / cg"
 !
 
-rationaleVisibleHolder:something
+rationaleVisibleHolder:aValueHolder
     "set the 'rationaleVisibleHolder' value holder (automatically generated)"
 
     |oldValue newValue|
@@ -242,7 +261,7 @@
         oldValue := rationaleVisibleHolder value.
         rationaleVisibleHolder removeDependent:self.
     ].
-    rationaleVisibleHolder := something.
+    rationaleVisibleHolder := aValueHolder.
     rationaleVisibleHolder notNil ifTrue:[
         rationaleVisibleHolder addDependent:self.
     ].
@@ -263,7 +282,7 @@
     "Modified: / 01-03-2012 / 08:51:03 / cg"
 !
 
-ruleHolder:something
+ruleHolder:aValueHolder
     "set the 'ruleHolder' value holder (automatically generated)"
 
     |oldValue newValue|
@@ -272,7 +291,7 @@
         oldValue := ruleHolder value.
         ruleHolder removeDependent:self.
     ].
-    ruleHolder := something.
+    ruleHolder := aValueHolder.
     ruleHolder notNil ifTrue:[
         ruleHolder addDependent:self.
     ].
@@ -311,7 +330,7 @@
 
     (holder := builder bindingAt:#ruleRationaleAspect) isNil ifTrue:[
         "cannot use a BlockValue linked on the ruleHolder for the
-         ruleRationaleAspect, because the ruleHolder maight be changed dynamically
+         ruleRationaleAspect, because the ruleHolder might be changed dynamically
          via the aspect-linking mechanism"
 "/        holder := (AspectAdaptor forAspect: #rationale) subjectChannel: self ruleHolder.
         holder := '' asValue.
@@ -323,6 +342,35 @@
     "Modified: / 01-03-2012 / 15:29:16 / cg"
 !
 
+selectedClassesHolder
+    "return/create the 'selectedClassesHolder' value holder (automatically generated)"
+
+    selectedClassesHolder isNil ifTrue:[
+        selectedClassesHolder := #() asValue.
+        selectedClassesHolder addDependent:self.
+    ].
+    ^ selectedClassesHolder
+!
+
+selectedClassesHolder:aValueHolder
+    "set the 'selectedClassesHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    selectedClassesHolder notNil ifTrue:[
+        oldValue := selectedClassesHolder value.
+        selectedClassesHolder removeDependent:self.
+    ].
+    selectedClassesHolder := aValueHolder.
+    selectedClassesHolder notNil ifTrue:[
+        selectedClassesHolder addDependent:self.
+    ].
+    newValue := selectedClassesHolder value.
+    oldValue ~= newValue ifTrue:[
+        self update:#value with:newValue from:selectedClassesHolder.
+    ].
+!
+
 selectedMethodsHolder
     "return/create the 'selectedMethodsHolder' value holder (automatically generated)"
 
@@ -333,7 +381,7 @@
     ^ selectedMethodsHolder
 !
 
-selectedMethodsHolder:something
+selectedMethodsHolder:aValueHolder
     "set the 'selectedMethodsHolder' value holder (automatically generated)"
 
     |oldValue newValue|
@@ -342,7 +390,7 @@
         oldValue := selectedMethodsHolder value.
         selectedMethodsHolder removeDependent:self.
     ].
-    selectedMethodsHolder := something.
+    selectedMethodsHolder := aValueHolder.
     selectedMethodsHolder notNil ifTrue:[
         selectedMethodsHolder addDependent:self.
     ].
@@ -367,8 +415,17 @@
          ^ self.
     ].
     changedObject == selectedMethodsHolder ifTrue:[
-        "/ cg: preparations to show method-specific text in rationale/detail
-        "/ view. Not yet done...
+        "/ cg: preparations to show method-specific text in rationale/detail view
+        "/ Not yet done...
+        self updateRule.
+        ^ self 
+    ].
+
+    changedObject == selectedClassesHolder ifTrue:[
+        "/ cg: preparations to show class-specific text in rationale/detail view
+        "/ Not yet done...
+        self updateRule.
+        ^ self 
     ].
 
     super update:something with:aParameter from:changedObject
@@ -382,10 +439,23 @@
      ruleRationaleAspect, because the ruleHolder maight be changed dynamically
      via the aspect-linking mechanism"
 
-    |rule|
+    |rule text|
 
+    text := ''.
+    
     rule := self ruleHolder value.
-    self ruleRationaleAspect value: (rule isNil ifTrue:[''] ifFalse:[rule rationaleWithAnchor]).
+    rule notNil ifTrue:[
+        selectedMethodsHolder value size == 1 ifTrue:[
+            text := rule rationaleWithAnchorForMethod:(selectedMethodsHolder value first).
+        ] ifFalse:[    
+            selectedClassesHolder value size == 1 ifTrue:[
+                text := rule rationaleWithAnchorForClass:(selectedClassesHolder value first).
+            ] ifFalse:[    
+                text := rule rationaleWithAnchor.
+            ]
+        ]    
+    ].
+    self ruleRationaleAspect value:text.
 
     "Created: / 01-03-2012 / 15:28:18 / cg"
 !