Author: kono
Date: 2010-02-16 14:23:52 -0800 (Tue, 16 Feb 2010)
New Revision: 19336

Added:
   cytoscape/trunk/src/cytoscape/util/swing/NetworkSelectorPanel.java
Log:
Utility class to track current network titles in session and returns selected 
network.

Added: cytoscape/trunk/src/cytoscape/util/swing/NetworkSelectorPanel.java
===================================================================
--- cytoscape/trunk/src/cytoscape/util/swing/NetworkSelectorPanel.java          
                (rev 0)
+++ cytoscape/trunk/src/cytoscape/util/swing/NetworkSelectorPanel.java  
2010-02-16 22:23:52 UTC (rev 19336)
@@ -0,0 +1,75 @@
+package cytoscape.util.swing;
+
+import java.awt.BorderLayout;
+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;
+       
+       private final JComboBox networkComboBox;
+
+       public NetworkSelectorPanel() {
+               super();
+               this.setLayout(new BorderLayout());
+               networkComboBox = new JComboBox();
+
+               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))
+                       updateNetworkList();
+               else if (propName.equals(Cytoscape.NETWORK_DESTROYED))
+                       networkComboBox.removeItem(Cytoscape.getNetwork(
+                                       (String) evt.getNewValue()).getTitle());
+
+       }
+}

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