Author: bobtarling
Date: 2010-03-27 10:09:23-0700
New Revision: 18178

Modified:
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SimpleListModel.java

Log:
Remember what list controls have been expanded

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java?view=diff&pathrev=18178&r1=18177&r2=18178
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
    (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
    2010-03-27 10:09:23-0700
@@ -48,6 +48,8 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
 
 import javax.swing.Action;
 import javax.swing.DefaultListModel;
@@ -127,6 +129,8 @@
      */
     private final boolean readonly;
     
+    private static final Set<String> EXPANDED_CONTROLS = new TreeSet<String>();
+    
     static {
         // Extract the icon that is used by the tree control
         // for the current look and feel
@@ -437,6 +441,11 @@
             
             getModel().addListDataListener(this);
         }
+        
+        if (EXPANDED_CONTROLS.contains(getId())) {
+               toggleExpansion();
+        }
+        
     }
 
     /**
@@ -502,6 +511,12 @@
      */
     private void toggleExpansion() {
         expanded = !expanded;
+        
+        if (expanded) {
+               EXPANDED_CONTROLS.add(getId());
+        } else {
+               EXPANDED_CONTROLS.remove(getId());
+        }
 
         setIcon();
         if (toolbar != null) {
@@ -509,8 +524,23 @@
         }
 
         // Force the parent to redraw
-        getParent().invalidate();
-        getParent().validate();
+        Component c = getParent();
+        if (c != null) {
+            c.invalidate();
+            c.validate();
+        }
+    }
+    
+    private String getId() {
+        final String id;
+       ListModel model = getList().getModel();
+       if (model instanceof SimpleListModel) {
+               SimpleListModel slm = (SimpleListModel) model;
+               id = slm.getPropertyName() + ":" + slm.getMetaType();
+       } else {
+               id = model.getClass().getName();
+       }
+       return id;
     }
 
     /**
@@ -528,7 +558,6 @@
      * Remove all the listeners that were added in the constructor
      */
     public void removeNotify() {
-        LOG.info("The RowSelector is being removed from a panel");
        if (!readonly) {
             getList().removeListSelectionListener(this);
                getList().removeListSelectionListener(deleteAction);

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SimpleListModel.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SimpleListModel.java?view=diff&pathrev=18178&r1=18177&r2=18178
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SimpleListModel.java
        (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SimpleListModel.java
        2010-03-27 10:09:23-0700
@@ -98,7 +98,11 @@
         if (metaTypes.size() > 0) {
             return metaTypes.get(0);
         }
-       return getterSetterManager.getMetaType(propertyName);
+        return getterSetterManager.getMetaType(propertyName);
+    }
+    
+    public String getPropertyName() {
+       return propertyName;
     }
     
     public List getMetaTypes() {

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

To unsubscribe from this discussion, e-mail: 
[[email protected]].

Reply via email to