Author: pwang
Date: 2011-10-18 14:30:13 -0700 (Tue, 18 Oct 2011)
New Revision: 27221

Added:
   
core3/api/trunk/swing-util-api/src/main/java/org/cytoscape/util/swing/NetworkSelectorPanel.java
Log:
copy from 2.x

Added: 
core3/api/trunk/swing-util-api/src/main/java/org/cytoscape/util/swing/NetworkSelectorPanel.java
===================================================================
--- 
core3/api/trunk/swing-util-api/src/main/java/org/cytoscape/util/swing/NetworkSelectorPanel.java
                             (rev 0)
+++ 
core3/api/trunk/swing-util-api/src/main/java/org/cytoscape/util/swing/NetworkSelectorPanel.java
     2011-10-18 21:30:13 UTC (rev 27221)
@@ -0,0 +1,90 @@
+package cytoscape.util.swing;
+
+
+import java.awt.BorderLayout;
+import java.awt.event.ItemListener;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
+import javax.swing.JComboBox;
+import javax.swing.JPanel;
+
+import cytoscape.CyNetwork;
+import cytoscape.Cytoscape;
+
+
+public class NetworkSelectorPanel extends JPanel implements
+               PropertyChangeListener
+{
+       private static final long serialVersionUID = 8694272457769377810L;
+       
+       protected final JComboBox networkComboBox;
+
+       public NetworkSelectorPanel() {
+               super();
+               this.setLayout(new BorderLayout());
+               networkComboBox = new JComboBox();
+
+               //This should help to limit the length of combobox if the 
network name is too long
+               networkComboBox.setPreferredSize(new 
java.awt.Dimension(networkComboBox.getPreferredSize().width, 
+                               networkComboBox.getPreferredSize().height));
+
+               add(networkComboBox, BorderLayout.CENTER);
+               updateNetworkList();
+               
+               
Cytoscape.getPropertyChangeSupport().addPropertyChangeListener(this);
+       }
+       
+       /**
+        * If selected, return selected network.
+        * Otherwise, return null.
+        * 
+        * @return
+        */
+       public CyNetwork getSelectedNetwork() {
+               for (CyNetwork net : Cytoscape.getNetworkSet()) {
+                       if 
(net.getTitle().equals(networkComboBox.getSelectedItem()))
+                               return net;
+               }
+               
+               return null;
+       }
+
+       private void updateNetworkList() {
+               final Set<CyNetwork> networks = Cytoscape.getNetworkSet();
+               final SortedSet<String> networkNames = new TreeSet<String>();
+
+               for (CyNetwork net : networks)
+                       networkNames.add(net.getTitle());
+
+               networkComboBox.removeAllItems();
+               for (String name : networkNames)
+                       networkComboBox.addItem(name);
+
+               networkComboBox.setSelectedItem(Cytoscape.getCurrentNetwork()
+                               .getTitle());
+       }
+
+       public void propertyChange(PropertyChangeEvent evt) {
+
+               final String propName = evt.getPropertyName();
+               
+               if 
(propName.equals(Cytoscape.NETWORK_CREATED)||propName.equals(Cytoscape.NETWORK_TITLE_MODIFIED)){
+                       updateNetworkList();
+               }
+               else if (propName.equals(Cytoscape.NETWORK_DESTROYED))
+                       networkComboBox.removeItem(Cytoscape.getNetwork(
+                                       (String) evt.getNewValue()).getTitle());
+
+       }
+
+       /**
+        *  Installs a new item listener for the embedded combo box.
+        */
+       public void addItemListener(final ItemListener newListener) {
+               networkComboBox.addItemListener(newListener);
+       }
+}

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