svn commit: r17297 - trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociation.java
Bob Tarling <[email protected]>
| Newsgroups | gmane.comp.lang.uml.argouml.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: bobtarling
Date: 2009-08-25 00:59:44-0700
New Revision: 17297
Modified:
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigAssociation.java
Log:
Gather end data into its own class
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=17297&r1=17296&r2=17297
==============================================================================
--- 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-25 00:59:44-0700
@@ -64,16 +64,12 @@
/**
* Group for the FigTexts concerning the source association end.
*/
- // TODO: Create a seperate innerclass containing these two Figs
- private FigAssociationEndAnnotation srcGroup;
- private FigMultiplicity srcMult;
+ private EndDecoration srcEnd;
/**
* Group for the FigTexts concerning the dest association end.
*/
- // TODO: Create a seperate innerclass containing these two Figs
- private FigAssociationEndAnnotation destGroup;
- private FigMultiplicity destMult;
+ private EndDecoration destEnd;
/**
* Group for the FigTexts concerning the name and stereotype of the
@@ -100,78 +96,41 @@
initializeNotationProvidersInternal(owner);
}
-
+ /**
+ * Called by the constructor to create the Figs at each end
+ * of the association.
+ * TODO: This is temporary during refactoring process. We should
+ * override setDestFigNode and setSourceFigNode and create the ends there.
+ * That will allow the same pattern to work for UML2 where we cannot assume
+ * the connection order.
+ *
+ * @param owner
+ * @param settings
+ */
private void createEndFigs(
final Object owner,
final DiagramSettings settings) {
final Object[] ends = // UML objects of AssociationEnd type
Model.getFacade().getConnections(owner).toArray();
- createSourceEnd(ends[0], settings, 0, 5, 135, 5);
- createDestEnd(ends[1], settings, 100, -5, 45, 5);
+ srcEnd = createEnd(ends[0], settings, 0, 5, 135, 5);
+ destEnd = createEnd(ends[1], settings, 100, -5, 45, 5);
}
-
- // TODO createSourceEnd and createDestEnd are almost identical.
- // They could be replaced with a single method that returns some
- // composite object made up of the group and multiplicty Figs
- private void createSourceEnd(
- final Object endOwner,
- final DiagramSettings settings,
- final int percentPostionOnLine,
- final int pathDelta,
- final int displacementAngle,
- final int displacementDistance) {
- srcMult = new FigMultiplicity(endOwner, settings);
- addPathItem(srcMult,
- new PathItemPlacement(this, srcMult,
- percentPostionOnLine, pathDelta,
- displacementAngle, displacementDistance));
- ArgoFigUtil.markPosition(
- this, percentPostionOnLine, pathDelta,
- displacementAngle, displacementDistance, Color.green);
-
- srcGroup = new FigAssociationEndAnnotation(this, endOwner, settings);
- addPathItem(srcGroup,
- new PathItemPlacement(this, srcGroup,
- percentPostionOnLine, pathDelta,
- -displacementAngle, displacementDistance));
- ArgoFigUtil.markPosition(
- this, percentPostionOnLine, pathDelta,
- -displacementAngle, displacementDistance, Color.blue);
- }
-
- // TODO createSourceEnd and createDestEnd are almost identical.
- // They could be replaced with a single method that returns some
- // composite object made up of the group and multiplicty Figs
- private void createDestEnd(
+ private EndDecoration createEnd(
final Object endOwner,
final DiagramSettings settings,
final int percentPostionOnLine,
final int pathDelta,
final int displacementAngle,
final int displacementDistance) {
- destMult = new FigMultiplicity(endOwner, settings);
- addPathItem(destMult,
- new PathItemPlacement(
- this, destMult,
- percentPostionOnLine, pathDelta,
- displacementAngle, displacementDistance));
- ArgoFigUtil.markPosition(
- this, percentPostionOnLine, pathDelta,
- displacementAngle, displacementDistance, Color.red);
-
- destGroup = new FigAssociationEndAnnotation(this, endOwner, settings);
- addPathItem(destGroup,
- new PathItemPlacement(
- this, destGroup, percentPostionOnLine, pathDelta,
- -displacementAngle, displacementDistance));
- ArgoFigUtil.markPosition(
- this, percentPostionOnLine, pathDelta,
- -displacementAngle, displacementDistance, Color.orange);
+ return new EndDecoration(endOwner, settings,
+ percentPostionOnLine,
+ pathDelta,
+ displacementAngle,
+ displacementDistance);
}
-
/**
* Create the main draggable label for the association.
* This can be overridden in subclasses to change behaviour.
@@ -199,10 +158,8 @@
public void renderingChanged() {
super.renderingChanged();
/* This fixes issue 4987: */
- srcMult.renderingChanged();
- destMult.renderingChanged();
- srcGroup.renderingChanged();
- destGroup.renderingChanged();
+ srcEnd.renderingChanged();
+ destEnd.renderingChanged();
middleGroup.renderingChanged();
}
@@ -214,8 +171,8 @@
private void initializeNotationProvidersInternal(Object own) {
super.initNotationProviders(own);
- srcMult.initNotationProviders();
- destMult.initNotationProviders();
+ srcEnd.initNotationProviders();
+ destEnd.initNotationProviders();
}
/*
@@ -259,14 +216,14 @@
return;
}
- if (ft == srcGroup.getRole()) {
- srcGroup.getRole().textEdited();
- } else if (ft == destGroup.getRole()) {
- destGroup.getRole().textEdited();
- } else if (ft == srcMult) {
- srcMult.textEdited();
- } else if (ft == destMult) {
- destMult.textEdited();
+ if (ft == srcEnd.getRole()) {
+ srcEnd.getRole().textEdited();
+ } else if (ft == destEnd.getRole()) {
+ destEnd.getRole().textEdited();
+ } else if (ft == srcEnd.getMult()) {
+ srcEnd.getMult().textEdited();
+ } else if (ft == destEnd.getMult()) {
+ destEnd.getMult().textEdited();
}
}
@@ -275,14 +232,14 @@
*/
@Override
protected void textEditStarted(FigText ft) {
- if (ft == srcGroup.getRole()) {
- srcGroup.getRole().textEditStarted();
- } else if (ft == destGroup.getRole()) {
- destGroup.getRole().textEditStarted();
- } else if (ft == srcMult) {
- srcMult.textEditStarted();
- } else if (ft == destMult) {
- destMult.textEditStarted();
+ if (ft == srcEnd.getRole()) {
+ srcEnd.getRole().textEditStarted();
+ } else if (ft == destEnd.getRole()) {
+ destEnd.getRole().textEditStarted();
+ } else if (ft == srcEnd.getMult()) {
+ srcEnd.getMult().textEditStarted();
+ } else if (ft == destEnd.getMult()) {
+ destEnd.getMult().textEditStarted();
} else {
super.textEditStarted(ft);
}
@@ -295,13 +252,13 @@
* be called from renderingChanged()?
*/
protected void applyArrowHeads() {
- if (srcGroup == null || destGroup == null) {
+ if (srcEnd == null || destEnd == null) {
/* This only happens if model-change events arrive
* before we are completely constructed. */
return;
}
- int sourceArrowType = srcGroup.getArrowType();
- int destArrowType = destGroup.getArrowType();
+ int sourceArrowType = srcEnd.getArrowType();
+ int destArrowType = destEnd.getArrowType();
if (!getSettings().isShowBidirectionalArrows()
&& sourceArrowType > 2
@@ -432,10 +389,10 @@
*/
protected void updateMultiplicity() {
if (getOwner() != null
- && srcMult.getOwner() != null
- && destMult.getOwner() != null) {
- srcMult.setText();
- destMult.setText();
+ && srcEnd.getOwner() != null
+ && destEnd.getOwner() != null) {
+ srcEnd.getMult().setText();
+ destEnd.getMult().setText();
}
}
@@ -462,10 +419,10 @@
@Override
public void paintClarifiers(Graphics g) {
indicateBounds(getNameFig(), g);
- indicateBounds(srcMult, g);
- indicateBounds(srcGroup.getRole(), g);
- indicateBounds(destMult, g);
- indicateBounds(destGroup.getRole(), g);
+ indicateBounds(srcEnd.getMult(), g);
+ indicateBounds(srcEnd.getRole(), g);
+ indicateBounds(destEnd.getMult(), g);
+ indicateBounds(destEnd.getRole(), g);
super.paintClarifiers(g);
}
@@ -525,6 +482,70 @@
}
}
+
+ /**
+ *
+ */
+ class EndDecoration {
+ private FigAssociationEndAnnotation group;
+ private FigMultiplicity mult;
+
+ EndDecoration(
+ final Object endOwner,
+ final DiagramSettings settings,
+ final int percentPostionOnLine,
+ final int pathDelta,
+ final int displacementAngle,
+ final int displacementDistance) {
+ mult = new FigMultiplicity(endOwner, settings);
+ addPathItem(mult,
+ new PathItemPlacement(FigAssociation.this, mult,
+ percentPostionOnLine, pathDelta,
+ displacementAngle, displacementDistance));
+ ArgoFigUtil.markPosition(
+ FigAssociation.this, percentPostionOnLine, pathDelta,
+ displacementAngle, displacementDistance, Color.green);
+
+ group = new FigAssociationEndAnnotation(
+ FigAssociation.this, endOwner, settings);
+ addPathItem(group,
+ new PathItemPlacement(FigAssociation.this, group,
+ percentPostionOnLine, pathDelta,
+ -displacementAngle, displacementDistance));
+ ArgoFigUtil.markPosition(
+ FigAssociation.this, percentPostionOnLine, pathDelta,
+ -displacementAngle, displacementDistance, Color.blue);
+ }
+
+ public FigAssociationEndAnnotation getGroup() {
+ return group;
+ }
+
+ public FigMultiplicity getMult() {
+ return mult;
+ }
+
+ public FigRole getRole() {
+ return group.getRole();
+ }
+
+ public int getArrowType() {
+ return group.getArrowType();
+ }
+
+ public void renderingChanged() {
+ mult.renderingChanged();
+ group.renderingChanged();
+ }
+
+ public void initNotationProviders() {
+ mult.initNotationProviders();
+ }
+
+ public Object getOwner() {
+ return mult.getOwner();
+ }
+ }
} /* end class FigAssociation */
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2386957
To unsubscribe from this discussion, e-mail: [[email protected]].