--- a/Tools__MethodRewriter.st Tue Jul 05 15:55:49 2011 +0200
+++ b/Tools__MethodRewriter.st Tue Jul 05 15:56:51 2011 +0200
@@ -28,10 +28,11 @@
"{ NameSpace: Tools }"
ApplicationModel subclass:#MethodRewriter
- instanceVariableNames:'replaceTextView classes searchTextView actionInProgresHolder
- infoHolder progressHolder templateSearchPatternHolder
- templateReplacePatternHolder selectedTemplateIndex templates
- selectedTabIndex selectedClassesHolder'
+ instanceVariableNames:'replaceTextView methods classes searchTextView
+ actionInProgresHolder infoHolder progressHolder
+ templateSearchPatternHolder templateReplacePatternHolder
+ selectedTemplateIndex templates selectedTabIndex
+ selectedClassesHolder'
classVariableNames:''
poolDictionaries:''
category:'Interface-MethodRewriter'
@@ -624,24 +625,42 @@
!MethodRewriter methodsFor:'actions'!
doRewrite
+ | methodsMatching anyChange compositeChangeCollector |
- | methodsMatching |
+ compositeChangeCollector := CompositeRefactoryChange new.
+ compositeChangeCollector name:'Rewrite Change'.
+
+ anyChange := false.
+
methodsMatching := self methodsMatching.
methodsMatching isNilOrEmptyCollection ifTrue:[^Dialog warn:'No methods matching'].
- methodsMatching do:
- [:mth|
- | newTree |
+ methodsMatching do:[:mth|
+ | newTree change |
+
newTree := ParseTreeRewriter new
replace: self searchPattern with: self replacePattern;
executeTree: mth parseTree;
tree.
- mth mclass
- compile: newTree formattedCode
- classified: mth category
- ].
+
+
+ change := InteractiveAddMethodChange compile:(newTree formattedCode) in:mth mclass classified:mth category.
+
+ "/ collect in order to have only one change in the undo-list (instead of many)
+ compositeChangeCollector addChange:change.
+ anyChange := true.
+
+"/ mth mclass
+"/ compile: newTree formattedCode
+"/ classified: mth category
+ ].
+
+ anyChange ifTrue:[
+ RefactoryChangeManager performChange:compositeChangeCollector.
+ ].
"Created: / 20-07-2007 / 16:03:47 / janfrog"
"Modified: / 21-07-2007 / 06:55:42 / janfrog"
+ "Modified: / 05-07-2011 / 14:57:49 / cg"
!
doRewriteAction
@@ -954,10 +973,18 @@
!
methods
+ methods notNil ifTrue:[^ methods].
^self methodsFor: classes
"Modified: / 21-07-2007 / 06:24:07 / janfrog"
+ "Modified: / 05-07-2011 / 14:50:43 / cg"
+!
+
+methods:aCollection
+ methods := aCollection
+
+ "Created: / 05-07-2011 / 14:50:52 / cg"
!
methodsFor: aColletion
@@ -1046,7 +1073,7 @@
!MethodRewriter class methodsFor:'documentation'!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/Tools__MethodRewriter.st,v 1.12 2011-07-05 09:31:51 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/Tools__MethodRewriter.st,v 1.13 2011-07-05 13:56:51 cg Exp $'
!
version_SVN