Tools_OrganizerCanvas.st
changeset 8419 a6766a069947
parent 8414 8f8c47a703cf
child 8433 b64400068024
--- a/Tools_OrganizerCanvas.st	Tue Nov 11 21:46:26 2008 +0100
+++ b/Tools_OrganizerCanvas.st	Thu Nov 13 02:49:57 2008 +0100
@@ -2156,7 +2156,7 @@
                  (ComboListSpec
                     name: 'ComboList1'
                     layout: (LayoutFrame 0 0 0 0 0 1 25 0)
-                    model: diagramPackageSelection
+                    model: selectedDiagramProject
                     comboList: packageList
                     useIndex: false
                   )
@@ -3239,15 +3239,20 @@
     "Created: / 18.2.2000 / 00:23:43 / cg"
 !
 
+selectedDiagramProject
+    |holder|
+
+    (holder := builder bindingAt:#selectedDiagramProject) isNil ifTrue:[
+        holder := nil asValue.
+        builder aspectAt:#selectedDiagramProject put:holder.
+        holder addDependent:self.
+    ].
+    ^ holder.
+!
+
 selectedNamespaces
-    "automatically generated by UIPainter ..."
-
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
-
     selectedNamespaces isNil ifTrue:[
-	selectedNamespaces := (OrderedCollection with:self class nameListEntryForALL) asValue.
+        selectedNamespaces := (OrderedCollection with:self class nameListEntryForALL) asValue.
     ].
     ^ selectedNamespaces.
 
@@ -3255,15 +3260,9 @@
 !
 
 selectedProjects
-    "automatically generated by UIPainter ..."
-
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
-
     selectedProjects isNil ifTrue:[
-	selectedProjects := ValueHolder new.
-"/        selectedProjects addDependent:self.
+        selectedProjects := ValueHolder new.
+        selectedProjects addDependent:self.
     ].
     ^ selectedProjects.
 
@@ -3271,14 +3270,9 @@
 !
 
 selectionChangeCondition
-    "automatically generated by UIPainter ..."
-
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
 
     selectionChangeCondition isNil ifTrue:[
-	selectionChangeCondition := ValueHolder new.
+        selectionChangeCondition := ValueHolder new.
 "/        selectionChangeCondition addDependent:self.
     ].
     ^ selectionChangeCondition.
@@ -4094,25 +4088,6 @@
     "Modified: / 18.2.2000 / 02:56:21 / cg"
 !
 
-diagramApplicationModelHolder
-    |holder graphApp|
-
-    (holder := builder bindingAt:#diagramApplicationModelHolder) isNil ifTrue:[
-        OOM::MetricVisualizer notNil ifTrue:[
-            graphApp := OOM::MetricVisualizer new.
-            graphApp masterApplication:self.
-            graphApp selectedClassesHolder onChangeSend:#diagramClassSelectionChanged to:self.
-
-            holder := ValueHolder new.
-            holder value:graphApp.
-            builder aspectAt:#diagramApplicationModelHolder put: holder.
-
-            self packageFilter onChangeSend:#packageFilterChanged to:self.
-        ].
-    ].
-    ^ holder
-!
-
 nameSpaceListSlaveMode
     namespaceListSlaveMode isNil ifTrue:[
 	namespaceListSlaveMode := true asValue.
@@ -4509,6 +4484,13 @@
     ].
 !
 
+packageFilterChanged
+!
+
+selectedProjectsChanged
+    self updatePackageDiagramView
+!
+
 update:something with:aParameter from:changedObject
     |orgMode trigger classes selectedClassesHolder selectionValue|
 
@@ -4587,10 +4569,10 @@
 
     changedObject == selectedClasses ifTrue:[
         selectedClasses value size ~~ 0 ifTrue:[
-            (orgMode ~~ OrganizerCanvas organizerModeClassHierarchy) ifTrue:[
-                (orgMode ~~ OrganizerCanvas organizerModeProject) ifTrue:[
-                    self updateOrganizationFromChangedClass.
-                ]
+            (orgMode ~~ OrganizerCanvas organizerModeClassHierarchy
+            and:[ orgMode ~~ OrganizerCanvas organizerModeProject
+            and:[ orgMode ~~ OrganizerCanvas organizerModePackageDiagram ]]) ifTrue:[
+                self updateOrganizationFromChangedClass.
             ].
         ]
     ].
@@ -4610,6 +4592,15 @@
         ].
         self nameSpaceFilter value: selectionValue.
     ].
+    changedObject == self selectedProjects ifTrue:[
+self halt.
+        self selectedProjectsChanged.
+    ].
+    changedObject == self selectedDiagramProject ifTrue:[
+self halt.
+        self selectedProjects value:(Array with:self selectedDiagramProject value).
+        ^ self
+    ].
 
     super update:something with:aParameter from:changedObject
 
@@ -4734,6 +4725,25 @@
             ((selectedClasses size == 1) ifTrue:[selectedClasses first] ifFalse:nil).
         ^ self.
     ].
+    orgMode == OrganizerCanvas organizerModePackageDiagram ifTrue:[
+        self updatePackageDiagramView.
+    ].
+!
+
+updatePackageDiagramView
+    |diagramApp packages|
+
+    self packageDiagramShown computeValue ifTrue:[
+        diagramApp := self diagramApplicationModelHolder value.
+
+        packages := self selectedProjects value ? #().
+        self selectedDiagramProject value:(packages firstIfEmpty:nil) withoutNotifying:self.
+        self withWaitCursorDo:[
+            diagramApp
+                packages:packages;
+                generateDiagram
+        ]
+    ].
 !
 
 updateProjectSelectionFromClasses
@@ -4838,8 +4848,30 @@
     selectedClasses removeDependent:self.
 ! !
 
+!OrganizerCanvas methodsFor:'subapplications'!
+
+diagramApplicationModelHolder
+    |holder graphApp|
+
+    (holder := builder bindingAt:#diagramApplicationModelHolder) isNil ifTrue:[
+        OOM::MetricVisualizer notNil ifTrue:[
+            graphApp := OOM::MetricVisualizer new.
+            graphApp masterApplication:self.
+            graphApp selectedClassesHolder onChangeSend:#diagramClassSelectionChanged to:self.
+            graphApp showShortClassInfo:true.
+
+            holder := ValueHolder new.
+            holder value:graphApp.
+            builder aspectAt:#diagramApplicationModelHolder put: holder.
+
+            self packageFilter onChangeSend:#packageFilterChanged to:self.
+        ].
+    ].
+    ^ holder
+! !
+
 !OrganizerCanvas class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_OrganizerCanvas.st,v 1.30 2008-11-11 14:17:29 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_OrganizerCanvas.st,v 1.31 2008-11-13 01:49:57 cg Exp $'
 ! !