Tools__LintRuleDetail.st
branchjv
changeset 17379 028adf14bc05
parent 16571 cf319f2e56d0
parent 17297 78fd75347bc3
equal deleted inserted replaced
17304:3eea1002b141 17379:028adf14bc05
    27 
    27 
    28 "{ NameSpace: Tools }"
    28 "{ NameSpace: Tools }"
    29 
    29 
    30 ApplicationModel subclass:#LintRuleDetail
    30 ApplicationModel subclass:#LintRuleDetail
    31 	instanceVariableNames:'ruleHolder rationaleVisibleHolder rationalView
    31 	instanceVariableNames:'ruleHolder rationaleVisibleHolder rationalView
    32 		selectedMethodsHolder'
    32 		selectedMethodsHolder selectedClassesHolder'
    33 	classVariableNames:''
    33 	classVariableNames:''
    34 	poolDictionaries:''
    34 	poolDictionaries:''
    35 	category:'Interface-Lint'
    35 	category:'Interface-Lint'
    36 !
    36 !
    37 
    37 
    60  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
    60  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
    61  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
    61  HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
    62  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    62  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
    63  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
    63  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
    64  OTHER DEALINGS IN THE SOFTWARE.
    64  OTHER DEALINGS IN THE SOFTWARE.
       
    65 "
       
    66 !
       
    67 
       
    68 documentation
       
    69 "
       
    70     Embeddable list to display affected methods from a selected SmallLint rules.
       
    71     (this is embedded in the browser when showing lint check outcomes)
       
    72 
       
    73     [author:]
       
    74         Jan Vrany <jan.vrany@fit.cvut.cz>
       
    75 
       
    76     [instance variables:]
       
    77 
       
    78     [class variables:]
       
    79 
       
    80     [see also:]
       
    81 
    65 "
    82 "
    66 ! !
    83 ! !
    67 
    84 
    68 !LintRuleDetail class methodsFor:'help specs'!
    85 !LintRuleDetail class methodsFor:'help specs'!
    69 
    86 
   194 
   211 
   195     ^ #(
   212     ^ #(
   196         #ruleHolder
   213         #ruleHolder
   197         #ruleRationaleAspect
   214         #ruleRationaleAspect
   198         #selectedMethodsHolder
   215         #selectedMethodsHolder
       
   216         #selectedClassesHolder
   199       ).
   217       ).
   200 
   218 
   201     "Modified: / 01-03-2012 / 16:31:04 / cg"
   219     "Modified: / 01-03-2012 / 16:31:04 / cg"
   202 ! !
   220 ! !
   203 
   221 
   206 browseLintRule
   224 browseLintRule
   207     |rule ruleClass sel|
   225     |rule ruleClass sel|
   208 
   226 
   209     rule := self ruleHolder value.
   227     rule := self ruleHolder value.
   210     rule isNil ifTrue:[^ self].
   228     rule isNil ifTrue:[^ self].
       
   229     
   211     ruleClass := rule class.
   230     ruleClass := rule class.
   212     (ruleClass implements:#rationale) ifTrue:[
   231     (ruleClass implements:#rationale) ifTrue:[
   213         sel := #rationale.
   232         sel := #rationale.
   214     ].
   233     ].
   215     UserPreferences systemBrowserClass
   234     UserPreferences systemBrowserClass
   231 
   250 
   232     "Modified: / 04-08-2011 / 21:39:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   251     "Modified: / 04-08-2011 / 21:39:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   233     "Modified: / 01-03-2012 / 08:50:20 / cg"
   252     "Modified: / 01-03-2012 / 08:50:20 / cg"
   234 !
   253 !
   235 
   254 
   236 rationaleVisibleHolder:something
   255 rationaleVisibleHolder:aValueHolder
   237     "set the 'rationaleVisibleHolder' value holder (automatically generated)"
   256     "set the 'rationaleVisibleHolder' value holder (automatically generated)"
   238 
   257 
   239     |oldValue newValue|
   258     |oldValue newValue|
   240 
   259 
   241     rationaleVisibleHolder notNil ifTrue:[
   260     rationaleVisibleHolder notNil ifTrue:[
   242         oldValue := rationaleVisibleHolder value.
   261         oldValue := rationaleVisibleHolder value.
   243         rationaleVisibleHolder removeDependent:self.
   262         rationaleVisibleHolder removeDependent:self.
   244     ].
   263     ].
   245     rationaleVisibleHolder := something.
   264     rationaleVisibleHolder := aValueHolder.
   246     rationaleVisibleHolder notNil ifTrue:[
   265     rationaleVisibleHolder notNil ifTrue:[
   247         rationaleVisibleHolder addDependent:self.
   266         rationaleVisibleHolder addDependent:self.
   248     ].
   267     ].
   249     newValue := rationaleVisibleHolder value.
   268     newValue := rationaleVisibleHolder value.
   250     oldValue ~~ newValue ifTrue:[
   269     oldValue ~~ newValue ifTrue:[
   261     ^ ruleHolder
   280     ^ ruleHolder
   262 
   281 
   263     "Modified: / 01-03-2012 / 08:51:03 / cg"
   282     "Modified: / 01-03-2012 / 08:51:03 / cg"
   264 !
   283 !
   265 
   284 
   266 ruleHolder:something
   285 ruleHolder:aValueHolder
   267     "set the 'ruleHolder' value holder (automatically generated)"
   286     "set the 'ruleHolder' value holder (automatically generated)"
   268 
   287 
   269     |oldValue newValue|
   288     |oldValue newValue|
   270 
   289 
   271     ruleHolder notNil ifTrue:[
   290     ruleHolder notNil ifTrue:[
   272         oldValue := ruleHolder value.
   291         oldValue := ruleHolder value.
   273         ruleHolder removeDependent:self.
   292         ruleHolder removeDependent:self.
   274     ].
   293     ].
   275     ruleHolder := something.
   294     ruleHolder := aValueHolder.
   276     ruleHolder notNil ifTrue:[
   295     ruleHolder notNil ifTrue:[
   277         ruleHolder addDependent:self.
   296         ruleHolder addDependent:self.
   278     ].
   297     ].
   279     newValue := ruleHolder value.
   298     newValue := ruleHolder value.
   280     oldValue ~~ newValue ifTrue:[
   299     oldValue ~~ newValue ifTrue:[
   309 
   328 
   310     |holder|
   329     |holder|
   311 
   330 
   312     (holder := builder bindingAt:#ruleRationaleAspect) isNil ifTrue:[
   331     (holder := builder bindingAt:#ruleRationaleAspect) isNil ifTrue:[
   313         "cannot use a BlockValue linked on the ruleHolder for the
   332         "cannot use a BlockValue linked on the ruleHolder for the
   314          ruleRationaleAspect, because the ruleHolder maight be changed dynamically
   333          ruleRationaleAspect, because the ruleHolder might be changed dynamically
   315          via the aspect-linking mechanism"
   334          via the aspect-linking mechanism"
   316 "/        holder := (AspectAdaptor forAspect: #rationale) subjectChannel: self ruleHolder.
   335 "/        holder := (AspectAdaptor forAspect: #rationale) subjectChannel: self ruleHolder.
   317         holder := '' asValue.
   336         holder := '' asValue.
   318         builder aspectAt:#ruleRationaleAspect put:holder.
   337         builder aspectAt:#ruleRationaleAspect put:holder.
   319     ].
   338     ].
   321 
   340 
   322     "Modified: / 05-02-2010 / 12:51:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   341     "Modified: / 05-02-2010 / 12:51:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   323     "Modified: / 01-03-2012 / 15:29:16 / cg"
   342     "Modified: / 01-03-2012 / 15:29:16 / cg"
   324 !
   343 !
   325 
   344 
       
   345 selectedClassesHolder
       
   346     "return/create the 'selectedClassesHolder' value holder (automatically generated)"
       
   347 
       
   348     selectedClassesHolder isNil ifTrue:[
       
   349         selectedClassesHolder := #() asValue.
       
   350         selectedClassesHolder addDependent:self.
       
   351     ].
       
   352     ^ selectedClassesHolder
       
   353 !
       
   354 
       
   355 selectedClassesHolder:aValueHolder
       
   356     "set the 'selectedClassesHolder' value holder (automatically generated)"
       
   357 
       
   358     |oldValue newValue|
       
   359 
       
   360     selectedClassesHolder notNil ifTrue:[
       
   361         oldValue := selectedClassesHolder value.
       
   362         selectedClassesHolder removeDependent:self.
       
   363     ].
       
   364     selectedClassesHolder := aValueHolder.
       
   365     selectedClassesHolder notNil ifTrue:[
       
   366         selectedClassesHolder addDependent:self.
       
   367     ].
       
   368     newValue := selectedClassesHolder value.
       
   369     oldValue ~= newValue ifTrue:[
       
   370         self update:#value with:newValue from:selectedClassesHolder.
       
   371     ].
       
   372 !
       
   373 
   326 selectedMethodsHolder
   374 selectedMethodsHolder
   327     "return/create the 'selectedMethodsHolder' value holder (automatically generated)"
   375     "return/create the 'selectedMethodsHolder' value holder (automatically generated)"
   328 
   376 
   329     selectedMethodsHolder isNil ifTrue:[
   377     selectedMethodsHolder isNil ifTrue:[
   330         selectedMethodsHolder := #() asValue.
   378         selectedMethodsHolder := #() asValue.
   331         selectedMethodsHolder addDependent:self.
   379         selectedMethodsHolder addDependent:self.
   332     ].
   380     ].
   333     ^ selectedMethodsHolder
   381     ^ selectedMethodsHolder
   334 !
   382 !
   335 
   383 
   336 selectedMethodsHolder:something
   384 selectedMethodsHolder:aValueHolder
   337     "set the 'selectedMethodsHolder' value holder (automatically generated)"
   385     "set the 'selectedMethodsHolder' value holder (automatically generated)"
   338 
   386 
   339     |oldValue newValue|
   387     |oldValue newValue|
   340 
   388 
   341     selectedMethodsHolder notNil ifTrue:[
   389     selectedMethodsHolder notNil ifTrue:[
   342         oldValue := selectedMethodsHolder value.
   390         oldValue := selectedMethodsHolder value.
   343         selectedMethodsHolder removeDependent:self.
   391         selectedMethodsHolder removeDependent:self.
   344     ].
   392     ].
   345     selectedMethodsHolder := something.
   393     selectedMethodsHolder := aValueHolder.
   346     selectedMethodsHolder notNil ifTrue:[
   394     selectedMethodsHolder notNil ifTrue:[
   347         selectedMethodsHolder addDependent:self.
   395         selectedMethodsHolder addDependent:self.
   348     ].
   396     ].
   349     newValue := selectedMethodsHolder value.
   397     newValue := selectedMethodsHolder value.
   350     oldValue ~= newValue ifTrue:[
   398     oldValue ~= newValue ifTrue:[
   365     changedObject == rationaleVisibleHolder ifTrue:[
   413     changedObject == rationaleVisibleHolder ifTrue:[
   366         self updateVisibility.
   414         self updateVisibility.
   367          ^ self.
   415          ^ self.
   368     ].
   416     ].
   369     changedObject == selectedMethodsHolder ifTrue:[
   417     changedObject == selectedMethodsHolder ifTrue:[
   370         "/ cg: preparations to show method-specific text in rationale/detail
   418         "/ cg: preparations to show method-specific text in rationale/detail view
   371         "/ view. Not yet done...
   419         "/ Not yet done...
       
   420         self updateRule.
       
   421         ^ self 
       
   422     ].
       
   423 
       
   424     changedObject == selectedClassesHolder ifTrue:[
       
   425         "/ cg: preparations to show class-specific text in rationale/detail view
       
   426         "/ Not yet done...
       
   427         self updateRule.
       
   428         ^ self 
   372     ].
   429     ].
   373 
   430 
   374     super update:something with:aParameter from:changedObject
   431     super update:something with:aParameter from:changedObject
   375 
   432 
   376     "Modified: / 04-08-2011 / 21:31:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   433     "Modified: / 04-08-2011 / 21:31:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   380 updateRule
   437 updateRule
   381     "cannot use a BlockValue linked on the ruleHolder for the
   438     "cannot use a BlockValue linked on the ruleHolder for the
   382      ruleRationaleAspect, because the ruleHolder maight be changed dynamically
   439      ruleRationaleAspect, because the ruleHolder maight be changed dynamically
   383      via the aspect-linking mechanism"
   440      via the aspect-linking mechanism"
   384 
   441 
   385     |rule|
   442     |rule text|
   386 
   443 
       
   444     text := ''.
       
   445     
   387     rule := self ruleHolder value.
   446     rule := self ruleHolder value.
   388     self ruleRationaleAspect value: (rule isNil ifTrue:[''] ifFalse:[rule rationaleWithAnchor]).
   447     rule notNil ifTrue:[
       
   448         selectedMethodsHolder value size == 1 ifTrue:[
       
   449             text := rule rationaleWithAnchorForMethod:(selectedMethodsHolder value first).
       
   450         ] ifFalse:[    
       
   451             selectedClassesHolder value size == 1 ifTrue:[
       
   452                 text := rule rationaleWithAnchorForClass:(selectedClassesHolder value first).
       
   453             ] ifFalse:[    
       
   454                 text := rule rationaleWithAnchor.
       
   455             ]
       
   456         ]    
       
   457     ].
       
   458     self ruleRationaleAspect value:text.
   389 
   459 
   390     "Created: / 01-03-2012 / 15:28:18 / cg"
   460     "Created: / 01-03-2012 / 15:28:18 / cg"
   391 !
   461 !
   392 
   462 
   393 updateVisibility
   463 updateVisibility