Author: scooter
Date: 2012-07-31 10:23:30 -0700 (Tue, 31 Jul 2012)
New Revision: 30049

Modified:
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/group/CollapseGroupTask.java
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/group/GroupNodeContextTaskFactoryImpl.java
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/group/UnGroupNodesTaskFactoryImpl.java
Log:
Change group/ungroup/collapse/expand so that actions apply to all selected 
nodes or groups


Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
  2012-07-31 16:55:24 UTC (rev 30048)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
  2012-07-31 17:23:30 UTC (rev 30049)
@@ -1030,7 +1030,7 @@
                        new GroupNodeContextTaskFactoryImpl(cyGroupManager, 
true);
                Properties collapseGroupTaskFactoryProps = new Properties();
                
collapseGroupTaskFactoryProps.setProperty(PREFERRED_MENU,NODE_GROUP_MENU);
-               collapseGroupTaskFactoryProps.setProperty(TITLE,"Collapse 
Group");
+               collapseGroupTaskFactoryProps.setProperty(TITLE,"Collapse 
Group(s)");
                collapseGroupTaskFactoryProps.setProperty(TOOLTIP,"Collapse 
Grouped Nodes");
                collapseGroupTaskFactoryProps.setProperty(PREFERRED_ACTION, 
"NEW");
                collapseGroupTaskFactoryProps.setProperty(MENU_GRAVITY, "2.0");
@@ -1043,7 +1043,7 @@
                        new GroupNodeContextTaskFactoryImpl(cyGroupManager, 
false);
                Properties expandGroupTaskFactoryProps = new Properties();
                
expandGroupTaskFactoryProps.setProperty(PREFERRED_MENU,NODE_GROUP_MENU);
-               expandGroupTaskFactoryProps.setProperty(TITLE,"Expand Group");
+               expandGroupTaskFactoryProps.setProperty(TITLE,"Expand 
Group(s)");
                expandGroupTaskFactoryProps.setProperty(TOOLTIP,"Expand Group");
                expandGroupTaskFactoryProps.setProperty(PREFERRED_ACTION, 
"NEW");
                expandGroupTaskFactoryProps.setProperty(MENU_GRAVITY, "3.0");

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/group/CollapseGroupTask.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/group/CollapseGroupTask.java
      2012-07-31 16:55:24 UTC (rev 30048)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/group/CollapseGroupTask.java
      2012-07-31 17:23:30 UTC (rev 30049)
@@ -47,26 +47,29 @@
 public class CollapseGroupTask extends AbstractTask {
        private CyNetwork net;
        private CyGroupManager mgr;
-       private CyGroup group;
+       private List<CyGroup> groups;
        private boolean collapse;
 
-       public CollapseGroupTask(CyNetwork net, CyGroup group, CyGroupManager 
manager, boolean collapse) {
+       public CollapseGroupTask(CyNetwork net, List<CyGroup> groups, 
CyGroupManager manager, boolean collapse) {
                if (net == null)
                        throw new NullPointerException("network is null");
-               if (group == null)
-                       throw new NullPointerException("group is null");
+               if (groups == null || groups.size() == 0)
+                       throw new NullPointerException("group list is null");
                this.net = net;
                this.mgr = manager;
-               this.group = group;
+               this.groups = groups;
                this.collapse = collapse;
        }
 
        public void run(TaskMonitor tm) throws Exception {
                tm.setProgress(0.0);
-               if (collapse)
-                       group.collapse(net);
-               else
-                       group.expand(net);
+               for (CyGroup group: groups) {
+                       if (collapse)
+                               group.collapse(net);
+                       else
+                               group.expand(net);
+                       tm.setProgress(1.0d/groups.size());
+               }
                tm.setProgress(1.0d);
        }
 }

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/group/GroupNodeContextTaskFactoryImpl.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/group/GroupNodeContextTaskFactoryImpl.java
        2012-07-31 16:55:24 UTC (rev 30048)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/group/GroupNodeContextTaskFactoryImpl.java
        2012-07-31 17:23:30 UTC (rev 30049)
@@ -29,11 +29,14 @@
  */
 package org.cytoscape.task.internal.group;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.cytoscape.group.CyGroup;
 import org.cytoscape.group.CyGroupManager;
+import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyTableUtil;
 import org.cytoscape.task.AbstractNodeViewTaskFactory;
 import org.cytoscape.task.edit.CollapseGroupTaskFactory;
 import org.cytoscape.task.edit.ExpandGroupTaskFactory;
@@ -57,7 +60,7 @@
        public boolean isReady(View<CyNode> nodeView, CyNetworkView netView) {
                if (collapse) {
                        // We're ready to collapse if the node view is in a 
group
-                       if (getExpandedGroupForNode(nodeView, netView) != null)
+                       if (getExpandedGroupForNode(nodeView.getModel(), 
netView) != null)
                                return true;
                } else {
                        // We're ready to expand if the node view is a group
@@ -70,17 +73,29 @@
 
        @Override
        public TaskIterator createTaskIterator(View<CyNode> nodeView, 
CyNetworkView netView) {
-               CyGroup group;
-               if (collapse)
-                       group = getExpandedGroupForNode(nodeView, netView);
-               else 
-                       group = mgr.getGroup(nodeView.getModel(), 
netView.getModel());
+               List<CyGroup> groups = new ArrayList<CyGroup>();
+               final List<CyNode> selNodes = 
CyTableUtil.getNodesInState(netView.getModel(), CyNetwork.SELECTED, true);
 
-               return new TaskIterator(new 
CollapseGroupTask(netView.getModel(), group, mgr, collapse));
+               if (collapse) {
+                       // Always add the context node, whether it's selected 
or not
+                       groups.add(getExpandedGroupForNode(nodeView.getModel(), 
netView));
+                       for (CyNode node: selNodes) {
+                               CyGroup g = getExpandedGroupForNode(node, 
netView);
+                               if (g != null) groups.add(g);
+                       }
+               } else  {
+                       groups.add(mgr.getGroup(nodeView.getModel(), 
netView.getModel()));
+                       for (CyNode node: selNodes) {
+                               CyGroup g = mgr.getGroup(node, 
netView.getModel());
+                               if (g != null) groups.add(g);
+                       }
+               }
+
+               return new TaskIterator(new 
CollapseGroupTask(netView.getModel(), groups, mgr, collapse));
        }
 
-       private CyGroup getExpandedGroupForNode(View<CyNode> nodeView, 
CyNetworkView netView) {
-               List<CyGroup> groups = 
mgr.getGroupsForNode(nodeView.getModel());
+       private CyGroup getExpandedGroupForNode(CyNode node, CyNetworkView 
netView) {
+               List<CyGroup> groups = mgr.getGroupsForNode(node); // Always 
add the context node
                if (groups == null || groups.size() == 0)
                        return null;
 

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/group/UnGroupNodesTaskFactoryImpl.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/group/UnGroupNodesTaskFactoryImpl.java
    2012-07-31 16:55:24 UTC (rev 30048)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/group/UnGroupNodesTaskFactoryImpl.java
    2012-07-31 17:23:30 UTC (rev 30049)
@@ -93,8 +93,10 @@
        public TaskIterator createTaskIterator(View<CyNode> nodeView, 
                                               CyNetworkView netView) {
                List<CyNode> nodeList = new ArrayList<CyNode>();
+               CyNetwork net = netView.getModel();
+
                nodeList.add(nodeView.getModel());
-               CyNetwork net = netView.getModel();
+               nodeList.addAll(CyTableUtil.getNodesInState(net, 
CyNetwork.SELECTED, true));
                Set<CyGroup> groups = getGroups(net, nodeList);
 
                return new TaskIterator(new UnGroupNodesTask(undoSupport, net, 
factory, groups, mgr));

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