class: Tools::MethodRewriter
authorClaus Gittinger <cg@exept.de>
Thu, 05 Feb 2015 00:17:31 +0100
changeset 15202 31fdbb042c81
parent 15201 4b6a65f302f2
child 15203 68b3c87ad249
class: Tools::MethodRewriter class definition changed: #canDropClasses: #classesSpec #doDropClasses: #rules can now drop whole packages into the class list
Tools__MethodRewriter.st
--- a/Tools__MethodRewriter.st	Thu Feb 05 00:15:15 2015 +0100
+++ b/Tools__MethodRewriter.st	Thu Feb 05 00:17:31 2015 +0100
@@ -28,7 +28,7 @@
 "{ NameSpace: Tools }"
 
 ApplicationModel subclass:#MethodRewriter
-	instanceVariableNames:'replaceTextView methods classes searchTextView
+	instanceVariableNames:'replaceTextView methods classes packages searchTextView
 		actionInProgresHolder infoHolder progressHolder
 		templateSearchPatternHolder templateReplacePatternHolder
 		selectedTemplateIndex templates selectedTabIndex
@@ -199,7 +199,7 @@
       (SpecCollection
          collection: (
           (LabelSpec
-             label: 'Hint: drag''n''drop classes from browser'
+             label: 'Hint: drag''n''drop classes, methods or packages from browser'
              name: 'HintLabel'
              layout: (LayoutFrame 0 0 0 0 0 1 30 0)
              translateLabel: true
@@ -877,6 +877,10 @@
 !
 
 rules
+    RBTransformationRule isNil ifTrue:[
+        Smalltalk loadPackage:'stx:goodies/refactoryBrowser/lint'.
+    ].
+
     rules isNil ifTrue:[
         |knownRules separator1 separator2 separator3|
 
@@ -1290,24 +1294,44 @@
 !MethodRewriter methodsFor:'drag & drop'!
 
 canDropClasses: dropContext
+    "I accept classes, methods and packages"
 
-    ^dropContext dropObjects allSatisfy: [:obj|obj isClassObject or:[obj isMethodObject]]
+    ^dropContext dropObjects 
+        allSatisfy: [:obj|
+            obj isClassObject 
+            or:[ obj isMethodObject 
+            or:[ obj isProjectObject ]]]
 
     "Created: / 20-07-2007 / 16:58:13 / janfrog"
 !
 
 doDropClasses: dropContext
+    "I accept classes, methods and packages"
 
-    | newClasses |
-    newClasses := dropContext dropObjects 
-                    select:[:obj|obj isClassObject or:[obj isMethodObject]].
-    newClasses := newClasses    
-                    collect:[:obj| |clsOrMethod| 
+    | droppedProjects droppedClasses newClasses |
+
+    droppedProjects := dropContext dropObjects 
+                    select:[:obj| obj isProjectObject]
+                    thenCollect:[:obj | obj theObject].  
+
+    droppedClasses := dropContext dropObjects 
+                    select:[:obj| obj isClassObject or:[obj isMethodObject]]
+                    thenCollect:[:obj| 
+                        |clsOrMethod|
+
                         clsOrMethod := obj theObject.
-                        clsOrMethod isMethod ifTrue:[clsOrMethod containingClass] ifFalse:[clsOrMethod]
+                        clsOrMethod isMethod ifTrue:[
+                            clsOrMethod containingClass
+                        ] ifFalse:[
+                            clsOrMethod
+                        ]
                     ] as:IdentitySet.
 
-    newClasses := newClasses reject:[:cls|self classes includes:cls].
+    droppedProjects do:[:eachPackage |
+        droppedClasses addAll:(Smalltalk allClassesInPackage:eachPackage)
+    ].
+
+    newClasses := droppedClasses reject:[:cls | self classes includes:cls].
     self classes 
         addAll: newClasses;
         changed:#content
@@ -1540,10 +1564,10 @@
 !MethodRewriter class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__MethodRewriter.st,v 1.20 2015-02-04 22:34:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__MethodRewriter.st,v 1.21 2015-02-04 23:17:31 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: Tools__MethodRewriter.st,v 1.20 2015-02-04 22:34:40 cg Exp $'
+    ^ '$Id: Tools__MethodRewriter.st,v 1.21 2015-02-04 23:17:31 cg Exp $'
 ! !