svn commit: r17304 - trunk/src/argouml-app/src/org/argouml/uml/diagram: . collaboration/ui deployment/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-08-31 14:42:02-0700
New Revision: 17304
Added:
trunk/src/argouml-app/src/org/argouml/uml/diagram/DiagramAssociationSettings.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/DiagramElementSettings.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ModeCreateAssociation.java
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/collaboration/ui/FigAssociationRole.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/DeploymentDiagramRenderer.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/ClassDiagramRenderer.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionSetAddAssociationMode.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociation.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociationClass.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ModeCreateAssociationClass.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/UseCaseDiagramRenderer.java
Log:
Set association ends in the constructor of FigAssociation
Added: trunk/src/argouml-app/src/org/argouml/uml/diagram/DiagramAssociationSettings.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/DiagramAssociationSettings.java?view=markup&pathrev=17304
==============================================================================
--- (empty file)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/DiagramAssociationSettings.java 2009-08-31 14:42:02-0700
@@ -0,0 +1,47 @@
+// $Id: eclipse-argo-codetemplates.xml 11347 2006-10-26 22:37:44Z linus $
+// Copyright (c) 2009 The Regents of the University of California. All
+// Rights Reserved. Permission to use, copy, modify, and distribute this
+// software and its documentation without fee, and without a written
+// agreement is hereby granted, provided that the above copyright notice
+// and this paragraph appear in all copies. This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason. IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.uml.diagram;
+
+public class DiagramAssociationSettings extends DiagramElementSettings {
+
+ private final Object associationEnd1;
+ private final Object associationEnd2;
+
+ public DiagramAssociationSettings(
+ final Object association,
+ final Object associationEnd1,
+ final Object associationEnd2) {
+ super(association);
+ this.associationEnd1 = associationEnd1;
+ this.associationEnd2 = associationEnd2;
+ }
+
+ public Object getAssociationEnd1() {
+ return associationEnd1;
+ }
+ public Object getAssociationEnd2() {
+ return associationEnd2;
+ }
+}
Added: trunk/src/argouml-app/src/org/argouml/uml/diagram/DiagramElementSettings.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/DiagramElementSettings.java?view=markup&pathrev=17304
==============================================================================
--- (empty file)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/DiagramElementSettings.java 2009-08-31 14:42:02-0700
@@ -0,0 +1,45 @@
+// $Id: eclipse-argo-codetemplates.xml 11347 2006-10-26 22:37:44Z linus $
+// Copyright (c) 2009 The Regents of the University of California. All
+// Rights Reserved. Permission to use, copy, modify, and distribute this
+// software and its documentation without fee, and without a written
+// agreement is hereby granted, provided that the above copyright notice
+// and this paragraph appear in all copies. This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason. IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.uml.diagram;
+
+/**
+ * Diagram element related settings to be supplied at construction of a
+ * diagram element.
+ *
+ * @author Bob Tarling
+ */
+public class DiagramElementSettings {
+
+ private final Object owner;
+
+ public DiagramElementSettings(final Object owner) {
+ this.owner = owner;
+ }
+
+ public Object getOwner() {
+ return owner;
+ }
+
+}
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=17304&r1=17303&r2=17304
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/UmlDiagramRenderer.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/UmlDiagramRenderer.java 2009-08-31 14:42:02-0700
@@ -317,5 +317,12 @@
return null;
}
-
+
+ protected FigNode getFigNodeForAssociationEnd(
+ final ArgoDiagram diagram,
+ final Object associationEnd) {
+ Object classifier =
+ Model.getFacade().getClassifier(associationEnd);
+ return (FigNode) diagram.presentationFor(classifier);
+ }
}
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=17304&r1=17303&r2=17304
==============================================================================
--- 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-08-31 14:42:02-0700
@@ -30,6 +30,7 @@
import org.argouml.model.Model;
import org.argouml.uml.CommentEdge;
import org.argouml.uml.diagram.ArgoDiagram;
+import org.argouml.uml.diagram.DiagramAssociationSettings;
import org.argouml.uml.diagram.DiagramSettings;
import org.argouml.uml.diagram.UmlDiagramRenderer;
import org.argouml.uml.diagram.static_structure.ui.FigEdgeNote;
@@ -125,7 +126,22 @@
FigEdge newEdge = null;
if (Model.getFacade().isAAssociationRole(edge)) {
- newEdge = new FigAssociationRole(edge, settings);
+ Object[] associationEnds =
+ Model.getFacade().getConnections(edge).toArray();
+ newEdge = new FigAssociationRole(
+ new DiagramAssociationSettings(
+ edge,
+ associationEnds[0],
+ associationEnds[1]),
+ settings);
+ FigNode sourceFig =
+ getFigNodeForAssociationEnd(diag, associationEnds[0]);
+ FigNode destFig =
+ getFigNodeForAssociationEnd(diag, associationEnds[1]);
+ newEdge.setSourceFigNode(sourceFig);
+ newEdge.setSourcePortFig(sourceFig);
+ newEdge.setDestFigNode(destFig);
+ newEdge.setDestPortFig(destFig);
} else if (Model.getFacade().isAGeneralization(edge)) {
newEdge = new FigGeneralization(edge, settings);
} else if (Model.getFacade().isADependency(edge)) {
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/FigAssociationRole.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/FigAssociationRole.java?view=diff&pathrev=17304&r1=17303&r2=17304
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/FigAssociationRole.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/collaboration/ui/FigAssociationRole.java 2009-08-31 14:42:02-0700
@@ -29,12 +29,14 @@
import java.util.List;
import org.argouml.notation.NotationProviderFactory2;
+import org.argouml.uml.diagram.DiagramElementSettings;
import org.argouml.uml.diagram.DiagramSettings;
import org.argouml.uml.diagram.ui.ArgoFigGroup;
import org.argouml.uml.diagram.ui.FigAssociation;
import org.argouml.uml.diagram.ui.FigMessage;
import org.argouml.uml.diagram.ui.PathItemPlacement;
import org.tigris.gef.presentation.Fig;
+import org.tigris.gef.presentation.FigPoly;
/**
@@ -47,15 +49,33 @@
private FigMessageGroup messages;
/**
+ * @deprecated Use
+ * FigAssociationClass(Object, Object, Object, DiagramSettings)
+ * @param associationRole The association model element
+ * @param settings The diagram settings
+ */
+ @Deprecated
+ public FigAssociationRole(
+ final Object associationRole,
+ final DiagramSettings settings) {
+ super(associationRole, settings);
+
+ messages = new FigMessageGroup(associationRole, settings);
+ addPathItem(messages, new PathItemPlacement(this, messages, 50, 10));
+ }
+
+ /**
* Construct an AssociationRole fig with the given onwer and render
* settings.
*
* @param owner owning UML element
* @param settings render settings
*/
- public FigAssociationRole(Object owner, DiagramSettings settings) {
- super(owner, settings);
- messages = new FigMessageGroup(owner, settings);
+ public FigAssociationRole(
+ final DiagramElementSettings diagramElementSettings,
+ final DiagramSettings settings) {
+ super(diagramElementSettings, settings);
+ messages = new FigMessageGroup(getOwner(), settings);
addPathItem(messages, new PathItemPlacement(this, messages, 50, 10));
}
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=17304&r1=17303&r2=17304
==============================================================================
--- 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-08-31 14:42:02-0700
@@ -31,6 +31,7 @@
import org.argouml.model.Model;
import org.argouml.uml.CommentEdge;
import org.argouml.uml.diagram.ArgoDiagram;
+import org.argouml.uml.diagram.DiagramAssociationSettings;
import org.argouml.uml.diagram.DiagramSettings;
import org.argouml.uml.diagram.UmlDiagramRenderer;
import org.argouml.uml.diagram.static_structure.ui.FigEdgeNote;
@@ -106,9 +107,39 @@
FigEdge newEdge = null;
if (Model.getFacade().isAAssociationClass(edge)) {
- newEdge = new FigAssociationClass(edge, settings);
+ Object[] associationEnds =
+ Model.getFacade().getConnections(edge).toArray();
+ newEdge = new FigAssociationClass(
+ new DiagramAssociationSettings(
+ edge,
+ associationEnds[0],
+ associationEnds[1]),
+ settings);
+ FigNode sourceFig =
+ getFigNodeForAssociationEnd(diag, associationEnds[0]);
+ FigNode destFig =
+ getFigNodeForAssociationEnd(diag, associationEnds[1]);
+ newEdge.setSourceFigNode(sourceFig);
+ newEdge.setSourcePortFig(sourceFig);
+ newEdge.setDestFigNode(destFig);
+ newEdge.setDestPortFig(destFig);
} else if (Model.getFacade().isAAssociation(edge)) {
- newEdge = new FigAssociation(edge, settings);
+ Object[] associationEnds =
+ Model.getFacade().getConnections(edge).toArray();
+ newEdge = new FigAssociation(
+ new DiagramAssociationSettings(
+ edge,
+ associationEnds[0],
+ associationEnds[1]),
+ settings);
+ FigNode sourceFig =
+ getFigNodeForAssociationEnd(diag, associationEnds[0]);
+ FigNode destFig =
+ getFigNodeForAssociationEnd(diag, associationEnds[1]);
+ newEdge.setSourceFigNode(sourceFig);
+ newEdge.setSourcePortFig(sourceFig);
+ newEdge.setDestFigNode(destFig);
+ newEdge.setDestPortFig(destFig);
} else if (Model.getFacade().isAAssociationEnd(edge)) {
FigAssociationEnd asend = new FigAssociationEnd(edge, settings);
Model.getFacade().getAssociation(edge);
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=17304&r1=17303&r2=17304
==============================================================================
--- 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-08-31 14:42:02-0700
@@ -32,6 +32,7 @@
import org.argouml.model.Model;
import org.argouml.uml.CommentEdge;
import org.argouml.uml.diagram.ArgoDiagram;
+import org.argouml.uml.diagram.DiagramAssociationSettings;
import org.argouml.uml.diagram.DiagramSettings;
import org.argouml.uml.diagram.GraphChangeAdapter;
import org.argouml.uml.diagram.UmlDiagramRenderer;
@@ -154,7 +155,22 @@
FigEdge newEdge = null;
if (Model.getFacade().isAAssociationClass(edge)) {
- newEdge = new FigAssociationClass(edge, settings);
+ Object[] associationEnds =
+ Model.getFacade().getConnections(edge).toArray();
+ newEdge = new FigAssociationClass(
+ new DiagramAssociationSettings(
+ edge,
+ associationEnds[0],
+ associationEnds[1]),
+ settings);
+ FigNode sourceFig =
+ getFigNodeForAssociationEnd(diag, associationEnds[0]);
+ FigNode destFig =
+ getFigNodeForAssociationEnd(diag, associationEnds[1]);
+ newEdge.setSourceFigNode(sourceFig);
+ newEdge.setSourcePortFig(sourceFig);
+ newEdge.setDestFigNode(destFig);
+ newEdge.setDestPortFig(destFig);
} else if (Model.getFacade().isAAssociationEnd(edge)) {
FigAssociationEnd asend = new FigAssociationEnd(edge, settings);
Model.getFacade().getAssociation(edge);
@@ -170,7 +186,22 @@
asend.setDestFigNode(classifierFN);
newEdge = asend;
} else if (Model.getFacade().isAAssociation(edge)) {
- newEdge = new FigAssociation(edge, settings);
+ Object[] associationEnds =
+ Model.getFacade().getConnections(edge).toArray();
+ newEdge = new FigAssociation(
+ new DiagramAssociationSettings(
+ edge,
+ associationEnds[0],
+ associationEnds[1]),
+ settings);
+ FigNode sourceFig =
+ getFigNodeForAssociationEnd(diag, associationEnds[0]);
+ FigNode destFig =
+ getFigNodeForAssociationEnd(diag, associationEnds[1]);
+ newEdge.setSourceFigNode(sourceFig);
+ newEdge.setSourcePortFig(sourceFig);
+ newEdge.setDestFigNode(destFig);
+ newEdge.setDestPortFig(destFig);
} else if (Model.getFacade().isALink(edge)) {
FigLink lnkFig = new FigLink(edge, settings);
Collection linkEndsColn = Model.getFacade().getConnections(edge);
@@ -259,5 +290,4 @@
lay.add(newEdge);
return newEdge;
}
-
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionSetAddAssociationMode.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionSetAddAssociationMode.java?view=diff&pathrev=17304&r1=17303&r2=17304
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionSetAddAssociationMode.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionSetAddAssociationMode.java 2009-08-31 14:42:02-0700
@@ -57,8 +57,10 @@
public ActionSetAddAssociationMode(Object aggregationKind,
boolean unidirectional,
String name) {
- super(ModeCreatePolyEdge.class, "edgeClass",
- Model.getMetaTypes().getAssociation(), name);
+// super(ModeCreatePolyEdge.class, "edgeClass",
+// Model.getMetaTypes().getAssociation(), name);
+ super(ModeCreateAssociation.class, "edgeClass",
+ Model.getMetaTypes().getAssociation(), name);
modeArgs.put("aggregation", aggregationKind);
modeArgs.put("unidirectional", Boolean.valueOf(unidirectional));
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociation.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociation.java?view=diff&pathrev=17304&r1=17303&r2=17304
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociation.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociation.java 2009-08-31 14:42:02-0700
@@ -43,6 +43,8 @@
import org.argouml.notation.NotationProviderFactory2;
import org.argouml.ui.ArgoJMenu;
import org.argouml.ui.targetmanager.TargetManager;
+import org.argouml.uml.diagram.DiagramAssociationSettings;
+import org.argouml.uml.diagram.DiagramElementSettings;
import org.argouml.uml.diagram.DiagramSettings;
import org.tigris.gef.presentation.ArrowHead;
import org.tigris.gef.presentation.ArrowHeadComposite;
@@ -77,23 +79,56 @@
*/
private FigTextGroup middleGroup;
-
+ /**
+ * @deprecated Use
+ * FigAssociation(Object, Object, Object, DiagramSettings)
+ * @param association The association model element
+ * @param settings The diagram settings
+ */
+ @Deprecated
+ public FigAssociation(
+ final Object association,
+ final DiagramSettings settings) {
+ super(association, settings);
+
+ createNameLabel(association, settings);
+
+ Iterator it = Model.getFacade().getAssociationEnds(association).iterator();
+
+ final Object sourceAssociationEnd = it.next();
+ final Object destAssociationEnd = it.next();
+
+ createEndFigs(sourceAssociationEnd, destAssociationEnd, settings, 45);
+
+ setBetweenNearestPoints(true);
+
+ initializeNotationProvidersInternal(association);
+ }
+
/**
* Constructor used by PGML parser.
*
- * @param owner owning uml element
+ * @param diagramElementSettings the destination uml association-end element
* @param settings rendering settings
*/
- public FigAssociation(Object owner, DiagramSettings settings) {
- super(owner, settings);
+ public FigAssociation(
+ final DiagramElementSettings diagramElementSettings,
+ final DiagramSettings settings) {
+ super(diagramElementSettings.getOwner(), settings);
- createNameLabel(owner, settings);
+ createNameLabel(getOwner(), settings);
- createEndFigs(owner, settings);
+ final DiagramAssociationSettings set =
+ (DiagramAssociationSettings) diagramElementSettings;
+
+ createEndFigs(
+ set.getAssociationEnd1(),
+ set.getAssociationEnd2(),
+ settings, 45);
setBetweenNearestPoints(true);
- initializeNotationProvidersInternal(owner);
+ initializeNotationProvidersInternal(getOwner());
}
/**
@@ -104,17 +139,21 @@
* That will allow the same pattern to work for UML2 where we cannot assume
* the connection order.
*
- * @param owner
+ * @param sourceAssociationEnd
+ * @param destAssociationEnd
* @param settings
*/
private void createEndFigs(
- final Object owner,
- final DiagramSettings settings) {
- final Object[] ends = // UML objects of AssociationEnd type
- Model.getFacade().getConnections(owner).toArray();
-
- srcEnd = createEnd(ends[0], settings, 0, 5, 135, 5);
- destEnd = createEnd(ends[1], settings, 100, -5, 45, 5);
+ final Object sourceAssociationEnd,
+ final Object destAssociationEnd,
+ final DiagramSettings settings,
+ final int displacementAngle) {
+ srcEnd = createEnd(
+ sourceAssociationEnd,
+ settings, 0, 5, 180 - displacementAngle, 5);
+ destEnd = createEnd(
+ destAssociationEnd,
+ settings, 100, -5, displacementAngle, 5);
}
private EndDecoration createEnd(
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociationClass.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociationClass.java?view=diff&pathrev=17304&r1=17303&r2=17304
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociationClass.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociationClass.java 2009-08-31 14:42:02-0700
@@ -29,7 +29,9 @@
import java.util.Iterator;
import java.util.List;
+import org.argouml.model.Model;
import org.argouml.uml.diagram.AttributesCompartmentContainer;
+import org.argouml.uml.diagram.DiagramElementSettings;
import org.argouml.uml.diagram.DiagramSettings;
import org.argouml.uml.diagram.OperationsCompartmentContainer;
import org.argouml.uml.diagram.PathContainer;
@@ -68,14 +70,36 @@
private static final long serialVersionUID = 3643715304027095083L;
/**
+ * @deprecated Use
+ * FigAssociationClass(Object, Object, Object, DiagramSettings)
+ * @param associationClass The association model element
+ * @param settings The diagram settings
+ */
+ @Deprecated
+ public FigAssociationClass(
+ final Object associationClass,
+ final DiagramSettings settings) {
+ super(associationClass, settings);
+
+ setBetweenNearestPoints(true);
+ ((FigPoly) getFig()).setRectilinear(false);
+ setDashed(false);
+ }
+
+
+
+
+ /**
* Construct an association class figure for the given AssociationClass
* model element using the rendering settings.
*
* @param element model element
* @param settings rendering settings
*/
- public FigAssociationClass(Object element, DiagramSettings settings) {
- super(element, settings);
+ public FigAssociationClass(
+ final DiagramElementSettings diagramElementSettings,
+ final DiagramSettings settings) {
+ super(diagramElementSettings, settings);
setBetweenNearestPoints(true);
((FigPoly) getFig()).setRectilinear(false);
setDashed(false);
Added: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ModeCreateAssociation.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ModeCreateAssociation.java?view=markup&pathrev=17304
==============================================================================
--- (empty file)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ModeCreateAssociation.java 2009-08-31 14:42:02-0700
@@ -0,0 +1,126 @@
+// $Id: FigStereotype.java 11516 2006-11-25 04:30:15Z tfmorris $
+// Copyright (c) 2006 The Regents of the University of California. All
+// Rights Reserved. Permission to use, copy, modify, and distribute this
+// software and its documentation without fee, and without a written
+// agreement is hereby granted, provided that the above copyright notice
+// and this paragraph appear in all copies. This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason. IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.uml.diagram.ui;
+
+import java.awt.Color;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.argouml.model.IllegalModelElementConnectionException;
+import org.argouml.model.Model;
+import org.argouml.uml.diagram.static_structure.ui.FigClassifierBox;
+import org.tigris.gef.base.Layer;
+import org.tigris.gef.graph.MutableGraphModel;
+import org.tigris.gef.presentation.Fig;
+import org.tigris.gef.presentation.FigEdge;
+import org.tigris.gef.presentation.FigNode;
+
+/**
+ * A Mode to interpret user input while drawing a binary association.
+ * The association can connect two existing classifiers.
+ *
+ * @author Bob Tarling
+ */
+public class ModeCreateAssociation extends ModeCreateGraphEdge {
+
+ public Object getMetaType() {
+ return Model.getMetaTypes().getAssociation();
+ }
+
+ /**
+ * Create an edge of the given type and connect it to the
+ * given nodes.
+ *
+ * @param graphModel the graph model in which to create the connection
+ * element
+ * @param edgeType the UML object type of the connection
+ * @param sourceFigNode the FigNode for the source element
+ * @param destFigNode the FigNode for the destination element
+ * @return The FigEdge representing the newly created model element
+ */
+ @Override
+ protected FigEdge buildConnection(
+ MutableGraphModel graphModel,
+ Object edgeType,
+ Fig sourceFigNode,
+ Fig destFigNode) {
+ Object association = graphModel.connect(
+ sourceFigNode.getOwner(),
+ destFigNode.getOwner(),
+ edgeType);
+
+ setNewEdge(association);
+
+ // Calling connect() will add the edge to the GraphModel and
+ // any LayerPersectives on that GraphModel will get a
+ // edgeAdded event and will add an appropriate FigEdge
+ // (determined by the GraphEdgeRenderer).
+
+ if (getNewEdge() != null) {
+
+ getSourceFigNode().damage();
+ destFigNode.damage();
+ Layer lay = editor.getLayerManager().getActiveLayer();
+ FigAssociation fe = (FigAssociation) lay.presentationFor(getNewEdge());
+ _newItem.setLineColor(Color.black);
+ fe.setFig(_newItem);
+
+// boolean flip = false;
+//
+// final Iterator iter =
+// Model.getFacade().getConnections(association).iterator();
+//
+// Object sourceAssociationEnd = iter.next();
+// Object destAssociationEnd = iter.next();
+//
+// if (getArg("unidirectional").equals(Boolean.TRUE)) {
+// if (!Model.getFacade().isNavigable(destAssociationEnd)) {
+// flip = true;
+// }
+// } else if (!getArg("aggregation").equals(Model.getAggregationKind().getNone())) {
+// if (Model.getFacade().getAggregation(destAssociationEnd).equals(
+// getArg("aggregation"))) {
+// flip = true;
+// }
+// }
+// if (flip) {
+// fe.setDestPortFig(getStartPortFig());
+// fe.setDestFigNode(getSourceFigNode());
+// fe.setSourcePortFig(destFigNode);
+// fe.setSourceFigNode((FigNode) destFigNode);
+// } else {
+// fe.setSourcePortFig(getStartPortFig());
+// fe.setSourceFigNode(getSourceFigNode());
+// fe.setDestPortFig(destFigNode);
+// fe.setDestFigNode((FigNode) destFigNode);
+// }
+ return fe;
+
+ } else {
+ return null;
+ }
+ }
+
+}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ModeCreateAssociationClass.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ModeCreateAssociationClass.java?view=diff&pathrev=17304&r1=17303&r2=17304
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ModeCreateAssociationClass.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ModeCreateAssociationClass.java 2009-08-31 14:42:02-0700
@@ -33,7 +33,6 @@
import org.tigris.gef.base.Editor;
import org.tigris.gef.base.Layer;
import org.tigris.gef.base.LayerPerspective;
-import org.tigris.gef.base.ModeCreatePolyEdge;
import org.tigris.gef.graph.MutableGraphModel;
import org.tigris.gef.presentation.FigEdge;
@@ -45,7 +44,7 @@
*
* @author Bob Tarling
*/
-public class ModeCreateAssociationClass extends ModeCreatePolyEdge {
+public class ModeCreateAssociationClass extends ModeCreateAssociation {
private static final long serialVersionUID = -8656139458297932182L;
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=17304&r1=17303&r2=17304
==============================================================================
--- 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-08-31 14:42:02-0700
@@ -30,6 +30,7 @@
import org.argouml.model.Model;
import org.argouml.uml.CommentEdge;
import org.argouml.uml.diagram.ArgoDiagram;
+import org.argouml.uml.diagram.DiagramAssociationSettings;
import org.argouml.uml.diagram.DiagramSettings;
import org.argouml.uml.diagram.DiagramUtils;
import org.argouml.uml.diagram.GraphChangeAdapter;
@@ -158,13 +159,29 @@
throw new IllegalArgumentException("A model edge must be supplied");
}
- DiagramSettings settings = ((ArgoDiagram) ((LayerPerspective) lay)
- .getDiagram()).getDiagramSettings();
+ assert lay instanceof LayerPerspective;
+ ArgoDiagram diag = (ArgoDiagram) ((LayerPerspective) lay).getDiagram();
+ DiagramSettings settings = diag.getDiagramSettings();
FigEdge newEdge = null;
if (Model.getFacade().isAAssociation(edge)) {
- newEdge = new FigAssociation(edge, settings);
+ final Object[] associationEnds =
+ Model.getFacade().getConnections(edge).toArray();
+ newEdge = new FigAssociation(
+ new DiagramAssociationSettings(
+ edge,
+ associationEnds[0],
+ associationEnds[1]),
+ settings);
+ final FigNode sourceFig =
+ getFigNodeForAssociationEnd(diag, associationEnds[0]);
+ final FigNode destFig =
+ getFigNodeForAssociationEnd(diag, associationEnds[1]);
+ newEdge.setSourceFigNode(sourceFig);
+ newEdge.setSourcePortFig(sourceFig);
+ newEdge.setDestFigNode(destFig);
+ newEdge.setDestPortFig(destFig);
} else if (Model.getFacade().isAGeneralization(edge)) {
newEdge = new FigGeneralization(edge, settings);
} else if (Model.getFacade().isAExtend(edge)) {
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2389552
To unsubscribe from this discussion, e-mail: [[email protected]].