svn commit: r17460 - trunk/src/argouml-app/src/org/argouml: persistence uml/cognitive/critics uml/diagram uml/diagram/static_structure/ui uml/diagram/ui uml/reveng
Bob Tarling <[email protected]>
| Newsgroups | gmane.comp.lang.uml.argouml.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: bobtarling
Date: 2009-11-08 07:28:12-0800
New Revision: 17460
Modified:
trunk/src/argouml-app/src/org/argouml/persistence/PGMLStackParser.java
trunk/src/argouml-app/src/org/argouml/uml/cognitive/critics/ClAttributeCompartment.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/AttributesCompartmentContainer.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/UmlDiagramRenderer.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/StylePanelFigClass.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionCompartmentDisplay.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigCompartmentBox.java
trunk/src/argouml-app/src/org/argouml/uml/reveng/DiagramInterface.java
Log:
Deprecate AttributesCompartmentContainer
Modified: trunk/src/argouml-app/src/org/argouml/persistence/PGMLStackParser.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/persistence/PGMLStackParser.java?view=diff&pathrev=17460&r1=17459&r2=17460
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/persistence/PGMLStackParser.java (original)
+++ trunk/src/argouml-app/src/org/argouml/persistence/PGMLStackParser.java 2009-11-08 07:28:12-0800
@@ -36,6 +36,7 @@
import java.util.StringTokenizer;
import org.apache.log4j.Logger;
+import org.argouml.model.Model;
import org.argouml.uml.diagram.ArgoDiagram;
import org.argouml.uml.diagram.AttributesCompartmentContainer;
import org.argouml.uml.diagram.DiagramEdgeSettings;
@@ -45,6 +46,8 @@
import org.argouml.uml.diagram.PathContainer;
import org.argouml.uml.diagram.StereotypeContainer;
import org.argouml.uml.diagram.VisibilityContainer;
+import org.argouml.uml.diagram.ui.FigCompartment;
+import org.argouml.uml.diagram.ui.FigCompartmentBox;
import org.argouml.uml.diagram.ui.FigEdgeModelElement;
import org.argouml.uml.diagram.ui.FigEdgePort;
import org.tigris.gef.base.Diagram;
@@ -312,8 +315,10 @@
((OperationsCompartmentContainer) fig)
.setOperationsVisible(value.equalsIgnoreCase("true"));
} else if ("attributesVisible".equals(name)) {
- ((AttributesCompartmentContainer) fig)
- .setAttributesVisible(value.equalsIgnoreCase("true"));
+ FigCompartmentBox fcb = (FigCompartmentBox) fig;
+ FigCompartment fc =
+ fcb.getCompartment(Model.getMetaTypes().getAttribute());
+ fcb.setCompartmentVisible(fc, value.equalsIgnoreCase("true"));
} else if ("stereotypeVisible".equals(name)) {
((StereotypeContainer) fig)
.setStereotypeVisible(value.equalsIgnoreCase("true"));
Modified: trunk/src/argouml-app/src/org/argouml/uml/cognitive/critics/ClAttributeCompartment.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/cognitive/critics/ClAttributeCompartment.java?view=diff&pathrev=17460&r1=17459&r2=17460
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/cognitive/critics/ClAttributeCompartment.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/cognitive/critics/ClAttributeCompartment.java 2009-11-08 07:28:12-0800
@@ -29,11 +29,11 @@
import java.awt.Graphics;
import java.awt.Rectangle;
-import org.apache.log4j.Logger;
import org.argouml.cognitive.ToDoItem;
import org.argouml.model.Model;
import org.argouml.ui.Clarifier;
-import org.argouml.uml.diagram.AttributesCompartmentContainer;
+import org.argouml.uml.diagram.ui.FigCompartment;
+import org.argouml.uml.diagram.ui.FigCompartmentBox;
import org.tigris.gef.presentation.Fig;
/**
@@ -43,9 +43,6 @@
*/
public class ClAttributeCompartment implements Clarifier {
- private static final Logger LOG =
- Logger.getLogger(ClAttributeCompartment.class);
-
private static ClAttributeCompartment theInstance =
new ClAttributeCompartment();
@@ -74,18 +71,19 @@
final Object modelElement = fig.getOwner();
if (Model.getUmlFactory().isContainmentValid(
Model.getMetaTypes().getAttribute(), modelElement)) {
- AttributesCompartmentContainer fc =
- (AttributesCompartmentContainer) fig;
+ FigCompartmentBox fcb = (FigCompartmentBox) fig;
+ FigCompartment fc =
+ fcb.getCompartment(Model.getMetaTypes().getAttribute());
// added by Eric Lefevre 13 Mar 1999: we must check if the
// FigText for attributes is drawn before drawing things
// over it
- if (!fc.isAttributesVisible()) {
+ if (fc == null || !fc.isVisible()) {
fig = null;
return;
}
- Rectangle fr = fc.getAttributesBounds();
+ Rectangle fr = fc.getBounds();
int left = fr.x + 6;
int height = fr.y + fr.height - 5;
int right = fr.x + fr.width - 6;
@@ -94,18 +92,26 @@
while (true) {
g.drawLine(i, height, i + WAVE_LENGTH, height + WAVE_HEIGHT);
i += WAVE_LENGTH;
- if (i >= right) break;
+ if (i >= right) {
+ break;
+ }
g.drawLine(i, height + WAVE_HEIGHT, i + WAVE_LENGTH, height);
i += WAVE_LENGTH;
- if (i >= right) break;
+ if (i >= right) {
+ break;
+ }
g.drawLine(i, height, i + WAVE_LENGTH,
height + WAVE_HEIGHT / 2);
i += WAVE_LENGTH;
- if (i >= right) break;
+ if (i >= right) {
+ break;
+ }
g.drawLine(i, height + WAVE_HEIGHT / 2, i + WAVE_LENGTH,
height);
i += WAVE_LENGTH;
- if (i >= right) break;
+ if (i >= right) {
+ break;
+ }
}
fig = null;
}
@@ -128,9 +134,10 @@
final Object modelElement = fig.getOwner();
if (Model.getUmlFactory().isContainmentValid(
Model.getMetaTypes().getAttribute(), modelElement)) {
- AttributesCompartmentContainer fc =
- (AttributesCompartmentContainer) fig;
- Rectangle fr = fc.getAttributesBounds();
+ FigCompartmentBox fcb = (FigCompartmentBox) fig;
+ FigCompartment fc =
+ fcb.getCompartment(Model.getMetaTypes().getAttribute());
+ Rectangle fr = fc.getBounds();
fig = null;
return fr.contains(x, y);
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/AttributesCompartmentContainer.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/AttributesCompartmentContainer.java?view=diff&pathrev=17460&r1=17459&r2=17460
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/AttributesCompartmentContainer.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/AttributesCompartmentContainer.java 2009-11-08 07:28:12-0800
@@ -29,6 +29,11 @@
/**
* An interface to be implemented by any Fig that contains
* a FigAttributesCompartment.
+ * @deprecated in 0.29.2 by Bob Tarling. We can't assume at compile time what
+ * Figs contain what compartments. This is proved in the UML1.4 to UML2 conversion
+ * where UML1.4 does not want this interface for FigInterface but UML2 does.
+ * Use FigCompartment.getCompartment(Object metaType) to fetch a compartment
+ * and check the existence and methods of the returned object.
* @author Bob Tarling
*/
public interface AttributesCompartmentContainer {
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/UmlDiagramRenderer.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/UmlDiagramRenderer.java?view=diff&pathrev=17460&r1=17459&r2=17460
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/UmlDiagramRenderer.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/UmlDiagramRenderer.java 2009-11-08 07:28:12-0800
@@ -28,6 +28,8 @@
import org.argouml.model.Model;
import org.argouml.uml.CommentEdge;
+import org.argouml.uml.diagram.ui.FigCompartment;
+import org.argouml.uml.diagram.ui.FigCompartmentBox;
import org.argouml.uml.diagram.ui.FigEdgeModelElement;
import org.tigris.gef.base.Layer;
import org.tigris.gef.graph.GraphEdgeRenderer;
@@ -180,8 +182,10 @@
((OperationsCompartmentContainer) fig)
.setOperationsVisible(value.equalsIgnoreCase("true"));
} else if ("attributesVisible".equals(name)) {
- ((AttributesCompartmentContainer) fig)
- .setAttributesVisible(value.equalsIgnoreCase("true"));
+ FigCompartmentBox fcb = (FigCompartmentBox) fig;
+ FigCompartment fc =
+ fcb.getCompartment(Model.getMetaTypes().getAttribute());
+ fcb.setCompartmentVisible(fc, value.equalsIgnoreCase("true"));
}
}
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/StylePanelFigClass.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/StylePanelFigClass.java?view=diff&pathrev=17460&r1=17459&r2=17460
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/StylePanelFigClass.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/static_structure/ui/StylePanelFigClass.java 2009-11-08 07:28:12-0800
@@ -30,9 +30,11 @@
import javax.swing.JCheckBox;
import org.argouml.i18n.Translator;
+import org.argouml.model.Model;
import org.argouml.ui.StylePanelFigNodeModelElement;
-import org.argouml.uml.diagram.AttributesCompartmentContainer;
import org.argouml.uml.diagram.OperationsCompartmentContainer;
+import org.argouml.uml.diagram.ui.FigCompartment;
+import org.argouml.uml.diagram.ui.FigCompartmentBox;
/**
* Stylepanel which adds an attributes and operations checkbox and depends on
@@ -94,10 +96,11 @@
public void refresh() {
refreshTransaction = true;
super.refresh();
- AttributesCompartmentContainer ac =
- (AttributesCompartmentContainer) getPanelTarget();
- attrCheckBox.setSelected(ac.isAttributesVisible());
- OperationsCompartmentContainer oc =
+ final FigCompartmentBox fcb = (FigCompartmentBox) getPanelTarget();
+ final FigCompartment attributeCompartment =
+ fcb.getCompartment(Model.getMetaTypes().getAttribute());
+ attrCheckBox.setSelected(attributeCompartment.isVisible());
+ final OperationsCompartmentContainer oc =
(OperationsCompartmentContainer) getPanelTarget();
operCheckBox.setSelected(oc.isOperationsVisible());
refreshTransaction = false;
@@ -114,8 +117,10 @@
Object src = e.getSource();
if (src == attrCheckBox) {
- ((AttributesCompartmentContainer) getPanelTarget())
- .setAttributesVisible(attrCheckBox.isSelected());
+ FigCompartmentBox fcb = (FigCompartmentBox) getPanelTarget();
+ FigCompartment fc =
+ fcb.getCompartment(Model.getMetaTypes().getAttribute());
+ fcb.setCompartmentVisible(fc, attrCheckBox.isSelected());
} else if (src == operCheckBox) {
((OperationsCompartmentContainer) getPanelTarget())
.setOperationsVisible(operCheckBox.isSelected());
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionCompartmentDisplay.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionCompartmentDisplay.java?view=diff&pathrev=17460&r1=17459&r2=17460
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionCompartmentDisplay.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/ActionCompartmentDisplay.java 2009-11-08 07:28:12-0800
@@ -204,13 +204,13 @@
List<Fig> figs = ce.getSelectionManager().getFigs();
for (Fig f : figs) {
- final Object modelElement = f.getOwner();
- if (Model.getUmlFactory().isContainmentValid(
- Model.getMetaTypes().getAttribute(), modelElement)) {
+ final FigCompartmentBox fcb = (FigCompartmentBox) f;
+ final FigCompartment attributeCompartment =
+ fcb.getCompartment(Model.getMetaTypes().getAttribute());
+ if (attributeCompartment != null) {
present++;
attrPresent = true;
- attrVisible =
- ((AttributesCompartmentContainer) f).isAttributesVisible();
+ attrVisible = attributeCompartment.isVisible();
if (attrVisible) {
visible++;
}
@@ -309,14 +309,14 @@
while (i.hasNext()) {
final Selection sel = (Selection) i.next();
final Fig f = sel.getContent();
- final Object modelElement = f.getOwner();
// Perform the action
if ((cType & COMPARTMENT_ATTRIBUTE) != 0) {
- if (Model.getUmlFactory().isContainmentValid(
- Model.getMetaTypes().getAttribute(), modelElement)) {
- ((AttributesCompartmentContainer) f)
- .setAttributesVisible(display);
+ final FigCompartmentBox fcb = (FigCompartmentBox) f;
+ final FigCompartment attributeCompartment =
+ fcb.getCompartment(Model.getMetaTypes().getAttribute());
+ if (attributeCompartment != null) {
+ fcb.setCompartmentVisible(attributeCompartment, display);
}
}
if ((cType & COMPARTMENT_OPERATION) != 0) {
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=17460&r1=17459&r2=17460
==============================================================================
--- 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 2009-11-08 07:28:12-0800
@@ -549,12 +549,17 @@
}
/**
+ * TODO: This functionality is in the worn place. We should be able to
+ * call setVisible on the compartment itself and then this class should
+ * react to that event.
+ * Improvements will follow in later releases.
+ * Hence this method should not be considered stable for module developers.
* @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,
+ public void setCompartmentVisible(FigCompartment compartment,
boolean isVisible) {
Rectangle rect = getBounds();
if (compartment.isVisible()) {
Modified: trunk/src/argouml-app/src/org/argouml/uml/reveng/DiagramInterface.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/reveng/DiagramInterface.java?view=diff&pathrev=17460&r1=17459&r2=17460
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/reveng/DiagramInterface.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/reveng/DiagramInterface.java 2009-11-08 07:28:12-0800
@@ -39,6 +39,7 @@
import org.argouml.uml.diagram.static_structure.ClassDiagramGraphModel;
import org.argouml.uml.diagram.static_structure.ui.FigClassifierBox;
import org.argouml.uml.diagram.static_structure.ui.FigPackage;
+import org.argouml.uml.diagram.ui.FigCompartment;
import org.argouml.uml.diagram.ui.FigNodeModelElement;
import org.tigris.gef.base.Editor;
import org.tigris.gef.base.LayerPerspective;
@@ -304,11 +305,7 @@
newFig.setOperationsVisible(!minimise);
if (Model.getFacade().isAClass(classifier)) {
- // TODO We should be able to replace method calls on
- // AttributesCompartmentContainer with the likes of
- // newFig.getCompartment(Model.getMetaTypes().getAttribute()).setVisible(!minimise);
- ((AttributesCompartmentContainer) newFig).setAttributesVisible(
- !minimise);
+ newFig.setAttributesVisible(!minimise);
}
newFig.renderingChanged();
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2415575
To unsubscribe from this discussion, e-mail: [[email protected]].