SmallSense__CriticsWindow.st
branchcvs_MAIN
changeset 968 4cd706e4706e
parent 961 69bd32d11520
child 988 75d5f2c16454
equal deleted inserted replaced
967:e39915970657 968:4cd706e4706e
    19 "{ Package: 'stx:goodies/smallsense' }"
    19 "{ Package: 'stx:goodies/smallsense' }"
    20 
    20 
    21 "{ NameSpace: SmallSense }"
    21 "{ NameSpace: SmallSense }"
    22 
    22 
    23 SimpleDialog subclass:#CriticsWindow
    23 SimpleDialog subclass:#CriticsWindow
    24 	instanceVariableNames:'ruleHolder ruleRationaleAndFixesHTMLHolder rationalView fixer
    24         instanceVariableNames:'ruleHolder ruleRationaleAndFixesHTMLHolder rationalView fixer
    25 		entered codeView closeOnLeave'
    25                 entered codeView closeOnLeave'
    26 	classVariableNames:''
    26         classVariableNames:''
    27 	poolDictionaries:''
    27         poolDictionaries:''
    28 	category:'SmallSense-Core-Interface'
    28         category:'SmallSense-Core-Interface'
    29 !
    29 !
    30 
    30 
    31 !CriticsWindow class methodsFor:'documentation'!
    31 !CriticsWindow class methodsFor:'documentation'!
    32 
    32 
    33 copyright
    33 copyright
   295     "set the 'ruleHolder' value holder (automatically generated)"
   295     "set the 'ruleHolder' value holder (automatically generated)"
   296 
   296 
   297     |oldValue newValue|
   297     |oldValue newValue|
   298 
   298 
   299     ruleHolder notNil ifTrue:[
   299     ruleHolder notNil ifTrue:[
   300 	oldValue := ruleHolder value.
   300         oldValue := ruleHolder value.
   301 	ruleHolder removeDependent:self.
   301         ruleHolder removeDependent:self.
   302     ].
   302     ].
   303     ruleHolder := something.
   303     ruleHolder := something.
   304     ruleHolder notNil ifTrue:[
   304     ruleHolder notNil ifTrue:[
   305 	ruleHolder addDependent:self.
   305         ruleHolder addDependent:self.
   306     ].
   306     ].
   307     newValue := ruleHolder value.
   307     newValue := ruleHolder value.
   308     oldValue ~~ newValue ifTrue:[
   308     oldValue ~~ newValue ifTrue:[
   309 	self update:#value with:newValue from:ruleHolder.
   309         self update:#value with:newValue from:ruleHolder.
   310     ].
   310     ].
   311 !
   311 !
   312 
   312 
   313 ruleNameAspect
   313 ruleNameAspect
   314 
   314 
   400     previousRuleClass := nil.
   400     previousRuleClass := nil.
   401     collectedFixes := OrderedCollection new.
   401     collectedFixes := OrderedCollection new.
   402 
   402 
   403     flattenedRules 
   403     flattenedRules 
   404         do:[:eachRule |
   404         do:[:eachRule |
   405             |fixes|
   405             |fixesForMe editedMethod editedClass editedSelector|
   406             
   406             
   407             eachRule class == previousRuleClass ifFalse:[
   407             eachRule class == previousRuleClass ifFalse:[
   408                 collectedFixes notEmpty ifTrue:[
   408                 collectedFixes notEmpty ifTrue:[
   409                     putCollectedFixes value.
   409                     putCollectedFixes value.
   410                     collectedFixes := OrderedCollection new
   410                     collectedFixes := OrderedCollection new
   423             "/ BUG: because rules/transformations remember their result,
   423             "/ BUG: because rules/transformations remember their result,
   424             "/ after a run over a project, there might be changes for many many different classes
   424             "/ after a run over a project, there might be changes for many many different classes
   425             "/ in the rule's changes list.
   425             "/ in the rule's changes list.
   426             "/ therefore, the fixer selects only those changes which affect the current method.
   426             "/ therefore, the fixer selects only those changes which affect the current method.
   427             self breakPoint:#cg.
   427             self breakPoint:#cg.
   428             eachRule fixes: fixer.
   428 
   429             fixes := fixer fixesForRule: eachRule.
   429             "/ was 
   430             fixes notEmptyOrNil ifTrue:[
   430             "/  eachRule fixes: fixer
   431                 collectedFixes addAll:fixes.
   431             "/ changed to:
       
   432             editedMethod := codeView editedMethod.
       
   433             editedMethod notNil ifTrue:[
       
   434                 editedClass := editedMethod mclass.
       
   435                 editedSelector := editedMethod selector.
       
   436                 (editedClass isNil or:[editedSelector isNil]) ifTrue:[
       
   437                     Dialog information:'Method is outdated'.
       
   438                     ^ self
       
   439                 ].    
       
   440             ] ifFalse:[
       
   441                 self halt.
       
   442             ].    
       
   443             eachRule 
       
   444                 addFixesForClass:editedClass
       
   445                 selector:editedSelector
       
   446                 to:fixer.
       
   447 
       
   448             fixesForMe := fixer fixesForRule: eachRule.
       
   449             fixesForMe notEmptyOrNil ifTrue:[
       
   450                 collectedFixes addAll:fixesForMe.
   432             ].
   451             ].
   433             previousRuleClass := eachRule class.
   452             previousRuleClass := eachRule class.
   434         ].
   453         ].
   435     
   454     
   436     collectedFixes notEmpty ifTrue:[
   455     collectedFixes notEmpty ifTrue:[