Author: kono
Date: 2011-06-08 19:01:49 -0700 (Wed, 08 Jun 2011)
New Revision: 25687

Added:
   core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/edit/
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/edit/ConnectSelectedNodesTask.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/edit/ConnectSelectedNodesTaskFactory.java
Modified:
   
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
   
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
Log:
Missing task (Connect Selected Nodes) had been added.

Added: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/edit/ConnectSelectedNodesTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/edit/ConnectSelectedNodesTask.java
                             (rev 0)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/edit/ConnectSelectedNodesTask.java
     2011-06-09 02:01:49 UTC (rev 25687)
@@ -0,0 +1,68 @@
+package org.cytoscape.task.internal.edit;
+
+import java.util.List;
+
+import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyEdge.Type;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyTableEntry;
+import org.cytoscape.model.CyTableUtil;
+import org.cytoscape.model.events.RowsAboutToChangeEvent;
+import org.cytoscape.model.events.RowsFinishedChangingEvent;
+import org.cytoscape.work.AbstractTask;
+import org.cytoscape.work.TaskMonitor;
+
+public class ConnectSelectedNodesTask extends AbstractTask {
+
+       // TODO: is it sufficient to create undirected edge only?
+       private static final String INTERACTION = "undirected";
+
+       private final CyNetwork network;
+       private final CyEventHelper eventHelper;
+       
+       public ConnectSelectedNodesTask(final CyNetwork network, final 
CyEventHelper eventHelper) {
+               if (network == null)
+                       throw new NullPointerException("Network is null.");
+               this.network = network;
+               this.eventHelper = eventHelper;
+       }
+
+       @Override
+       public void run(TaskMonitor taskMonitor) throws Exception {
+
+               final List<CyNode> selectedNodes = 
CyTableUtil.getNodesInState(network, CyNetwork.SELECTED, true);
+
+               final CyTable nodeTable = network.getDefaultNodeTable();
+               final CyTable edgeTable = network.getDefaultEdgeTable();
+               try {
+                       // Generate bundled event to avoid too many events 
problem.
+                       eventHelper.fireSynchronousEvent(new 
RowsAboutToChangeEvent(this, nodeTable));
+                       eventHelper.fireSynchronousEvent(new 
RowsAboutToChangeEvent(this, edgeTable));
+                       
+                       for (CyNode source : selectedNodes) {
+                               for (CyNode target : selectedNodes) {
+                                       if (source != target) {
+                                               final List<CyNode> 
sourceNeighborList = network.getNeighborList(source, Type.ANY);
+                                               if 
(sourceNeighborList.contains(target) == false) {
+                                                       // connect it
+                                                       final CyEdge newEdge = 
network.addEdge(source, target, false);
+                                                       newEdge.getCyRow().set(
+                                                                       
CyTableEntry.NAME,
+                                                                       
source.getCyRow().get(CyTableEntry.NAME, String.class) + " (" + INTERACTION + 
") "
+                                                                               
        + target.getCyRow().get(CyTableEntry.NAME, String.class));
+                                                       
newEdge.getCyRow().set(CyEdge.INTERACTION, INTERACTION);
+
+                                               }
+                                       }
+                               }
+                       }
+               } finally {
+                       eventHelper.fireSynchronousEvent(new 
RowsFinishedChangingEvent(this, nodeTable));
+                       eventHelper.fireSynchronousEvent(new 
RowsFinishedChangingEvent(this, edgeTable));
+               }
+       }
+
+}

Added: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/edit/ConnectSelectedNodesTaskFactory.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/edit/ConnectSelectedNodesTaskFactory.java
                              (rev 0)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/edit/ConnectSelectedNodesTaskFactory.java
      2011-06-09 02:01:49 UTC (rev 25687)
@@ -0,0 +1,24 @@
+package org.cytoscape.task.internal.edit;
+
+import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.session.CyApplicationManager;
+import org.cytoscape.work.TaskFactory;
+import org.cytoscape.work.TaskIterator;
+
+public class ConnectSelectedNodesTaskFactory implements TaskFactory {
+
+       private final CyApplicationManager appManager;
+//     private final CyNetworkViewManager viewManager;
+       private final CyEventHelper eventHelper;
+
+       public ConnectSelectedNodesTaskFactory(final CyApplicationManager 
appManager, final CyEventHelper eventHelper) {
+               this.appManager = appManager;
+               this.eventHelper = eventHelper;
+       }
+
+       @Override
+       public TaskIterator getTaskIterator() {
+               return new TaskIterator(new 
ConnectSelectedNodesTask(appManager.getCurrentNetwork(), eventHelper));
+       }
+
+}

Modified: 
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
===================================================================
--- 
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
       2011-06-09 01:54:48 UTC (rev 25686)
+++ 
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context-osgi.xml
       2011-06-09 02:01:49 UTC (rev 25687)
@@ -428,7 +428,7 @@
                        <entry key="inToolBar" value="true" />
                        <entry key="toolBarGravity" value="3.1" />
                        <entry key="iconName" 
value="/images/ximian/stock_zoom-in.png" />
-                       <entry key="accelerator" value="cmd equals />
+                       <entry key="accelerator" value="cmd equals" />
                </osgi:service-properties>
        </osgi:service>
 
@@ -669,5 +669,15 @@
                <osgi:listener bind-method="addFactory"
                        unbind-method="removeFactory" 
ref="subnetworkBuilderUtil" />
        </osgi:set>
+       
+       <osgi:service id="connectSelectedNodesTaskFactoryService" 
ref="connectSelectedNodesTaskFactory"
+               interface="org.cytoscape.work.TaskFactory">
+               <osgi:service-properties>
+                       <entry key="title" value="Connect Selected Nodes" />
+                       <entry key="enableFor" value="network" />
+                       <entry key="preferredMenu" value="Edit" />
+                       <entry key="toolBarGravity" value="2.5" />
+               </osgi:service-properties>
+       </osgi:service>
 
 </beans>

Modified: 
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
--- 
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
    2011-06-09 01:54:48 UTC (rev 25686)
+++ 
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
    2011-06-09 02:01:49 UTC (rev 25687)
@@ -382,4 +382,10 @@
                <constructor-arg ref="cyLayoutsServiceRef" />
 
        </bean>
+       
+       <bean id="connectSelectedNodesTaskFactory"
+               
class="org.cytoscape.task.internal.edit.ConnectSelectedNodesTaskFactory">
+               <constructor-arg ref="cyApplicationManagerServiceRef" />
+               <constructor-arg ref="cyEventHelperRef" />
+       </bean>
 </beans>

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