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]
