Author: bobtarling
Date: 2008-05-14 11:37:52-0700
New Revision: 14735

Modified:
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeAssociation.java

Log:
Use thread safe updateLayout instead of modelChanged to simplify.

We don't need to set owner to null as the Fig will be garbage collected.

Other refactoring.

Modified: 
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeAssociation.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeAssociation.java?view=diff&rev=14735&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeAssociation.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeAssociation.java&r1=14734&r2=14735
==============================================================================
--- 
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeAssociation.java    
    (original)
+++ 
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeAssociation.java    
    2008-05-14 11:37:52-0700
@@ -35,6 +35,7 @@
 
 import org.argouml.model.Model;
 import org.argouml.model.RemoveAssociationEvent;
+import org.argouml.model.UmlChangeEvent;
 import org.tigris.gef.base.Editor;
 import org.tigris.gef.base.Globals;
 import org.tigris.gef.base.Layer;
@@ -124,21 +125,18 @@
 
 
     /**
-     * Used when a n-ary association becomes a binary association.
+     * Called when a model event is received from model subsystem.
+     * handles when a n-ary association becomes a binary association.
      *
      * @param mee the event
      */
-    protected void modelChanged(PropertyChangeEvent mee) {
-        super.modelChanged(mee);
-        if ("connection".equals(mee.getPropertyName())) {
-            if (mee instanceof RemoveAssociationEvent) {
-                Object association =
-                    ((RemoveAssociationEvent) mee).getSource();
-                if (Model.getFacade().getConnections(association).size()
-                        == 2) {
-                    reduceToBinary();
-                }
-            }
+    protected void updateLayout(UmlChangeEvent mee) {
+        super.updateLayout(mee);
+        if (mee instanceof RemoveAssociationEvent
+                && "connection".equals(mee.getPropertyName())
+                && Model.getFacade().getConnections(mee.getSource()).size() 
+                == 2) {
+            reduceToBinary();
         }
     }
 
@@ -147,32 +145,23 @@
      * from the model (OR from the diagram?), 
      * reduce this to a binary association.
      */
-    void reduceToBinary() {
+    private void reduceToBinary() {
         final Object association = getOwner();
-        final Fig oldNodeFig = this;
-        SwingUtilities.invokeLater(new Runnable() {
-            public void run() {
-                oldNodeFig.setOwner(null);
-                FigEdge figEdge = null;
-                Editor editor = Globals.curEditor();
-                GraphModel gm = editor.getGraphModel();
-                GraphEdgeRenderer renderer =
-                    editor.getGraphEdgeRenderer();
-                Layer lay = editor.getLayerManager().getActiveLayer();
-                figEdge =
-                    renderer.getFigEdgeFor(gm, lay, association, null);
-                editor.add(figEdge);
-                if (gm instanceof MutableGraphModel) {
-                    MutableGraphModel mutableGraphModel =
-                        (MutableGraphModel) gm;
-                    mutableGraphModel.removeNode(association);
-                    mutableGraphModel.addEdge(association);
-                }
-                oldNodeFig.removeFromDiagram();
-                editor.getSelectionManager().deselectAll();
-                editor.damageAll();
-            }
-        });
+        final Editor editor = Globals.curEditor();
+        final MutableGraphModel gm = 
+            (MutableGraphModel) editor.getGraphModel();
+        final GraphEdgeRenderer renderer =
+            editor.getGraphEdgeRenderer();
+        gm.removeNode(association);
+        removeFromDiagram();
+        final Layer lay = editor.getLayerManager().getActiveLayer();
+        final FigAssociation figEdge = (FigAssociation) renderer.getFigEdgeFor(
+                gm, lay, association, null);
+        editor.add(figEdge);
+        gm.addEdge(association);
+        figEdge.computeRoute();
+        editor.getSelectionManager().deselectAll();
+        editor.damageAll();
     }
     
     /*

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to