Author: rozagh
Date: 2012-06-25 16:46:17 -0700 (Mon, 25 Jun 2012)
New Revision: 29687

Modified:
   
core3/impl/trunk/work-swing-impl/impl/src/main/java/org/cytoscape/work/internal/tunables/JPanelTunableMutator.java
Log:
fixes #1169 adding a repacking function when collapsible panel is expanded or 
collapsed.

Modified: 
core3/impl/trunk/work-swing-impl/impl/src/main/java/org/cytoscape/work/internal/tunables/JPanelTunableMutator.java
===================================================================
--- 
core3/impl/trunk/work-swing-impl/impl/src/main/java/org/cytoscape/work/internal/tunables/JPanelTunableMutator.java
  2012-06-25 23:01:52 UTC (rev 29686)
+++ 
core3/impl/trunk/work-swing-impl/impl/src/main/java/org/cytoscape/work/internal/tunables/JPanelTunableMutator.java
  2012-06-25 23:46:17 UTC (rev 29687)
@@ -2,7 +2,10 @@
 
 
 import java.awt.Color;
+import java.awt.Container;
 import java.awt.Window;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -12,6 +15,7 @@
 
 import javax.swing.BorderFactory;
 import javax.swing.BoxLayout;
+import javax.swing.JDialog;
 import javax.swing.JFrame;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
@@ -264,9 +268,27 @@
                        // Figure out if the collapsable flag is set
                        final String displayState = 
gh.getParams().getProperty("displayState");
                        if (displayState != null) {
-                               BasicCollapsiblePanel cp = new 
BasicCollapsiblePanel(title);
+                               final BasicCollapsiblePanel cp = new 
BasicCollapsiblePanel(title);
                                if 
(displayState.equalsIgnoreCase("uncollapsed"))
                                        cp.setCollapsed(false); 
+                               cp.addPropertyChangeListener(new 
PropertyChangeListener() {
+                                       
+                                       @Override
+                                       public void 
propertyChange(PropertyChangeEvent arg0) {
+                                               repackEnclosingDialog();
+                                       }
+                                       
+                                       /**
+                                        * Attempts to locate the instance of 
the enclosing JDialog.  If successful we will call the pack() method on it.
+                                        */
+                                       private void repackEnclosingDialog() {
+                                               Container container = 
cp.getParent();
+                                               while (container != null && 
!(container instanceof JDialog))
+                                                       container = 
container.getParent();
+                                               if (container != null)
+                                                       
((JDialog)container).pack();
+                                       }
+                               });
                                return cp;
 
                        // We're not collapsable, so return a normal jpanel

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to