Tools__OrganizerCanvas.st
branchjv
changeset 12650 e0f607754b9a
parent 12431 9f0c59c742d5
child 13530 2269bce1636d
--- a/Tools__OrganizerCanvas.st	Thu Apr 04 01:43:18 2013 +0100
+++ b/Tools__OrganizerCanvas.st	Thu Apr 04 19:06:16 2013 +0100
@@ -4643,7 +4643,7 @@
 
         "/ must update the packageFilter
         orgMode == OrganizerCanvas organizerModeProject ifTrue:[
-            self selectedProjects value:(classes collect:[:each | each package]) asSet.
+            self selectedProjects value:(classes collect:[:each | each package] as:Set).
             packageFilter setValue:(self selectedProjects value)
         ] ifFalse:[
             packageFilter value:nil
@@ -4689,6 +4689,9 @@
         ].
         (orgMode == OrganizerCanvas organizerModeProject) ifTrue:[
             projectListSlaveMode value:false.
+            self selectedProjects value isEmptyOrNil ifTrue:[
+                self updateProjectSelectionFromClasses.
+            ].
         ].
         (orgMode == OrganizerCanvas organizerModePackageDiagram) ifTrue:[
             "/
@@ -4703,9 +4706,12 @@
     changedObject == selectedClasses ifTrue:[
         selectedClasses value size ~~ 0 ifTrue:[
             (orgMode ~~ OrganizerCanvas organizerModeClassHierarchy
-            and:[ orgMode ~~ OrganizerCanvas organizerModeProject
-            and:[ orgMode ~~ OrganizerCanvas organizerModePackageDiagram ]]) ifTrue:[
-                self updateOrganizationFromChangedClass.
+            and:[ orgMode ~~ OrganizerCanvas organizerModePackageDiagram ]) ifTrue:[
+                "/ if the organizerMode is project, avoid clobbering the project selection
+                (orgMode ~~ OrganizerCanvas organizerModeProject
+                or:[ (self selectedProjects value includesAll:( selectedClasses value collect:[:each | each package] )) not ])  ifTrue:[
+                    self updateOrganizationFromChangedClass.
+                ].
             ].
         ]
     ].
@@ -4832,9 +4838,6 @@
     |orgMode selectedClassesHolder selectedClasses classHierarchyTopClassHolder commonSuperClass|
 
     orgMode := organizerMode value.
-    selectedClassesHolder := self selectedClasses.
-    selectedClasses := selectedClassesHolder value.
-    classHierarchyTopClassHolder := self classHierarchyTopClass.
 
     orgMode == OrganizerCanvas organizerModeCategory ifTrue:[
         self updateCategorySelectionFromClasses.
@@ -4852,6 +4855,15 @@
         classHierarchyTopClassHolder value:nil.
         ^ self.
     ].
+    orgMode == OrganizerCanvas organizerModePackageDiagram ifTrue:[
+        self updatePackageDiagramView.
+        ^ self.
+    ].
+
+    selectedClassesHolder := self selectedClasses.
+    selectedClasses := selectedClassesHolder value.
+    classHierarchyTopClassHolder := self classHierarchyTopClass.
+
     (orgMode == OrganizerCanvas organizerModeClassHierarchy) ifTrue:[
 "/        (selectedClasses size == 1) ifTrue:[
 "/            self classHierarchyTopClass value:selectedClasses first
@@ -4871,9 +4883,6 @@
             ((selectedClasses size == 1) ifTrue:[selectedClasses first] ifFalse:nil).
         ^ self.
     ].
-    orgMode == OrganizerCanvas organizerModePackageDiagram ifTrue:[
-        self updatePackageDiagramView.
-    ].
 !
 
 updatePackageDiagramView
@@ -4886,7 +4895,7 @@
         packages := self selectedProjects value ? #().
         packages isEmpty ifTrue:[
             selectedClasses notEmptyOrNil ifTrue:[
-                packages := (selectedClasses collect:[:cls | cls package]) asSet asOrderedCollection.
+                packages := (selectedClasses collect:[:cls | cls package] as:Set) asOrderedCollection.
             ].
         ].
 
@@ -4913,7 +4922,7 @@
     allEntry := self class nameListEntryForALL.
 
     selectedProjects := self selectedProjects value.
-    oldSelectedProjects := (selectedProjects ? #()) asSet.
+    oldSelectedProjects := ((selectedProjects ? #()) collect:[:pkg | pkg string] as:Set).
 
     variableFilter value:nil.
     packageFilter value:nil.