svn commit: r17731 - trunk/src/argouml-app/src/org/argouml/uml/diagram: ui use_case/ui

Bob Tarling <[email protected]>
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: bobtarling
Date: 2010-01-03 10:16:05-0800
New Revision: 17731

Modified:
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartment.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartmentBox.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java

Log:
Make the compartment separator a child of the main Fig rather than the compartment.
Make sure this is the width of the classifier box.

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartment.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartment.java?view=diff&pathrev=17731&r1=17730&r2=17731
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartment.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartment.java	2010-01-03 10:16:05-0800
@@ -81,14 +81,9 @@
     private static final int MIN_HEIGHT = FigNodeModelElement.NAME_FIG_HEIGHT;
 
     /**
-     * A separator line that has the same width as the compartment.
-     */
-    private FigSeparator compartmentSeparator;
-
-    /**
      * A separator line that may be wider than the compartment.
      */
-    private Fig externalSeparatorFig = null;
+    private Fig externalSeparatorFig = new FigSeparator(X0, Y0, 11, LINE_WIDTH);
 
 
     /**
@@ -108,15 +103,11 @@
     }
 
     private void constructFigs(int x, int y, int w, int h) {
-        bigPort = new FigRect(x, y, w, h, LINE_COLOR, FILL_COLOR);
+        bigPort = new FigRect(X0, Y0, w, h, LINE_COLOR, FILL_COLOR);
         bigPort.setFilled(false);
         bigPort.setLineWidth(0);
 
         addFig(bigPort);
-        
-        compartmentSeparator = 
-            new FigSeparator(X0, Y0, 11, LINE_WIDTH);
-        addFig(compartmentSeparator); // number 2
     }
     
     /**
@@ -133,13 +124,6 @@
     }
     
     /**
-     * @return separator figure
-     */
-    protected FigSeparator getSeperatorFig() {
-        return compartmentSeparator;
-    }
-
-    /**
      * If a boxed compartment is set to invisible then remove all its
      * children.
      * This is to save on resources and increase efficiency as multiple
@@ -214,8 +198,7 @@
 
         minHeight += 2; // 2 Pixel padding after compartment
         
-        minHeight = Math.max(minHeight, 
-                MIN_HEIGHT + compartmentSeparator.getHeight());
+        minHeight = Math.max(minHeight, MIN_HEIGHT);
         
         return new Dimension(minWidth, minHeight);
     }
@@ -307,7 +290,7 @@
         int xpos = bigPort.getX();
         int ypos = bigPort.getY();
 
-        List<Fig> figs = getElementFigs();
+        List<CompartmentFigText> figs = getElementFigs();
         // We remove all of them:
         for (Fig f : figs) {
             removeFig(f);    
@@ -458,27 +441,24 @@
     }
     
     /* Find the compartment fig for this umlObject: */
-    private CompartmentFigText findCompartmentFig(List<Fig> figs, 
+    private CompartmentFigText findCompartmentFig(List<CompartmentFigText> figs, 
             Object umlObject) {
-        for (Fig fig : figs) {
-            if (fig instanceof CompartmentFigText) {
-                CompartmentFigText candidate = (CompartmentFigText) fig;
-                if (candidate.getOwner() == umlObject) {
-                    return candidate;
-                }
+        for (CompartmentFigText fig : figs) {
+            if (fig.getOwner() == umlObject) {
+                return fig;
             }
         }
         return null;
     }
 
-    private List<Fig> getElementFigs() {
-        List<Fig> figs = new ArrayList<Fig>(getFigs());
-        // TODO: This is fragile and depends on the behavior of the super class
-        // not changing
-        if (figs.size() > 1) {
-            // Ignore the first 2 figs:
-            figs.remove(1); // the separator
-            figs.remove(0); // the bigPort
+    private List<CompartmentFigText> getElementFigs() {
+        final List<CompartmentFigText> figs =
+            new ArrayList<CompartmentFigText>(getFigs().size());
+        
+        for (Object f : getFigs()) {
+            if (f instanceof CompartmentFigText) {
+                figs.add((CompartmentFigText) f);
+            }
         }
         return figs;
     }
@@ -486,41 +466,20 @@
     @Override
     public void setLineColor(Color col) {
         super.setLineColor(col);
-        if (col != null) {
-            
-            compartmentSeparator.setFilled(true);
-            if (externalSeparatorFig != null) {
-                externalSeparatorFig.setFillColor(col);
-                externalSeparatorFig.setFilled(true);
-                compartmentSeparator.setFillColor(null);
-            } else {
-                compartmentSeparator.setFillColor(col);
-            }
-        }
+        externalSeparatorFig.setFillColor(col);
     }
 
     @Override
     public void setLineWidth(int w) {
         super.setLineWidth(0);
         bigPort.setLineWidth(0);
-        compartmentSeparator.setHeight(w);
-        if (externalSeparatorFig != null) {
-            externalSeparatorFig.setHeight(w);
-        }
+        externalSeparatorFig.setHeight(w);
     }
 
     @Override
     public void setFillColor(Color col) {
         super.setFillColor(col);
-        
-        compartmentSeparator.setFilled(true);
-        if (externalSeparatorFig != null) {
-            externalSeparatorFig.setFillColor(getLineColor());
-            externalSeparatorFig.setFilled(true);
-            compartmentSeparator.setFillColor(null);
-        } else {
-            compartmentSeparator.setFillColor(getLineColor());
-        }
+        externalSeparatorFig.setFillColor(getLineColor());
     }
 
     /**
@@ -529,19 +488,13 @@
      * @param r the new bounds
      */
     public void setExternalSeparatorFigBounds(Rectangle r) {
-        if (externalSeparatorFig != null) {
-            externalSeparatorFig.setBounds(r);
-        }
+        externalSeparatorFig.setBounds(r);
     }
 
     /**
-     * Create an external Fig as separator line.
-     * 
-     * @return the separator Fig
+     * @return separator figure
      */
-    public Fig makeExternalSeparatorFig() {
-        assert externalSeparatorFig == null;
-        externalSeparatorFig = new FigSeparator(X0, Y0, 11, LINE_WIDTH);
+    public Fig getSeparatorFig() {
         return externalSeparatorFig;
     }
     
@@ -552,7 +505,7 @@
      * filled with the line color, since using a FigLine would draw the line 
      * around the start and end coordinates with a line width > 1.
      */
-    protected static class FigSeparator extends FigRect {
+    private static class FigSeparator extends FigRect {
         /**
          * Constructor.
          *
@@ -563,13 +516,19 @@
         FigSeparator(int x, int y, int len, int lineWidth) {
             super(x, y, len, lineWidth);
             setLineWidth(0);
-            setFilled(true);
+            super.setFilled(true);
         }
 
         @Override
         public Dimension getMinimumSize() {
             return new Dimension(MIN_SIZE, getHeight());
         }
+        
 
+        @Override
+        public void setFilled(boolean filled) {
+            // Override superclass to do nothing.
+            // Fill property cannot be changed.
+        }
     }
 }

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartmentBox.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartmentBox.java?view=diff&pathrev=17731&r1=17730&r2=17731
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartmentBox.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartmentBox.java	2010-01-03 10:16:05-0800
@@ -200,6 +200,7 @@
 
     private void addCompartment(FigCompartment c) {
         assert !compartments.contains(c);
+        addFig(c.getSeparatorFig());
         compartments.add(c);
     }
 
@@ -406,7 +407,13 @@
      */
     protected void setCompartmentBounds(FigCompartment c, 
             Rectangle cb, Rectangle ob) {
-        c.setBounds(cb.x, cb.y, cb.width, cb.height);
+        Rectangle r = new Rectangle();
+        r.y = cb.y;
+        r.height = getLineWidth();
+        r.width = ob.width;
+        r.x = ob.x;
+        c.setExternalSeparatorFigBounds(r);            
+        c.setBounds(cb.x, cb.y + 1, cb.width, cb.height - 1);
     }
 
     /*

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java?view=diff&pathrev=17731&r1=17730&r2=17731
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/use_case/ui/FigUseCase.java	2010-01-03 10:16:05-0800
@@ -153,7 +153,7 @@
          * This horizontal line sticks out of the box, 
          * and touches the ellipse edge.
          */
-        Fig separatorFig = epc.makeExternalSeparatorFig();
+        Fig separatorFig = epc.getSeparatorFig();
         
         /* TODO: This next line prevent loading a UseCase 
          * with a stereotype to grow. Why? */

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2434415

To unsubscribe from this discussion, e-mail: [[email protected]].
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.