svn commit: r16178 - trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: bszanto
Date: 2008-11-26 04:55:53-0800
New Revision: 16178

Modified:
   trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigMessageSpline.java
   trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/SelectionClassifierRole.java

Log:
Fix for Issue 5122.

Modified: trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigMessageSpline.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigMessageSpline.java?view=diff&rev=16178&p1=trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigMessageSpline.java&p2=trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigMessageSpline.java&r1=16177&r2=16178
==============================================================================
--- trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigMessageSpline.java	(original)
+++ trunk/src/argouml-core-diagrams-sequence2/src/org/argouml/uml/diagram/sequence2/ui/FigMessageSpline.java	2008-11-26 04:55:53-0800
@@ -59,4 +59,27 @@
 	super.addPoint(end);
     }
     
+    /**
+     * This method is overridden in order to ignore change of the y coordinate
+     * during draging. Use translateFig(int dx, int dy) to force change of the
+     * y coordinate.
+     * @param dx the x offset
+     * @param dy the y offset - IGNORED
+     * @see org.tigris.gef.presentation.Fig#translate(int, int)
+     */
+    public void translate(int dx, int dy) {
+    	super.translate(dx, 0);
+    }
+    
+    /**
+     * Used in order to force translation of both X and Y coordiante.
+     * 
+     * @param dx the x offset
+     * @param dy the y offset
+     * @see org.tigris.gef.presentation.Fig#translate(int, int)
+     */
+    public void translateFig(int dx, int dy) {
+    	super.translate(dx, dy);
+    }
+    
 }

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=16178&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=16177&r2=16178
==============================================================================
--- 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-11-26 04:55:53-0800
@@ -30,6 +30,7 @@
 

 import javax.swing.Icon;

 

+import org.argouml.model.Model;

 import org.argouml.uml.diagram.ui.SelectionNodeClarifiers2;

 import org.tigris.gef.presentation.Fig;

 import org.tigris.gef.presentation.Handle;

@@ -106,7 +107,8 @@
             

             // 1. Remember current message paths

             for (Fig workOnFig : figs) {

-                if (workOnFig instanceof FigMessage) {

+                if (workOnFig instanceof FigMessage && 

+                		!((FigMessage) workOnFig).isSelfMessage()) {

                     polygonsByFig.put(

                     		workOnFig,

                     		((FigMessage) workOnFig).getPolygon());

@@ -124,9 +126,14 @@
             // 3. Now reposition messages based on their original position

             for (Fig workOnFig : figs) {

                 if (workOnFig instanceof FigMessage) {

-                    polygonsByFig.get(workOnFig).translate(0, deltaY);

-                    ((FigMessage) workOnFig).setPolygon(

-                    		polygonsByFig.get(workOnFig));

+                	if (((FigMessage) workOnFig).isSelfMessage()) {

+                		((FigMessageSpline) ((FigMessage) workOnFig).getFig())

+                				.translateFig(0, deltaY);

+                	} else {

+                		polygonsByFig.get(workOnFig).translate(0, deltaY);

+                		((FigMessage) workOnFig).setPolygon(

+                				polygonsByFig.get(workOnFig));

+                	}

                 }

             }

             break;

@@ -146,6 +153,15 @@
         }

 

         final Fig workOnFig = getContent();

+        

+        int oldCenterX = 0;

+        int newCenterX = 0;

+        // Compute the initial center position of the CR

+        if (workOnFig instanceof FigClassifierRole) {

+        	FigClassifierRole f = (FigClassifierRole) workOnFig;

+        	oldCenterX = f.getWidth() / 2 + f.getX();

+        }

+        

         // horizontal resizing

         switch (hand.index) {

         case Handle.NORTHWEST:

@@ -159,6 +175,24 @@
             break;

         default:

         }

+

+        // Compute the final center position of the CR

+        if (workOnFig instanceof FigClassifierRole) {

+        	FigClassifierRole f = (FigClassifierRole) workOnFig;

+        	newCenterX = f.getWidth() / 2 + f.getX();

+        }

+        

+        // Self messages act differently so it is needed to move them separetly.

+        // Only self messages of selected CR should be horizontally translated.

+        for (Fig fig : figs) {

+        	if (fig instanceof FigMessage && ((FigMessage) fig).isSelfMessage()

+        			&& Model.getCoreHelper().getDestination(fig.getOwner()).

+        					equals(workOnFig.getOwner())) {

+        		((FigMessageSpline) ((FigMessage) fig).getFig())

+	        			.translateFig(newCenterX - oldCenterX, 0);

+        	}

+		}

+        

     }

 

     @Override
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.