Author: mvw
Date: 2008-11-21 13:17:26-0800
New Revision: 16119

Modified:
   
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java
   
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBoxWithAttributes.java
   
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigDataType.java
   
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java
   
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigInterface.java
   
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigStereotypeDeclaration.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartmentBox.java

Log:
In preparation of solving issue 5497, some refactoring: move common code up in 
the hierarchy. This should not cause any functional difference.

Modified: 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java?view=diff&rev=16119&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java&r1=16118&r2=16119
==============================================================================
--- 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java
 (original)
+++ 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBox.java
 2008-11-21 13:17:26-0800
@@ -216,32 +216,7 @@
      * @see 
org.argouml.uml.diagram.ui.OperationsCompartmentContainer#setOperationsVisible(boolean)
      */
     public void setOperationsVisible(boolean isVisible) {
-        Rectangle rect = getBounds();
-        if (isOperationsVisible()) { // if displayed
-            if (!isVisible) {
-                damage();
-                Iterator it = getOperationsFig().getFigs().iterator();
-                while (it.hasNext()) {
-                    ((Fig) (it.next())).setVisible(false);
-                }
-                getOperationsFig().setVisible(false);
-                Dimension aSize = this.getMinimumSize();
-                setBounds(rect.x, rect.y,
-                          (int) aSize.getWidth(), (int) aSize.getHeight());
-            }
-        } else {
-            if (isVisible) {
-                Iterator it = getOperationsFig().getFigs().iterator();
-                while (it.hasNext()) {
-                    ((Fig) (it.next())).setVisible(true);
-                }
-                getOperationsFig().setVisible(true);
-                Dimension aSize = this.getMinimumSize();
-                setBounds(rect.x, rect.y,
-                    (int) aSize.getWidth(), (int) aSize.getHeight());
-                damage();
-            }
-        }
+        setCompartmentVisible(operationsFig, isVisible);
     }
     
     /*

Modified: 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBoxWithAttributes.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBoxWithAttributes.java?view=diff&rev=16119&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBoxWithAttributes.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBoxWithAttributes.java&r1=16118&r2=16119
==============================================================================
--- 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBoxWithAttributes.java
   (original)
+++ 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigClassifierBoxWithAttributes.java
   2008-11-21 13:17:26-0800
@@ -239,10 +239,8 @@
         }

         attributesFigCompartment.populate();

 

-        Rectangle rect = getBounds();

-        // ouch ugly but that's for a next refactoring

         // TODO: make setBounds, calcBounds and updateBounds consistent

-        setBounds(rect.x, rect.y, rect.width, rect.height);

+        setBounds(getBounds());

     }

     

     /**

@@ -251,32 +249,7 @@
      * @see 
org.argouml.uml.diagram.AttributesCompartmentContainer#setAttributesVisible(boolean)

      */

     public void setAttributesVisible(boolean isVisible) {

-        Rectangle rect = getBounds();

-        if (getAttributesFig().isVisible()) {

-            if (!isVisible) {  // hide compartment

-                damage();

-                Iterator it = getAttributesFig().getFigs().iterator();

-                while (it.hasNext()) {

-                    ((Fig) (it.next())).setVisible(false);

-                }

-                getAttributesFig().setVisible(false);

-                Dimension aSize = this.getMinimumSize();

-                setBounds(rect.x, rect.y,

-                          (int) aSize.getWidth(), (int) aSize.getHeight());

-            }

-        } else {

-            if (isVisible) { // show compartment

-                Iterator it = getAttributesFig().getFigs().iterator();

-                while (it.hasNext()) {

-                    ((Fig) (it.next())).setVisible(true);

-                }

-                getAttributesFig().setVisible(true);

-                Dimension aSize = this.getMinimumSize();

-                setBounds(rect.x, rect.y,

-                          (int) aSize.getWidth(), (int) aSize.getHeight());

-                damage();

-            }

-        }

+        setCompartmentVisible(attributesFigCompartment, isVisible);

     }

     @Override

     public Dimension getMinimumSize() {

@@ -297,24 +270,6 @@
     }

 

     /**

-     * Add size of a child component to overall size.  Width is maximized

-     * with child's width and child's height is added to the overall height.

-     * If the child figure is not visible, it's size is not added.

-     * 

-     * @param size current dimensions

-     * @param child child figure

-     * @return new Dimension with child size added

-     */

-    protected Dimension addChildDimensions(Dimension size, Fig child) {

-        if (child.isVisible()) {

-            Dimension childSize = child.getMinimumSize();

-            size.width = Math.max(size.width, childSize.width);

-            size.height += childSize.height;

-        }

-        return size;

-    }

-

-    /**

      * Sets the bounds, but the size will be at least the one returned by

      * [EMAIL PROTECTED] #getMinimumSize()}, unless checking of size is 
disabled.<p>

      *


Modified: 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigDataType.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigDataType.java?view=diff&rev=16119&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigDataType.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigDataType.java&r1=16118&r2=16119
==============================================================================
--- 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigDataType.java
      (original)
+++ 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigDataType.java
      2008-11-21 13:17:26-0800
@@ -149,27 +149,13 @@
         Dimension aSize = getNameFig().getMinimumSize();
 
         // +2 padding before and after name
-
         aSize.height += 4;
-
-        if (aSize.height < 21) {
-            aSize.height = 21;
-        }
+        aSize.height = Math.max(21, aSize.height);
 
         // If we have a stereotype displayed, then allow some space for that
         // (width and height)
-
-        if (getStereotypeFig().isVisible()) {
-            Dimension stereoMin = getStereotypeFig().getMinimumSize();
-            aSize.width = Math.max(aSize.width, stereoMin.width);
-            aSize.height += stereoMin.height;
-        }
-
-        if (getOperationsFig().isVisible()) {
-            Dimension operMin = getOperationsFig().getMinimumSize();
-            aSize.width = Math.max(aSize.width, operMin.width);
-            aSize.height += operMin.height;
-        }
+        aSize = addChildDimensions(aSize, getStereotypeFig());
+        aSize = addChildDimensions(aSize, getOperationsFig());
 
         // we want to maintain a minimum width for datatypes
         aSize.width = Math.max(40, aSize.width);

Modified: 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java?view=diff&rev=16119&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java&r1=16118&r2=16119
==============================================================================
--- 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java
   (original)
+++ 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java
   2008-11-21 13:17:26-0800
@@ -202,11 +202,7 @@
         // Start with the minimum for our parent
         Dimension aSize = super.getMinimumSize();
 
-        if (literalsCompartment.isVisible()) {
-            Dimension literalsMin = literalsCompartment.getMinimumSize();
-            aSize.width = Math.max(aSize.width, literalsMin.width);
-            aSize.height += literalsMin.height;
-        }
+        aSize = addChildDimensions(aSize, literalsCompartment);
         
         return aSize;
     }
@@ -304,32 +300,7 @@
      * @param isVisible true will show the enumeration literal compartment
      */
     public void setEnumLiteralsVisible(boolean isVisible) {
-        Rectangle rect = getBounds();
-        if (literalsCompartment.isVisible()) {
-            if (!isVisible) {
-                damage();
-                Iterator it = literalsCompartment.getFigs().iterator();
-                while (it.hasNext()) {
-                    ((Fig) (it.next())).setVisible(false);
-                }
-                literalsCompartment.setVisible(false);
-                Dimension aSize = this.getMinimumSize();
-                setBounds(rect.x, rect.y,
-                          (int) aSize.getWidth(), (int) aSize.getHeight());
-            }
-        } else {
-            if (isVisible) {
-                Iterator it = literalsCompartment.getFigs().iterator();
-                while (it.hasNext()) {
-                    ((Fig) (it.next())).setVisible(true);
-                }
-                literalsCompartment.setVisible(true);
-                Dimension aSize = this.getMinimumSize();
-                setBounds(rect.x, rect.y,
-                          (int) aSize.getWidth(), (int) aSize.getHeight());
-                damage();
-            }
-        }
+        setCompartmentVisible(literalsCompartment, isVisible);
     }
     
     /**

Modified: 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigInterface.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigInterface.java?view=diff&rev=16119&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigInterface.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigInterface.java&r1=16118&r2=16119
==============================================================================
--- 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigInterface.java
     (original)
+++ 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigInterface.java
     2008-11-21 13:17:26-0800
@@ -175,27 +175,13 @@
         Dimension aSize = getNameFig().getMinimumSize();
 
         // +2 padding before and after name
-
         aSize.height += 4;
-
-        if (aSize.height < 21) {
-            aSize.height = 21;
-        }
+        aSize.height = Math.max(21, aSize.height);
 
         // If we have a stereotype displayed, then allow some space for that
         // (width and height)
-
-        if (getStereotypeFig().isVisible()) {
-            Dimension stereoMin = getStereotypeFig().getMinimumSize();
-            aSize.width = Math.max(aSize.width, stereoMin.width);
-            aSize.height += stereoMin.height;
-        }
-
-        if (isOperationsVisible()) {
-            Dimension operMin = getOperationsFig().getMinimumSize();
-            aSize.width = Math.max(aSize.width, operMin.width);
-            aSize.height += operMin.height;
-        }
+        aSize = addChildDimensions(aSize, getStereotypeFig());
+        aSize = addChildDimensions(aSize, getOperationsFig());
 
         // we want to maintain a minimum width for Interfaces
         aSize.width = Math.max(60, aSize.width);

Modified: 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigStereotypeDeclaration.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigStereotypeDeclaration.java?view=diff&rev=16119&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigStereotypeDeclaration.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigStereotypeDeclaration.java&r1=16118&r2=16119
==============================================================================
--- 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigStereotypeDeclaration.java
 (original)
+++ 
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/FigStereotypeDeclaration.java
 2008-11-21 13:17:26-0800
@@ -160,11 +160,9 @@
     @Override
     public Dimension getMinimumSize() {
         Dimension aSize = getNameFig().getMinimumSize();
-        if (getStereotypeFig().isVisible()) {
-            Dimension stereoMin = getStereotypeFig().getMinimumSize();
-            aSize.width = Math.max(aSize.width, stereoMin.width);
-            aSize.height += stereoMin.height;
-        }
+        
+        //TODO: Why does this differ from the other Figs?
+        aSize = addChildDimensions(aSize, getStereotypeFig());
 
         // TODO: Allow space for each of the Tags & Constraints we have
 

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&rev=16119&p1=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartmentBox.java&p2=trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartmentBox.java&r1=16118&r2=16119
==============================================================================
--- 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 
2008-11-21 13:17:26-0800
@@ -1,5 +1,5 @@
 // $Id$
-// Copyright (c) 1996-2007 The Regents of the University of California. All
+// Copyright (c) 1996-2008 The Regents of the University of California. All
 // Rights Reserved. Permission to use, copy, modify, and distribute this
 // software and its documentation without fee, and without a written
 // agreement is hereby granted, provided that the above copyright notice
@@ -25,9 +25,11 @@
 package org.argouml.uml.diagram.ui;
 
 import java.awt.Color;
+import java.awt.Dimension;
 import java.awt.Rectangle;
 import java.awt.event.InputEvent;
 import java.awt.event.MouseEvent;
+import java.util.Iterator;
 import java.util.List;
 
 import org.argouml.ui.targetmanager.TargetManager;
@@ -210,4 +212,55 @@
     protected Fig getBorderFig() {
        return borderFig;
     }
+
+    /**
+     * Add size of a child component to overall size.  Width is maximized
+     * with child's width and child's height is added to the overall height.
+     * If the child figure is not visible, it's size is not added.
+     * 
+     * @param size current dimensions
+     * @param child child figure
+     * @return new Dimension with child size added
+     */
+    protected Dimension addChildDimensions(Dimension size, Fig child) {
+        if (child.isVisible()) {
+            Dimension childSize = child.getMinimumSize();
+            size.width = Math.max(size.width, childSize.width);
+            size.height += childSize.height;
+        }
+        return size;
+    }
+    
+    /**
+     * @param compartment the compartment to be changed
+     * @param isVisible true if the attribute compartment is visible
+     *
+     * @see 
org.argouml.uml.diagram.AttributesCompartmentContainer#setAttributesVisible(boolean)
+     */
+    protected void setCompartmentVisible(FigCompartment compartment, boolean 
isVisible) {
+        Rectangle rect = getBounds();
+        if (compartment.isVisible()) {
+            if (!isVisible) {  // hide compartment
+                damage();
+                for (Object f : compartment.getFigs()) {
+                    ((Fig) f).setVisible(false);
+                }
+                compartment.setVisible(false);
+                Dimension aSize = this.getMinimumSize();
+                setBounds(rect.x, rect.y,
+                          (int) aSize.getWidth(), (int) aSize.getHeight());
+            }
+        } else {
+            if (isVisible) { // show compartment
+                for (Object f : compartment.getFigs()) {
+                    ((Fig) f).setVisible(true);
+                }
+                compartment.setVisible(true);
+                Dimension aSize = this.getMinimumSize();
+                setBounds(rect.x, rect.y,
+                          (int) aSize.getWidth(), (int) aSize.getHeight());
+                damage();
+            }
+        }
+    }
 }

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to