svn commit: r14900 - trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui
| Newsgroups | gmane.comp.lang.uml.argouml.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: bobtarling
Date: 2008-06-11 11:15:58-0700
New Revision: 14900
Modified:
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigClassifierRole.java
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/ModePlaceClassifierRole.java
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SelectionClassifierRole.java
Log:
Latest update from Bogdan S for issue 5121
Modified: trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigClassifierRole.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigClassifierRole.java?view=diff&rev=14900&p1=trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigClassifierRole.java&p2=trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigClassifierRole.java&r1=14899&r2=14900
==============================================================================
--- trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigClassifierRole.java (original)
+++ trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigClassifierRole.java 2008-06-11 11:15:58-0700
@@ -25,6 +25,7 @@
package org.argouml.uml.diagram.sequence2.ui;
import java.awt.Color;
+import java.awt.Dimension;
import java.awt.Point;
import java.awt.Rectangle;
import java.util.ArrayList;
@@ -179,6 +180,19 @@
return createMessage;
}
+ /**
+ *
+ * @return the
+ * @see org.tigris.gef.presentation.Fig#getMinimumSize()
+ */
+ public Dimension getMinimumSize() {
+ // The minimum size of the CR is the minimum size of the headFig
+ // An extra buffer of 10 for the height to ensure lifeLine visibility
+ return new Dimension(
+ headFig.getMinimumWidth(), headFig.getMinimumHeight() + 10);
+ }
+
+
@Override
public void addFigEdge(FigEdge edge) {
super.addFigEdge(edge);
Modified: trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/ModePlaceClassifierRole.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/ModePlaceClassifierRole.java?view=diff&rev=14900&p1=trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/ModePlaceClassifierRole.java&p2=trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/ModePlaceClassifierRole.java&r1=14899&r2=14900
==============================================================================
--- trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/ModePlaceClassifierRole.java (original)
+++ trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/ModePlaceClassifierRole.java 2008-06-11 11:15:58-0700
@@ -59,22 +59,26 @@
}
- private void postProcessing() {
- // _pers is the FigClassifierRole we're trying to place
- int y = _pers.getY();
- Layer lay = editor.getLayerManager().getActiveLayer();
- List nodes = lay.getContentsNoEdges();
+ /**
+ * Set height and Y position of the new CR as the already existing CRs.
+ */
+ private void postProcessing() {
+ List nodes =
+ editor.getLayerManager().getActiveLayer().getContentsNoEdges();
+ int i = 0;
+ boolean figClassifierRoleFound = false;
+ Fig fig = null;
+
// Get the first existing FigNode and if it exists set the
- // y position of _pers to be the same as it.
- // TODO: What if the first node is not a FigClassifierRole but is a
- // FigComment. Make this safe for that.
- // TODO: We should also fix height as well as y position here.
- if (nodes.size() > 0) {
- Fig fig = (Fig) nodes.get(0);
- if (fig != _pers) {
- y = fig.getY();
- _pers.setY(y);
+ // y position and height of _pers to be the same as it.
+ while (i < nodes.size() && !figClassifierRoleFound) {
+ fig = (Fig) nodes.get(i);
+ if (fig != _pers && fig instanceof FigClassifierRole) {
+ _pers.setY(fig.getY());
+ _pers.setHeight(fig.getHeight());
+ figClassifierRoleFound = true;
}
+ i++;
}
}
}
Modified: trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SelectionClassifierRole.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SelectionClassifierRole.java?view=diff&rev=14900&p1=trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SelectionClassifierRole.java&p2=trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SelectionClassifierRole.java&r1=14899&r2=14900
==============================================================================
--- trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SelectionClassifierRole.java (original)
+++ trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SelectionClassifierRole.java 2008-06-11 11:15:58-0700
@@ -61,75 +61,63 @@
return;
}
- // TODO: Avoid Globals when possible. That's a nasty anti-pattern in GEF.
- // We can get the Layer object from getContent().getLayer() and then get
- // the other contents of the layer from that Layer with getContents().
- List<Fig> figs = Globals.curEditor().getLayerManager().getContents();
+ List<Fig> figs = getContent().getLayer().getContents();
// get the bounds of FigMessages
int yMax = 65535; // this should be big enough for init
int yMin = 0;
- // TODO Java 5 style for loop would be nicer
- for (int i = 0; i < figs.size(); i++) {
- // TODO use instanceof rather than equate class name
- if (figs.get(i).getClass() == FigMessage.class) {
- if (figs.get(i).getY() < yMax) {
- yMax = figs.get(i).getY();
+ for (Fig fig : figs) {
+ if (fig instanceof FigMessage) {
+ if (fig.getY() < yMax) {
+ yMax = fig.getY();
}
- if (figs.get(i).getY() > yMin) {
- yMin = figs.get(i).getY();
+ if (fig.getY() > yMin) {
+ yMin = fig.getY();
}
}
}
// a little buffer to ensure good visibility
- // yMax -= 10; // no required
+ // yMax -= 10; // not required
yMin += 10;
- int headFigHeight = 0;
- Fig workOnFig = null;
-
// vertical resizing
switch (hand.index) {
case Handle.NORTHWEST:
case Handle.NORTH:
case Handle.NORTHEAST:
// TODO Java 5 style for loop would be nicer
- for (int i = 0; i < figs.size(); i++) {
- workOnFig = figs.get(i);
- // TODO use instanceof rather than equate class name
- if (workOnFig.getClass() == FigClassifierRole.class) {
- // TODO This looks rather complex and contains knowledge
- // of how a FigClassifierRole is constructed (uses child
- // item 3).
- // Would it be useful to implement getMinimumSize()
- // on FigClassifierRole and call that here?
- // The double casting is almost certainly not needed here.
- headFigHeight = ((Fig) ((FigClassifierRole) (workOnFig))
- .getFigs().get(3)).getHeight();
- if ((mY + headFigHeight < yMax)) {
- workOnFig.setHeight(workOnFig.getHeight()
- + workOnFig.getY() - mY);
- workOnFig.setY(mY);
- }
+ for (Fig workOnFig : figs) {
+ /*
+ * the resize will take place if the workOnFig 1. is a
+ * FifClassifierRole 2. doesn't force a FigMessage to move 3.
+ * doesn't violate minimum size of a CR
+ */
+ if (workOnFig instanceof FigClassifierRole
+ && mY + workOnFig.getMinimumSize().height < yMax
+ && (workOnFig.getHeight() + workOnFig.getY() - mY) > workOnFig
+ .getMinimumSize().height) {
+ workOnFig.setHeight(workOnFig.getHeight()
+ + workOnFig.getY() - mY);
+ workOnFig.setY(mY);
}
}
break;
case Handle.SOUTH:
case Handle.SOUTHEAST:
case Handle.SOUTHWEST:
- // TODO Java 5 style for loop would be nicer
- for (int i = 0; i < figs.size(); i++) {
- workOnFig = figs.get(i);
- // TODO use instanceof rather than equate class name
- if (workOnFig.getClass() == FigClassifierRole.class
- && mY > yMin) {
+ for (Fig workOnFig : figs) {
+ // same conditions here as above
+ if (workOnFig instanceof FigClassifierRole
+ && mY > yMin
+ && mY - workOnFig.getY()
+ > workOnFig.getMinimumSize().height) {
workOnFig.setHeight(mY - workOnFig.getY());
}
}
default:
}
- workOnFig = getContent();
+ Fig workOnFig = getContent();
// horizontal resizing
switch (hand.index) {
case Handle.NORTHWEST: