svn commit: r16393 - trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/ModeCreateMessage.java
Bob Tarling <[email protected]>
| Newsgroups | gmane.comp.lang.uml.argouml.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: bobtarling
Date: 2008-12-20 10:09:22-0800
New Revision: 16393
Modified:
trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/ModeCreateMessage.java
Log:
If create messages are moved then reposition heads above lifelines
Modified: trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/ModeCreateMessage.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/ModeCreateMessage.java?view=diff&pathrev=16393&r1=16392&r2=16393
==============================================================================
--- trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/ModeCreateMessage.java (original)
+++ trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/sequence2/diagram/ModeCreateMessage.java 2008-12-20 10:09:22-0800
@@ -51,6 +51,7 @@
Logger.getLogger(ModeCreateMessage.class);
private static final int DEFAULT_ACTIVATION_HEIGHT = 50;
+ private static final int DEFAULT_MESSAGE_GAP = 20;
/**
* The constructor.
@@ -86,10 +87,10 @@
FigClassifierRole dcr = (FigClassifierRole) fe.getDestFigNode();
FigClassifierRole scr = (FigClassifierRole) fe.getSourceFigNode();
+ ensureSpace(figMessage);
+
if (figMessage.isCallAction()) {
- ensureSpace(figMessage);
-
// get the source of the return message
final Object returnMessageSource =
Model.getFacade().getReceiver(message);
@@ -159,14 +160,37 @@
* @param figMessage
*/
private void ensureSpace(final FigMessage figMessage) {
+
+ // Make sure there is the minimum gap above the message being drawn
+ final FigMessage firstMessageAbove = getNearestMessage(
+ (FigClassifierRole) getSourceFigNode(),
+ figMessage,
+ false);
+
+ if (firstMessageAbove != null) {
+ final int figMessageY = figMessage.getFirstPoint().y;
+ final int firstMessageY = firstMessageAbove.getFirstPoint().y;
+ if ((figMessageY - firstMessageY) < DEFAULT_MESSAGE_GAP) {
+ figMessage.translateEdge(
+ 0,
+ firstMessageY + DEFAULT_MESSAGE_GAP - figMessageY);
+ }
+ }
+
+ // Make sure there is the minimum gap below the message being drawn
final FigMessage firstMessageBelow = getNearestMessage(
(FigClassifierRole) getSourceFigNode(),
figMessage,
true);
- final int defaultMessageGap = 20;
- final int heightPlusGap =
- DEFAULT_ACTIVATION_HEIGHT + defaultMessageGap;
+ final int heightPlusGap;
+ if (figMessage.isCallAction()) {
+ heightPlusGap =
+ DEFAULT_ACTIVATION_HEIGHT + DEFAULT_MESSAGE_GAP;
+ } else {
+ heightPlusGap =
+ DEFAULT_MESSAGE_GAP;
+ }
if (firstMessageBelow != null
&& firstMessageBelow.getFirstPoint().y
@@ -179,6 +203,11 @@
for (FigMessage fig : getMessagesBelow(figMessage)) {
fig.translateEdge(0, dy);
+ if (fig.isCreateAction()) {
+ FigClassifierRole fcr =
+ (FigClassifierRole) fig.getDestFigNode();
+ fcr.positionHead(fig);
+ }
}
}
}
@@ -246,9 +275,8 @@
final int val,
final FigMessage message1,
final FigMessage message2) {
- if (val >= message1.getFirstPoint().y
- && (message2 == null
- || val <= message2.getFirstPoint().y)) {
+ if ((message1 == null || val >= message1.getFirstPoint().y)
+ && (message2 == null || val <= message2.getFirstPoint().y)) {
return true;
}
return false;
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=988453
To unsubscribe from this discussion, e-mail: [[email protected]].