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

Linus Tolke <[email protected]>
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: linus
Date: 2010-01-27 11:50:58-0800
New Revision: 17924

Modified:
   trunk/src/argouml-app/src/org/argouml/ui/StylePanel.java
   trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/StylePanelFigAssociationClass.java

Log:
Changing the StylePanelFigAssociationClass so that it isn't a subclass of StylePanelFigClass. The assumptions on the type for getPanel no longer holds.

Modified: trunk/src/argouml-app/src/org/argouml/ui/StylePanel.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/ui/StylePanel.java?view=diff&pathrev=17924&r1=17923&r2=17924
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/ui/StylePanel.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/ui/StylePanel.java	2010-01-27 11:50:58-0800
@@ -217,7 +217,7 @@
     }
 
     /**
-     * @return Returns the _target.
+     * @return Returns the target of the Style Panel.
      */
     protected Fig getPanelTarget() {
         return panelTarget;

Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/StylePanelFigAssociationClass.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/StylePanelFigAssociationClass.java?view=diff&pathrev=17924&r1=17923&r2=17924
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/StylePanelFigAssociationClass.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/StylePanelFigAssociationClass.java	2010-01-27 11:50:58-0800
@@ -40,25 +40,57 @@
 
 import java.awt.Rectangle;
 import java.awt.event.FocusListener;
+import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
 import java.awt.event.KeyListener;
+import java.beans.PropertyChangeEvent;
 
-import org.argouml.uml.diagram.static_structure.ui.StylePanelFigClass;
+import javax.swing.JCheckBox;
+
+import org.argouml.i18n.Translator;
+import org.argouml.model.Model;
+import org.argouml.ui.StylePanelFigNodeModelElement;
 import org.tigris.gef.presentation.Fig;
 
 /**
  * The style Panel for FigEdgeModelElement.
  *
  */
-public class StylePanelFigAssociationClass extends StylePanelFigClass implements
-        ItemListener, FocusListener, KeyListener {
+public class StylePanelFigAssociationClass
+    extends StylePanelFigNodeModelElement
+    implements ItemListener, FocusListener, KeyListener {
+
+    private JCheckBox attrCheckBox =
+        new JCheckBox(Translator.localize("checkbox.attributes"));
+
+    private JCheckBox operCheckBox =
+        new JCheckBox(Translator.localize("checkbox.operations"));
+
+    /**
+     * Flag to indicate that a refresh is going on.
+     */
+    private boolean refreshTransaction;
 
+    /**
+     * Constructor.
+     */
     public StylePanelFigAssociationClass() {
+        super();
+
+        addToDisplayPane(attrCheckBox);
+        addToDisplayPane(operCheckBox);
+
+        attrCheckBox.setSelected(false);
+        operCheckBox.setSelected(false);
+        attrCheckBox.addItemListener(this);
+        operCheckBox.addItemListener(this);
     }
 
     /**
      * Bounding box is editable (although this is style panel for an
      * FigEdgeModelElement).
+     * 
+     * @param value Ignored argument.
      */
     @Override
     protected void hasEditableBoundingBox(boolean value) {
@@ -100,17 +132,45 @@
     }
 
     /*
+     * Only refresh the tab if the bounds propertyChange event arrives.
+     *
+     * @see org.argouml.ui.StylePanel#refresh(java.beans.PropertyChangeEvent)
+     */
+    public void refresh(PropertyChangeEvent e) {
+        String propertyName = e.getPropertyName();
+        if (propertyName.equals("bounds")) {
+            refresh();
+        }
+    }
+    /*
      * @see org.argouml.ui.StylePanelFig#refresh()
      */
     @Override
     public void refresh() {
-        super.refresh();
-
-        // The boundary box as held in the target fig, and as listed in
-        // the
-        // boundary box style field (null if we don't have anything
-        // valid)
-        Fig target = getPanelTarget();
+        // StylePanelFigClass relies on getPanelTarget() to return a 
+        // FigCompartmentBox
+        refreshTransaction = true;
+        FigAssociationClass panelTarget =
+            (FigAssociationClass) getPanelTarget();
+        try {
+            super.refresh();
+            final FigCompartmentBox fcb = panelTarget.getAssociationClass();
+            if (fcb != null) {
+                FigCompartment compartment =
+                    fcb.getCompartment(Model.getMetaTypes().getAttribute());
+                attrCheckBox.setSelected(compartment.isVisible());
+                compartment =
+                    fcb.getCompartment(Model.getMetaTypes().getOperation());
+                operCheckBox.setSelected(compartment.isVisible());
+            }
+        } finally {
+            refreshTransaction = false;
+        }
+
+        // The boundary box as held in the target fig, and as listed
+        // in the boundary box style field (null if we don't have 
+        // anything valid)
+        Fig target = panelTarget;
 
         // Get class box, because we will set it's bounding box in text field
         if (((FigAssociationClass) target).getAssociationClass() != null) {
@@ -135,4 +195,28 @@
         }
     }
 
+    ////////////////////////////////////////////////////////////////
+    // event handling
+
+    /*
+     * @see java.awt.event.ItemListener#itemStateChanged(java.awt.event.ItemEvent)
+     */
+    public void itemStateChanged(ItemEvent e) {
+        if (!refreshTransaction) {
+            Object src = e.getSource();
+
+            if (src == attrCheckBox) {
+                FigCompartmentBox fcb = (FigCompartmentBox) getPanelTarget();
+                fcb.showCompartment(Model.getMetaTypes().getAttribute(), 
+                        attrCheckBox.isSelected());
+            } else if (src == operCheckBox) {
+                FigCompartmentBox fcb = (FigCompartmentBox) getPanelTarget();
+                fcb.showCompartment(Model.getMetaTypes().getOperation(),
+                        operCheckBox.isSelected());
+            } else {
+                super.itemStateChanged(e);
+            }
+        }
+    }
+
 } /* end class StylePanelFigAssociationClass */

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

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.