svn commit: r17602 - trunk/src/argouml-app/src/org/argouml/uml/diagram: . collaboration/ui deployment/ui state state/ui static_structure/ui ui use_case/ui

Bob Tarling <[email protected]>
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: bobtarling
Date: 2009-12-04 04:45:12-0800
New Revision: 17602

Modified:
   trunk/src/argouml-app/src/org/argouml/uml/diagram/UmlDiagramRenderer.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/CollabDiagramRenderer.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/DeploymentDiagramRenderer.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/state/StateDiagramGraphModel.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/StateDiagramRenderer.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/ClassDiagramRenderer.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartment.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEditableCompartment.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/UseCaseDiagramRenderer.java

Log:
Move common code to base class

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/UmlDiagramRenderer.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/UmlDiagramRenderer.java?view=diff&pathrev=17602&r1=17601&r2=17602
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/UmlDiagramRenderer.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/UmlDiagramRenderer.java	2009-12-04 04:45:12-0800
@@ -342,4 +342,31 @@
             Model.getFacade().getClassifier(associationEnd);
         return (FigNode) diagram.presentationFor(classifier);
     }
+    
+    protected void addEdge(Layer lay, FigEdge newEdge, Object edge) {
+        if (newEdge == null) {
+            throw new IllegalArgumentException(
+                    "Don't know how to create FigEdge for model type "
+                    + edge.getClass().getName());
+        }
+        
+        setPorts(lay, newEdge);
+
+        assert newEdge != null : "There has been no FigEdge created";
+
+//        newEdge.setDiElement(
+//            GraphChangeAdapter.getInstance().createElement(gm, edge));
+
+        assert newEdge != null : "There has been no FigEdge created";
+        assert (newEdge.getDestFigNode() != null) 
+            : "The FigEdge has no dest node";
+        assert (newEdge.getDestPortFig() != null) 
+            : "The FigEdge has no dest port";
+        assert (newEdge.getSourceFigNode() != null) 
+            : "The FigEdge has no source node";
+        assert (newEdge.getSourcePortFig() != null) 
+            : "The FigEdge has no source port";
+
+        lay.add(newEdge);
+    }
 }

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/CollabDiagramRenderer.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/CollabDiagramRenderer.java?view=diff&pathrev=17602&r1=17601&r2=17602
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/CollabDiagramRenderer.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/CollabDiagramRenderer.java	2009-12-04 04:45:12-0800
@@ -150,25 +150,7 @@
             newEdge = new FigEdgeNote(edge, settings); // TODO -> settings
         }
     
-        if (newEdge == null) {
-            throw new IllegalArgumentException(
-                    "Don't know how to create FigEdge for model type "
-                    + edge.getClass().getName());
-        }
-        
-        setPorts(lay, newEdge);
-
-        assert newEdge != null : "There has been no FigEdge created";
-        assert (newEdge.getDestFigNode() != null) 
-            : "The FigEdge has no dest node";
-        assert (newEdge.getDestPortFig() != null) 
-            : "The FigEdge has no dest port";
-        assert (newEdge.getSourceFigNode() != null) 
-            : "The FigEdge has no source node";
-        assert (newEdge.getSourcePortFig() != null) 
-            : "The FigEdge has no source port";
-        
-        lay.add(newEdge);
+        addEdge(lay, newEdge, edge);
         return newEdge;
     }
 }

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/DeploymentDiagramRenderer.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/DeploymentDiagramRenderer.java?view=diff&pathrev=17602&r1=17601&r2=17602
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/DeploymentDiagramRenderer.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/DeploymentDiagramRenderer.java	2009-12-04 04:45:12-0800
@@ -192,25 +192,7 @@
         } else if (edge instanceof CommentEdge) {
             newEdge = new FigEdgeNote(edge, settings);
         }
-        if (newEdge == null) {
-            throw new IllegalArgumentException(
-                    "Don't know how to create FigEdge for model type "
-                    + edge.getClass().getName());
-        }
-        
-        setPorts(lay, newEdge);
-
-        assert newEdge != null : "There has been no FigEdge created";
-        assert (newEdge.getDestFigNode() != null) 
-            : "The FigEdge has no dest node";
-        assert (newEdge.getDestPortFig() != null) 
-            : "The FigEdge has no dest port";
-        assert (newEdge.getSourceFigNode() != null) 
-            : "The FigEdge has no source node";
-        assert (newEdge.getSourcePortFig() != null) 
-            : "The FigEdge has no source port";
-        
-        lay.add(newEdge);
+        addEdge(lay, newEdge, edge);
         return newEdge;
     }
 }

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/state/StateDiagramGraphModel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/state/StateDiagramGraphModel.java?view=diff&pathrev=17602&r1=17601&r2=17602
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/state/StateDiagramGraphModel.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/state/StateDiagramGraphModel.java	2009-12-04 04:45:12-0800
@@ -249,11 +249,28 @@
      */
     public void addEdge(Object edge) {
         LOG.debug("adding statechart/activity diagram edge!!!!!!");
+        if (edge == null) {
+            throw new IllegalArgumentException("Cannot add a null edge");
+        }
+
+        if (getDestPort(edge) == null || getSourcePort(edge) == null) {
+            throw new IllegalArgumentException(
+                    "The source and dest port should be provided on an edge");
+        }
+
+        if (LOG.isInfoEnabled()) {
+            LOG.info("Adding an edge of type "
+                   + edge.getClass().getName()
+                   + " to class diagram.");
+        }
 
         if (!canAddEdge(edge)) {
+            LOG.info("Attempt to add edge rejected");
             return;
         }
+        
         getEdges().add(edge);
+        
         fireEdgeAdded(edge);
     }
 

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/StateDiagramRenderer.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/StateDiagramRenderer.java?view=diff&pathrev=17602&r1=17601&r2=17602
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/StateDiagramRenderer.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/state/ui/StateDiagramRenderer.java	2009-12-04 04:45:12-0800
@@ -119,30 +119,7 @@
         } else if (edge instanceof CommentEdge) {
             newEdge = new FigEdgeNote(edge, settings); // TODO -> settings
         } 
-        if (newEdge == null) {
-            throw new IllegalArgumentException(
-                    "Don't know how to create FigEdge for model type "
-                    + edge.getClass().getName());
-        }
-        
-        setPorts(lay, newEdge);
-
-        assert newEdge != null : "There has been no FigEdge created";
-
-//        newEdge.setDiElement(
-//            GraphChangeAdapter.getInstance().createElement(gm, edge));
-
-        assert newEdge != null : "There has been no FigEdge created";
-        assert (newEdge.getDestFigNode() != null) 
-            : "The FigEdge has no dest node";
-        assert (newEdge.getDestPortFig() != null) 
-            : "The FigEdge has no dest port";
-        assert (newEdge.getSourceFigNode() != null) 
-            : "The FigEdge has no source node";
-        assert (newEdge.getSourcePortFig() != null) 
-            : "The FigEdge has no source port";
-
-        lay.add(newEdge);
+        addEdge(lay, newEdge, edge);
         return newEdge;
     }
 

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/ClassDiagramRenderer.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/ClassDiagramRenderer.java?view=diff&pathrev=17602&r1=17601&r2=17602
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/ClassDiagramRenderer.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/ClassDiagramRenderer.java	2009-12-04 04:45:12-0800
@@ -264,30 +264,7 @@
             newEdge = new FigEdgeNote(edge, settings);
         }
 
-        if (newEdge == null) {
-            throw new IllegalArgumentException(
-                    "Don't know how to create FigEdge for model type "
-                    + edge.getClass().getName());
-        }
-        
-        setPorts(lay, newEdge);
-
-        assert newEdge != null : "There has been no FigEdge created";
-
-//        newEdge.setDiElement(
-//            GraphChangeAdapter.getInstance().createElement(gm, edge));
-
-        assert newEdge != null : "There has been no FigEdge created";
-        assert (newEdge.getDestFigNode() != null) 
-            : "The FigEdge has no dest node";
-        assert (newEdge.getDestPortFig() != null) 
-            : "The FigEdge has no dest port";
-        assert (newEdge.getSourceFigNode() != null) 
-            : "The FigEdge has no source node";
-        assert (newEdge.getSourcePortFig() != null) 
-            : "The FigEdge has no source port";
-
-        lay.add(newEdge);
+        addEdge(lay, newEdge, edge);
         return newEdge;
     }
 }

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java?view=diff&pathrev=17602&r1=17601&r2=17602
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java	2009-12-04 04:45:12-0800
@@ -35,6 +35,7 @@
 
 import org.argouml.model.AddAssociationEvent;
 import org.argouml.model.AssociationChangeEvent;
+import org.argouml.model.AttributeChangeEvent;
 import org.argouml.model.Model;
 import org.argouml.model.RemoveAssociationEvent;
 import org.argouml.model.UmlChangeEvent;
@@ -147,6 +148,14 @@
         // TODO: We should be able to just call renderingChanged on the child
         // figs here instead of doing an updateOperations...
         updateOperations();
+        
+        // TODO: Taken from FigClassifierBoxWithAttribute to handle events
+        // on an attribute. All this event handling should eventually be moved
+        // to the compartment Fig for attributes
+        if (Model.getFacade().isAAttribute(getOwner())) {
+            // TODO: We shouldn't actually have to do all this work
+            updateAttributes();
+        }
     }
     
     /**
@@ -188,8 +197,53 @@
                 updateOperations();
             }
         }
+        
+        // TODO: Taken from FigClassifierBoxWithAttribute to handle events
+        // on an attribute. All this event handling should eventually be moved
+        // to the compartment Fig for attributes
+        if (Model.getFacade().isAAttribute(getOwner())) {
+            if (event instanceof AttributeChangeEvent) {
+                Object source = event.getSource();
+                if (Model.getFacade().isAAttribute(source)) {
+                    // TODO: We just need to get someone to re-render a single
+                    // line of text which represents the element here, but I'm
+                    // not sure how to do that. - tfm
+                    // TODO: Bob replies - we shouldn't be interested in this
+                    // event here. The FigFeature (or its notation) should be
+                    // listen for change and the FigFeature should be update
+                    // from that.
+                    updateAttributes();
+                }
+            } else if (event instanceof AssociationChangeEvent 
+                    && getOwner().equals(event.getSource())) {
+                Object o = null;
+                if (event instanceof AddAssociationEvent) {
+                    o = event.getNewValue();
+                } else if (event instanceof RemoveAssociationEvent) {
+                    o = event.getOldValue();
+                }
+                if (Model.getFacade().isAAttribute(o)) {
+                    // TODO: Bob says - we should not be listening here for
+                    // addition and removal of attributes. This should be done in
+                    // FigAttributesCompartment.
+                    updateAttributes();
+                }
+            }
+        }
     }
 
+    protected void updateAttributes() {
+        FigCompartment fc = getCompartment(Model.getMetaTypes().getAttribute());
+        if (!fc.isVisible()) {
+            return;
+        }
+        fc.populate();
+    
+        // TODO: make setBounds, calcBounds and updateBounds consistent
+        setBounds(getBounds());
+    }
+
+
     /**
      * @return The Fig for the operations compartment
      */

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartment.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartment.java?view=diff&pathrev=17602&r1=17601&r2=17602
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartment.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartment.java	2009-12-04 04:45:12-0800
@@ -75,7 +75,7 @@
 
     private void constructFigs(int x, int y, int w, int h) {
         bigPort = new FigRect(x, y, w, h, LINE_COLOR, FILL_COLOR);
-        bigPort.setFilled(true);
+        bigPort.setFilled(false);
         bigPort.setLineWidth(0);
 
         addFig(bigPort);

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEditableCompartment.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEditableCompartment.java?view=diff&pathrev=17602&r1=17601&r2=17602
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEditableCompartment.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEditableCompartment.java	2009-12-04 04:45:12-0800
@@ -421,15 +421,6 @@
         }
     }
 
-    @Override
-    public void setFilled(boolean f) {
-        super.setFilled(f);
-        compartmentSeparator.setFilled(true);
-        if (externalSeparatorFig != null) {
-            externalSeparatorFig.setFilled(true);
-        }
-    }
-
     /**
      * Set new bounds for the external separator line (if it exists).
      * 

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/UseCaseDiagramRenderer.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/UseCaseDiagramRenderer.java?view=diff&pathrev=17602&r1=17601&r2=17602
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/UseCaseDiagramRenderer.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/UseCaseDiagramRenderer.java	2009-12-04 04:45:12-0800
@@ -246,20 +246,7 @@
             newEdge = new FigEdgeNote(edge, settings);
         }
 
-        if (newEdge == null) {
-            throw new IllegalArgumentException(
-                    "Don't know how to create FigEdge for model type "
-                    + edge.getClass().getName());
-        } else {
-            setPorts(lay, newEdge);
-        }
-
-        lay.add(newEdge);
-        newEdge.setLayer(lay);
-        
-//        newEdge.setDiElement(
-//                GraphChangeAdapter.getInstance().createElement(gm, edge));
-
+        addEdge(lay, newEdge, edge);
         return newEdge;
     }

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2427006

To unsubscribe from this discussion, e-mail: [[email protected]].
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.