Support for elecring blank line after smalltelk temporaries.
"{ Package: 'jv:smallsense' }"
Object subclass:#SmallSenseQuickFixer
instanceVariableNames:'view rule fixes'
classVariableNames:''
poolDictionaries:''
category:'SmallSense-Lint'
!
Object subclass:#QuickFix
instanceVariableNames:'rule label action'
classVariableNames:''
poolDictionaries:''
privateIn:SmallSenseQuickFixer
!
!SmallSenseQuickFixer class methodsFor:'instance creation'!
for: rule
^self new initializeForRule: rule.
"Created: / 01-02-2012 / 12:06:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
for: rule view: view
^self new initializeForRule: rule view: view
"Created: / 17-02-2012 / 00:21:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!SmallSenseQuickFixer methodsFor:'adding'!
fix
"Create and return new quick fix. Caller MUST set its
label and action"
| fix |
fix := QuickFix new.
fix rule: rule.
fixes add: fix.
^fix
"Created: / 01-02-2012 / 10:51:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!SmallSenseQuickFixer methodsFor:'initialization'!
initializeForRule: anRBLintRule view: aCodeView2
rule := anRBLintRule.
view := aCodeView2.
fixes := OrderedCollection new: 3.
rule fixes: self.
"Created: / 17-02-2012 / 00:20:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!SmallSenseQuickFixer methodsFor:'performing fixes'!
performFix: index
index <= fixes size ifTrue:[
(fixes at: index) performFix.
] ifFalse:[
^ Dialog warn: ('No such fix (%1)' bindWith: index).
]
"Created: / 16-02-2012 / 14:48:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!SmallSenseQuickFixer methodsFor:'printing & storing'!
printHtmlOn: html
fixes isEmptyOrNil ifTrue:[ ^ self ].
fixes size > 1 ifTrue:[
html nextPutAll: '<br>'.
html nextPutLine: 'Possible fixes'.
].
html nextPutLine:'<ul>'.
fixes withIndexDo:[:fix :index|
html
nextPutAll:'<li><a action="doit: self doQuickFix:';
nextPutAll: index printString;
nextPutAll:'">';
nextPutAll: fix label;
nextPutAll:'</a></li>'.
].
html nextPutLine:'</ul>'.
"Created: / 01-02-2012 / 12:13:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!SmallSenseQuickFixer methodsFor:'utilities'!
apply: allChanges
| changes |
changes := Tools::ChangeSetBrowser2 confirmChanges: allChanges.
changes isEmptyOrNil ifTrue:[ ^ self ].
(changes size == 1 and:[view reallyModified]) ifTrue:[
view contents: changes anElement source clear: false.
] ifFalse:[
| browser |
self halt.
]
"Created: / 16-02-2012 / 14:46:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!SmallSenseQuickFixer::QuickFix methodsFor:'accessing'!
action
^ action
!
action:aBlock
action := aBlock.
!
label
^ label
!
label:aString
label := aString.
!
performFix
^action value
"Created: / 16-02-2012 / 14:48:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
rule
^ rule
!
rule:anRBLintRule
rule := anRBLintRule.
! !
!SmallSenseQuickFixer class methodsFor:'documentation'!
version_HG
^ '$Changeset: <not expanded> $'
!
version_SVN
^ '$Id: SmallSenseQuickFixer.st 7911 2012-02-22 09:55:48Z vranyj1 $'
! !