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]].
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.