Author: rozagh
Date: 2012-09-07 15:28:56 -0700 (Fri, 07 Sep 2012)
New Revision: 30338

Modified:
   
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/CyActivator.java
   
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
   
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/TreeCellRenderer.java
Log:
fixes #1432 showing the title of root network and adding menu items for 
renaming and also selecting all of the networks in the collection. 

Modified: 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/CyActivator.java
       2012-09-07 21:48:46 UTC (rev 30337)
+++ 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/CyActivator.java
       2012-09-07 22:28:56 UTC (rev 30338)
@@ -117,6 +117,7 @@
 import org.cytoscape.task.NetworkViewCollectionTaskFactory;
 import org.cytoscape.task.NetworkViewTaskFactory;
 import org.cytoscape.task.TableTaskFactory;
+import org.cytoscape.task.edit.EditNetworkTitleTaskFactory;
 import org.cytoscape.task.write.SaveSessionAsTaskFactory;
 import org.cytoscape.util.swing.FileUtil;
 import org.cytoscape.util.swing.OpenBrowser;
@@ -196,6 +197,8 @@
                
                DataSourceManager dsManagerServiceRef = getService(bc, 
DataSourceManager.class);
                
+               EditNetworkTitleTaskFactory editNetworkTitleTFServiceRef  = 
getService(bc, EditNetworkTitleTaskFactory.class);
+               
                //////////////          
                UndoAction undoAction = new UndoAction(undoSupportServiceRef);
                RedoAction redoAction = new RedoAction(undoSupportServiceRef);
@@ -229,7 +232,8 @@
                                                             
cyNetworkViewManagerServiceRef,
                                                             
birdsEyeViewHandler,
                                                             
dialogTaskManagerServiceRef,
-                                                            
dynamicTaskFactoryProvisionerServiceRef);
+                                                            
dynamicTaskFactoryProvisionerServiceRef,
+                                                            
editNetworkTitleTFServiceRef);
 
                CytoscapeDesktop cytoscapeDesktop = new 
CytoscapeDesktop(cytoscapeMenus,
                                                                         
networkViewManager, networkPanel,

Modified: 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
===================================================================
--- 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
 2012-09-07 21:48:46 UTC (rev 30337)
+++ 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
 2012-09-07 22:28:56 UTC (rev 30338)
@@ -33,6 +33,8 @@
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.util.ArrayList;
@@ -89,6 +91,7 @@
 import org.cytoscape.task.NetworkTaskFactory;
 import org.cytoscape.task.NetworkViewCollectionTaskFactory;
 import org.cytoscape.task.NetworkViewTaskFactory;
+import org.cytoscape.task.edit.EditNetworkTitleTaskFactory;
 import org.cytoscape.util.swing.JTreeTable;
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.CyNetworkViewManager;
@@ -142,6 +145,9 @@
 
        private boolean ignoreTreeSelectionEvents;
 
+       private final EditNetworkTitleTaskFactory rootNetworkTitleEditor;
+       private final JPopupMenu rootPopupMenu; 
+       private CyRootNetwork selectedRoot;
        /**
         * 
         * @param appMgr
@@ -155,7 +161,8 @@
                                                final CyNetworkViewManager 
netViewMgr,
                                                final BirdsEyeViewHandler bird,
                                                final DialogTaskManager taskMgr,
-                                               DynamicTaskFactoryProvisioner 
factoryProvisioner) {
+                                               DynamicTaskFactoryProvisioner 
factoryProvisioner,
+                                               final 
EditNetworkTitleTaskFactory networkTitleEditor) {
                super();
 
                this.treeNodeMap = new HashMap<Long, NetworkTreeNode>();
@@ -165,7 +172,8 @@
                this.netViewMgr = netViewMgr;
                this.taskMgr = taskMgr;
                this.factoryProvisioner = factoryProvisioner;
-
+               
+               
                root = new NetworkTreeNode("Network Root", null);
                treeTableModel = new NetworkTreeTableModel(this, root);
                treeTable = new JTreeTable(treeTableModel);
@@ -181,6 +189,7 @@
                nodeEdgeTables = new WeakHashMap<CyTable, CyNetwork>();
                this.network2nodeMap = new WeakHashMap<CyNetwork, 
NetworkTreeNode>();
 
+               
                setNavigator(bird.getBirdsEyeView());
 
                /*
@@ -194,6 +203,30 @@
                                
treeTable.setInputMap(WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, map);
                        }
                }
+               
+
+               this.rootNetworkTitleEditor = networkTitleEditor;
+               rootPopupMenu = new JPopupMenu();
+               JMenuItem editRootNetworTitle = new JMenuItem("Rename Network 
Collection...");
+               editRootNetworTitle.addActionListener(new ActionListener() {
+                       
+                       @Override
+                       public void actionPerformed(ActionEvent e) {
+                               
+                               taskMgr.execute( 
rootNetworkTitleEditor.createTaskIterator(selectedRoot));
+                       }
+               });
+               rootPopupMenu.add(editRootNetworTitle);
+               
+               JMenuItem selectAllSubNetsMenuItem = new JMenuItem("Select All 
Networks");
+               selectAllSubNetsMenuItem.addActionListener(new ActionListener() 
{
+                       
+                       @Override
+                       public void actionPerformed(ActionEvent e) {
+                               selectAllSubnetwork();
+                       }
+               });
+               rootPopupMenu.add(selectAllSubNetsMenuItem);
        }
 
        protected void initialize() {
@@ -538,8 +571,11 @@
                                parentTreeNode = 
this.treeNodeMap.get(parentNetwork.getSUID());
                        }
 
-                       if (parentTreeNode == null)
-                               parentTreeNode = new NetworkTreeNode("", null);
+                       if (parentTreeNode == null){
+                               parentTreeNode = new 
NetworkTreeNode(parentNetwork.getRow(parentNetwork).get(CyNetwork.NAME, 
String.class) , parentNetwork);
+                               
nameTables.put(parentNetwork.getDefaultNetworkTable(), parentNetwork);
+                               network2nodeMap.put(parentNetwork, 
parentTreeNode);
+                       }
 
                        // Actual tree node for this network
                        String netName = 
network.getRow(network).get(CyNetwork.NAME, String.class);
@@ -627,12 +663,13 @@
 
                CyNetwork cn = node.getNetwork();
                final List<CyNetwork> selectedNetworks = new 
LinkedList<CyNetwork>();
-               
-               if (cn == null) {
+       
+               /*
+               if (cn instanceof CyRootNetwork) {
                        // This is a "network set" node...
                        // When selecting root node, all of the subnetworks are 
selected.
-                       CyRootNetwork root = ((CySubNetwork) ((NetworkTreeNode) 
node.getFirstChild()).getNetwork())
-                                       .getRootNetwork();
+                       CyRootNetwork root = (CyRootNetwork) cn; 
+                                       //((NetworkTreeNode) 
node.getFirstChild()).getNetwork()).getRootNetwork();
 
                        // Creates a list of all selected networks
                        List<CySubNetwork> subNetworks = 
root.getSubNetworkList();
@@ -645,7 +682,7 @@
                        // Determine the current network
                        if (!selectedNetworks.isEmpty())
                                cn = ((NetworkTreeNode) 
node.getFirstChild()).getNetwork();
-               } else {
+               } else { */
                        // Regular multiple networks selection...
                        try {
                                // Create a list of all selected networks
@@ -658,8 +695,62 @@
                        } catch (Exception ex) {
                                logger.error("Error creating the list of 
selected networks", ex);
                        }
+       //      }
+               
+               final List<CyNetworkView> selectedViews = new 
ArrayList<CyNetworkView>();
+               
+               for (final CyNetwork n : selectedNetworks) {
+                       final Collection<CyNetworkView> views = 
netViewMgr.getNetworkViews(n);
+                       
+                       if (!views.isEmpty())
+                               selectedViews.addAll(views);
                }
                
+               // No need to set the same network again. It should prevent 
infinite loops.
+               // Also check if the network still exists (it could have been 
removed by another thread).
+               if (cn == null || netMgr.networkExists(cn.getSUID())) {
+                       if (cn == null || 
!cn.equals(appMgr.getCurrentNetwork()))
+                               appMgr.setCurrentNetwork(cn);
+               
+                       CyNetworkView cv = null;
+                       
+                       // Try to get the first view of the current network
+                       final Collection<CyNetworkView> cnViews = cn != null ? 
netViewMgr.getNetworkViews(cn) : null;
+                       cv = (cnViews == null || cnViews.isEmpty()) ? null : 
cnViews.iterator().next();
+                       
+                       if (cv == null || 
!cv.equals(appMgr.getCurrentNetworkView()))
+                               appMgr.setCurrentNetworkView(cv);
+                       
+                       appMgr.setSelectedNetworks(selectedNetworks);
+                       appMgr.setSelectedNetworkViews(selectedViews);
+               }
+       }
+       
+       private void selectAllSubnetwork(){
+               
+               final List<CyNetwork> selectedNetworks = new 
LinkedList<CyNetwork>();
+               
+               // This is a "network set" node...
+               // When selecting root node, all of the subnetworks are 
selected.
+               CyRootNetwork root = selectedRoot;
+
+               final NetworkTreeNode node = this.network2nodeMap.get(root);
+               
+               // Creates a list of all selected networks
+               List<CySubNetwork> subNetworks = root.getSubNetworkList();
+               
+               for (CySubNetwork sn : subNetworks) {
+                       if (netMgr.networkExists(sn.getSUID()))
+                               selectedNetworks.add(sn);
+               }
+               
+               CyNetwork cn = root;
+               
+               // Determine the current network
+               if (!selectedNetworks.isEmpty())
+                       cn = ((NetworkTreeNode) 
node.getFirstChild()).getNetwork();
+               
+               
                final List<CyNetworkView> selectedViews = new 
ArrayList<CyNetworkView>();
                
                for (final CyNetwork n : selectedNetworks) {
@@ -713,7 +804,7 @@
                 * display the popup
                 */
                private final void maybeShowPopup(final MouseEvent e) {
-
+                       
                        // Ignore if not valid trigger.
                        if (!e.isPopupTrigger())
                                return;
@@ -725,15 +816,24 @@
 
                        final JTree tree = treeTable.getTree();
                        final TreePath treePath = tree.getPathForRow(row);
-
+                       CyNetwork rootnetwork;
+                       
                        Long networkID = -1L;
                        try {
-                               networkID = ((NetworkTreeNode) 
treePath.getLastPathComponent()).getNetwork().getSUID();
+                               rootnetwork = ((NetworkTreeNode) 
treePath.getLastPathComponent()).getNetwork();
+                               networkID = rootnetwork.getSUID();
                        } catch (NullPointerException nullExp) {
                                // The tree root does not represent a network, 
ignore it.
                                return;
                        }
 
+                       if (rootnetwork instanceof CyRootNetwork)
+                       {
+                               selectedRoot = (CyRootNetwork) rootnetwork;
+                               rootPopupMenu.show(e.getComponent(), e.getX(), 
e.getY());
+                               return;
+                       }
+                       
                        final CyNetwork network = netMgr.getNetwork(networkID);
 
                        if (network != null) {

Modified: 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/TreeCellRenderer.java
===================================================================
--- 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/TreeCellRenderer.java
     2012-09-07 21:48:46 UTC (rev 30337)
+++ 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/TreeCellRenderer.java
     2012-09-07 22:28:56 UTC (rev 30338)
@@ -12,6 +12,8 @@
 import javax.swing.tree.DefaultTreeCellRenderer;
 
 import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.subnetwork.CyRootNetwork;
+import org.cytoscape.model.subnetwork.CySubNetwork;
 import org.cytoscape.util.swing.JTreeTable;
 
 final class TreeCellRenderer extends DefaultTreeCellRenderer {
@@ -23,6 +25,7 @@
 
        private static final Font TABLE_FONT = new Font("SansSerif", 
Font.PLAIN, 12);
        private static final Font TABLE_FONT_SELECTED = new Font("SansSerif", 
Font.BOLD, 12);
+       private static final Font TABLE_FONT_ROOT = new Font("SansSerif", 
Font.ITALIC, 12);
        
        private static final Dimension CELL_SIZE = new Dimension(1200, 40);
 
@@ -63,17 +66,19 @@
 
                if (selected) {
                        this.setFont(TABLE_FONT_SELECTED);
-                       this.setBackgroundSelectionColor(Color.lightGray);      
                
+                       this.setBackgroundSelectionColor( new Color(0, 100, 
255, 40));          
                        }
                else {
                        this.setFont(TABLE_FONT);
                        this.setBackgroundNonSelectionColor(Color.white); 
                }
 
-               if(treeNode.getNetwork() == null) {
+               if(treeNode.getNetwork() == null || (treeNode.getNetwork() 
instanceof CyRootNetwork) ) {
                        setForeground(treeTable.getForeground());
+                       this.setFont(TABLE_FONT_ROOT);
                        return this;
                }
+                       
                
                setForeground(treeNode.getNodeColor());
                try {

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