Tools_ProjectList.st
changeset 7423 e92bcc3c8e0e
parent 7338 963df065bedd
child 7497 fa14e0c38917
--- a/Tools_ProjectList.st	Wed Oct 18 13:10:37 2006 +0200
+++ b/Tools_ProjectList.st	Wed Oct 18 13:11:24 2006 +0200
@@ -9,7 +9,6 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
-
 "{ Package: 'stx:libtool' }"
 
 "{ NameSpace: Tools }"
@@ -212,7 +211,7 @@
 !ProjectList methodsFor:'change & update'!
 
 delayedUpdate:something with:aParameter from:changedObject
-    |cls sel pkg mthd newSel|
+    |cls sel pkg mthd newSel allIdx|
 
     self inSlaveModeOrInvisible 
     "/ (self slaveMode value == true) 
@@ -238,7 +237,12 @@
         listValid == true ifFalse:[
              self updateList.
         ].
-        newSel := changedObject value collect:[:val | projectList value indexOf:val].
+        allIdx := projectList value indexOf:(self class nameListEntryForALL).
+        newSel := changedObject value 
+                        collect:[:val | |i|
+                                        i := projectList value indexOf:val.
+                                        i == 0 ifTrue:[allIdx] ifFalse:[i]]
+                        thenSelect:[:idx | idx ~~ 0].
         newSel ~= self selectionIndexHolder value ifTrue:[
             self selectionIndexHolder value:newSel
         ].
@@ -323,8 +327,8 @@
     ].
     super delayedUpdate:something with:aParameter from:changedObject
 
-    "Created: / 17.2.2000 / 23:41:02 / cg"
-    "Modified: / 26.2.2000 / 01:21:49 / cg"
+    "Created: / 17-02-2000 / 23:41:02 / cg"
+    "Modified: / 17-10-2006 / 18:43:40 / cg"
 !
 
 selectionChangedByClick
@@ -356,45 +360,63 @@
         ].
     ].
     super update:something with:aParameter from:changedObject
+
+    "Modified: / 17-10-2006 / 18:40:17 / cg"
 ! !
 
 !ProjectList methodsFor:'drag & drop'!
 
 canDropContext:aDropContext
-    |methodsOrClasses package|
+    |objects package|
+
+    objects := aDropContext dropObjects collect:[:obj | obj theObject].
 
-    methodsOrClasses := aDropContext dropObjects collect:[:obj | obj theObject].
-    (methodsOrClasses conform:[:aMethodOrClass | (aMethodOrClass isMethod or:[aMethodOrClass isClass]) ]) ifFalse:[^ false].
+    (self objectsAreClassFiles:objects) ifTrue:[^ true].
+
+    (objects conform:[:aMethodOrClass | (aMethodOrClass isMethod or:[aMethodOrClass isClass]) ]) ifFalse:[^ false].
 
     package := self packageAtTargetPointOf:aDropContext.
     package isNil ifTrue:[^ false].
 
-    (methodsOrClasses contains:[:aMethodOrClass | aMethodOrClass package ~= package]) ifFalse:[^ false].
+    (objects contains:[:aMethodOrClass | aMethodOrClass package ~= package]) ifFalse:[^ false].
     ^ true
 
-    "Modified: / 13-09-2006 / 11:45:38 / cg"
+    "Modified: / 17-10-2006 / 18:30:32 / cg"
 !
 
 doDropContext:aDropContext
-    |package methodsOrClasses methods classes|
+    |package objects methods classes|
 
-    methodsOrClasses := aDropContext dropObjects collect:[:aDropObject | aDropObject theObject].
-    (methodsOrClasses conform:[:something | (something isMethod or:[something isClass])]) ifFalse:[^ self].
-
-    methods := methodsOrClasses select:[:something | something isMethod].
-    classes := methodsOrClasses select:[:something | something isClass].
+    objects := aDropContext dropObjects collect:[:aDropObject | aDropObject theObject].
+    (objects conform:[:something | (something isMethod or:[something isClass])]) ifTrue:[
+        methods := objects select:[:something | something isMethod].
+        classes := objects select:[:something | something isClass].
 
-    package := self packageAtTargetPointOf:aDropContext.
-    package notNil ifTrue:[
-        methods notEmpty ifTrue:[
-            self masterApplication moveMethods:methods toProject:package.
+        package := self packageAtTargetPointOf:aDropContext.
+        package notNil ifTrue:[
+            methods notEmpty ifTrue:[
+                self masterApplication moveMethods:methods toProject:package.
+            ].
+            classes notEmpty ifTrue:[
+                self masterApplication moveClasses:classes toProject:package.
+            ]
         ].
-        classes notEmpty ifTrue:[
-            self masterApplication moveClasses:classes toProject:package.
-        ]
+        ^ self
     ].
 
-    "Modified: / 13-09-2006 / 11:45:59 / cg"
+    (objects conform:[:something | something isFilename]) ifTrue:[
+        |p|
+
+        p := (self selectedProjects value ? #()) firstIfEmpty:Project noProjectID.
+
+        Class packageQuerySignal answer:p
+        do:[
+            self dropClassFiles:objects.
+        ].
+        ^ self
+    ].
+
+    "Modified: / 17-10-2006 / 18:34:43 / cg"
 !
 
 packageAtTargetPointOf:aDropContext
@@ -784,5 +806,5 @@
 !ProjectList class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_ProjectList.st,v 1.26 2006-09-22 14:43:41 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_ProjectList.st,v 1.27 2006-10-18 11:11:24 cg Exp $'
 ! !