Author: pwang
Date: 2012-10-19 16:54:31 -0700 (Fri, 19 Oct 2012)
New Revision: 30687
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/creation/NewEmptyNetworkTask.java
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTaskFactoryImpl.java
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTaskTest.java
Log:
Fixed bug#1505
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-10-19 20:02:40 UTC (rev 30686)
+++
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
2012-10-19 23:54:31 UTC (rev 30687)
@@ -260,7 +260,7 @@
UnHideAllTaskFactoryImpl unHideAllTaskFactory = new
UnHideAllTaskFactoryImpl(undoSupportServiceRef,cyEventHelperRef,visualMappingManagerServiceRef);
UnHideAllNodesTaskFactoryImpl unHideAllNodesTaskFactory = new
UnHideAllNodesTaskFactoryImpl(undoSupportServiceRef,cyEventHelperRef,visualMappingManagerServiceRef);
UnHideAllEdgesTaskFactoryImpl unHideAllEdgesTaskFactory = new
UnHideAllEdgesTaskFactoryImpl(undoSupportServiceRef,cyEventHelperRef,visualMappingManagerServiceRef);
- NewEmptyNetworkTaskFactoryImpl newEmptyNetworkTaskFactory = new
NewEmptyNetworkTaskFactoryImpl(cyNetworkFactoryServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkManagerServiceRef,cyNetworkViewManagerServiceRef,cyNetworkNamingServiceRef,synchronousTaskManagerServiceRef,visualMappingManagerServiceRef);
+ NewEmptyNetworkTaskFactoryImpl newEmptyNetworkTaskFactory = new
NewEmptyNetworkTaskFactoryImpl(cyNetworkFactoryServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkManagerServiceRef,cyNetworkViewManagerServiceRef,cyNetworkNamingServiceRef,synchronousTaskManagerServiceRef,visualMappingManagerServiceRef,
cyRootNetworkFactoryServiceRef, cyApplicationManagerServiceRef);
CloneNetworkTaskFactoryImpl cloneNetworkTaskFactory = new
CloneNetworkTaskFactoryImpl(cyNetworkManagerServiceRef,cyNetworkViewManagerServiceRef,visualMappingManagerServiceRef,cyNetworkFactoryServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkNamingServiceRef,cyApplicationManagerServiceRef,cyNetworkTableManagerServiceRef,rootNetworkManagerServiceRef,cyGroupManager,cyGroupFactory);
NewNetworkSelectedNodesEdgesTaskFactoryImpl
newNetworkSelectedNodesEdgesTaskFactory = new
NewNetworkSelectedNodesEdgesTaskFactoryImpl(undoSupportServiceRef,cyRootNetworkFactoryServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkManagerServiceRef,cyNetworkViewManagerServiceRef,cyNetworkNamingServiceRef,visualMappingManagerServiceRef,cyApplicationManagerServiceRef,cyEventHelperRef);
NewNetworkSelectedNodesOnlyTaskFactoryImpl
newNetworkSelectedNodesOnlyTaskFactory = new
NewNetworkSelectedNodesOnlyTaskFactoryImpl(undoSupportServiceRef,cyRootNetworkFactoryServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkManagerServiceRef,cyNetworkViewManagerServiceRef,cyNetworkNamingServiceRef,visualMappingManagerServiceRef,cyApplicationManagerServiceRef,cyEventHelperRef);
Modified:
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTask.java
===================================================================
---
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTask.java
2012-10-19 20:02:40 UTC (rev 30686)
+++
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTask.java
2012-10-19 23:54:31 UTC (rev 30687)
@@ -30,9 +30,22 @@
package org.cytoscape.task.internal.creation;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.cytoscape.application.CyApplicationManager;
+import org.cytoscape.model.CyColumn;
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNetworkFactory;
import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyTableUtil;
+import org.cytoscape.model.subnetwork.CyRootNetwork;
+import org.cytoscape.model.subnetwork.CyRootNetworkManager;
+import org.cytoscape.model.subnetwork.CySubNetwork;
import org.cytoscape.session.CyNetworkNaming;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.CyNetworkViewFactory;
@@ -40,7 +53,10 @@
import org.cytoscape.view.vizmap.VisualMappingManager;
import org.cytoscape.view.vizmap.VisualStyle;
import org.cytoscape.work.AbstractTask;
+import org.cytoscape.work.ProvidesTitle;
import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.work.Tunable;
+import org.cytoscape.work.util.ListSingleSelection;
/**
@@ -48,37 +64,184 @@
*/
public class NewEmptyNetworkTask extends AbstractTask {
- private final CyNetworkFactory cnf;
- private final CyNetworkViewFactory cnvf;
private final CyNetworkNaming namingUtil;
- private final CyNetworkManager networkManager;
private final CyNetworkViewManager networkViewManager;
private final VisualMappingManager vmm;
+ private final CyApplicationManager cyApplicationManager;
private boolean cancel;
private CyNetworkView view;
+
+ //
+ public static final String CRERATE_NEW_COLLECTION_STRING ="Create new
network collection";
+
+ protected final CyNetworkViewFactory cyNetworkViewFactory;
+ protected final CyNetworkFactory cyNetworkFactory;
+
+ protected final CyNetworkManager cyNetworkManager;
+ protected final CyRootNetworkManager cyRootNetworkManager;
+
+ //******** tunables ********************
+
+ public ListSingleSelection<String> rootNetworkList;
+ @Tunable(description = "Network Collection" ,groups=" ")
+ public ListSingleSelection<String> getRootNetworkList(){
+ return rootNetworkList;
+ }
+ public void setRootNetworkList (ListSingleSelection<String> roots){
+ if
(rootNetworkList.getSelectedValue().equalsIgnoreCase(CRERATE_NEW_COLLECTION_STRING)){
+ // set default
+ List<String> colNames = new ArrayList<String>();
+ colNames.add("shared name");
+ targetColumnList = new
ListSingleSelection<String>(colNames);
+ return;
+ }
+ targetColumnList =
getTargetColumns(name2RootMap.get(rootNetworkList.getSelectedValue()));
+ }
+
+ public ListSingleSelection<String> sourceColumnList;
+ @Tunable(description = "Mapping Column for New Network:", groups=" ")
+ public ListSingleSelection<String> getSourceColumnList(){
+ return sourceColumnList;
+ }
+ public void setSourceColumnList(ListSingleSelection<String> colList){
+ this.sourceColumnList = colList;
+ }
+ public ListSingleSelection<String> targetColumnList;
+ @Tunable(description = "Mapping Column for Existing Network:",groups="
", listenForChange={"RootNetworkList"})
+ public ListSingleSelection<String> getTargetColumnList(){
+ return targetColumnList;
+ }
+ public void setTargetColumnList(ListSingleSelection<String> colList){
+ this.targetColumnList = colList;
+ // looks like this does not have any effect, is this a bug?
+ this.targetColumnList.setSelectedValue("shared name");
+ }
+
+
+ @ProvidesTitle
+ public String getTitle() {
+ return "Create New Network ";
+ }
+
+
+ public ListSingleSelection<String> getTargetColumns (CyNetwork network)
{
+ CyTable selectedTable = network.getTable(CyNode.class,
CyRootNetwork.SHARED_ATTRS);
+
+ List<String> colNames = new ArrayList<String>();
+
+ // Work-around to make the "shared name" the first in the list
+ boolean containSharedName = false;
+ // check if "shared name" column exist
+ if (CyTableUtil.getColumnNames(selectedTable).contains("shared
name")){
+ containSharedName = true;
+ colNames.add("shared name");
+ }
+
+ for(CyColumn col: selectedTable.getColumns()) {
+ // Exclude SUID from the mapping key list
+ if (col.getName().equalsIgnoreCase("SUID")){
+ continue;
+ }
+
+ if (col.getName().equalsIgnoreCase("shared name") &&
containSharedName){
+ // "shared name" is already added in the first
+ continue;
+ }
+ colNames.add(col.getName());
+ }
+
+ ListSingleSelection<String> columns = new
ListSingleSelection<String>(colNames);
+
+ return columns;
+ }
+
+
+ protected HashMap<String, CyRootNetwork> name2RootMap;
+ protected Map<Object, CyNode> nMap = new HashMap<Object, CyNode>(10000);
+
public NewEmptyNetworkTask(CyNetworkFactory cnf, CyNetworkViewFactory
cnvf, CyNetworkManager netmgr,
final CyNetworkViewManager
networkViewManager, final CyNetworkNaming namingUtil,
- final VisualMappingManager vmm) {
- this.networkManager = netmgr;
+ final VisualMappingManager vmm, final
CyRootNetworkManager cyRootNetworkManager, final CyApplicationManager
cyApplicationManager) {
+ this.cyNetworkManager = netmgr;
this.networkViewManager = networkViewManager;
- this.cnf = cnf;
- this.cnvf = cnvf;
+ this.cyNetworkFactory = cnf;
+ this.cyNetworkViewFactory = cnvf;
this.namingUtil = namingUtil;
this.vmm = vmm;
+ this.cyRootNetworkManager = cyRootNetworkManager;
+ this.cyApplicationManager = cyApplicationManager;
+
+ // initialize the network Collection
+ this.name2RootMap = getRootNetworkMap(this.cyNetworkManager,
this.cyRootNetworkManager);
+
+ List<String> rootNames = new ArrayList<String>();
+ rootNames.add(CRERATE_NEW_COLLECTION_STRING);
+ rootNames.addAll(name2RootMap.keySet());
+ rootNetworkList = new ListSingleSelection<String>(rootNames);
+ rootNetworkList.setSelectedValue(rootNames.get(0));
+
+ final List<CyNetwork> selectedNetworks =
cyApplicationManager.getSelectedNetworks();
+
+ if (selectedNetworks != null && selectedNetworks.size() > 0){
+ CyNetwork selectedNetwork =
this.cyApplicationManager.getSelectedNetworks().get(0);
+ String rootName = "";
+ if (selectedNetwork instanceof CySubNetwork){
+ CySubNetwork subnet = (CySubNetwork)
selectedNetwork;
+ CyRootNetwork rootNet = subnet.getRootNetwork();
+ rootName =
rootNet.getRow(rootNet).get(CyNetwork.NAME, String.class);
+ } else {
+ // it is a root network
+ rootName =
selectedNetwork.getRow(selectedNetwork).get(CyNetwork.NAME, String.class);
+ }
+
+ rootNetworkList.setSelectedValue(rootName);
+ }
+
+ // initialize target attribute list
+ List<String> colNames_target = new ArrayList<String>();
+ colNames_target.add("shared name");
+ this.targetColumnList = new
ListSingleSelection<String>(colNames_target);
+
+ // initialize source attribute list
+ List<String> colNames_source = new ArrayList<String>();
+ colNames_source.add("shared name");
+ this.sourceColumnList = new
ListSingleSelection<String>(colNames_source);
}
public void run(TaskMonitor tm) {
tm.setProgress(0.0);
- final CyNetwork newNet = cnf.createNetwork();
+
+ String networkCollectionName =
this.rootNetworkList.getSelectedValue().toString();
+
+ CySubNetwork subNetwork;
+ if
(networkCollectionName.equalsIgnoreCase(CRERATE_NEW_COLLECTION_STRING)){
+ // This is a new network collection, create a root
network and a subnetwork, which is a base subnetwork
+ CyNetwork rootNetwork =
cyNetworkFactory.createNetwork();
+ subNetwork =
this.cyRootNetworkManager.getRootNetwork(rootNetwork).addSubNetwork();
+ }
+ else {
+ // Add a new subNetwork to the given collection
+ subNetwork =
this.name2RootMap.get(networkCollectionName).addSubNetwork();
+ }
+
tm.setProgress(0.2);
- newNet.getRow(newNet).set(CyNetwork.NAME,
namingUtil.getSuggestedNetworkTitle("Network"));
+
+ String networkName =
namingUtil.getSuggestedNetworkTitle("Network");
+ subNetwork.getRow(subNetwork).set(CyNetwork.NAME, networkName);
+
+ if
(networkCollectionName.equalsIgnoreCase(CRERATE_NEW_COLLECTION_STRING)){
+ // Set the name of new root network
+ CyNetwork rootNetwork = subNetwork.getRootNetwork();
+ rootNetwork.getRow(rootNetwork).set(CyNetwork.NAME,
networkName);
+ }
+
tm.setProgress(0.4);
- view = cnvf.createNetworkView(newNet);
+ view = cyNetworkViewFactory.createNetworkView(subNetwork);
tm.setProgress(0.6);
- networkManager.addNetwork(newNet);
+ cyNetworkManager.addNetwork(subNetwork);
tm.setProgress(0.8);
final VisualStyle style = vmm.getCurrentVisualStyle(); // get
the current style before registering the view!
networkViewManager.addNetworkView(view);
@@ -103,4 +266,18 @@
view.updateView();
}
}
+
+ public static HashMap<String, CyRootNetwork>
getRootNetworkMap(CyNetworkManager cyNetworkManager, CyRootNetworkManager
cyRootNetworkManager) {
+
+ HashMap<String, CyRootNetwork> name2RootMap = new
HashMap<String, CyRootNetwork>();
+
+ for (CyNetwork net : cyNetworkManager.getNetworkSet()){
+ final CyRootNetwork rootNet =
cyRootNetworkManager.getRootNetwork(net);
+ if (!name2RootMap.containsValue(rootNet ) )
+
name2RootMap.put(rootNet.getRow(rootNet).get(CyRootNetwork.NAME, String.class),
rootNet);
+ }
+
+ return name2RootMap;
+ }
+
}
Modified:
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTaskFactoryImpl.java
===================================================================
---
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTaskFactoryImpl.java
2012-10-19 20:02:40 UTC (rev 30686)
+++
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTaskFactoryImpl.java
2012-10-19 23:54:31 UTC (rev 30687)
@@ -29,8 +29,10 @@
*/
package org.cytoscape.task.internal.creation;
+import org.cytoscape.application.CyApplicationManager;
import org.cytoscape.model.CyNetworkFactory;
import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.subnetwork.CyRootNetworkManager;
import org.cytoscape.session.CyNetworkNaming;
import org.cytoscape.task.create.NewEmptyNetworkViewFactory;
import org.cytoscape.view.model.CyNetworkView;
@@ -49,11 +51,13 @@
private final CyNetworkNaming namingUtil;
private final SynchronousTaskManager<?> syncTaskMgr;
private final VisualMappingManager vmm;
-
+ private final CyRootNetworkManager cyRootNetworkManager;
+ private final CyApplicationManager cyApplicationManager;
+
public NewEmptyNetworkTaskFactoryImpl(final CyNetworkFactory cnf, final
CyNetworkViewFactory cnvf,
final CyNetworkManager netMgr, final
CyNetworkViewManager networkViewManager,
final CyNetworkNaming namingUtil, final
SynchronousTaskManager<?> syncTaskMgr,
- final VisualMappingManager vmm) {
+ final VisualMappingManager vmm, final
CyRootNetworkManager cyRootNetworkManager, final CyApplicationManager
cyApplicationManager) {
this.cnf = cnf;
this.cnvf = cnvf;
this.netMgr = netMgr;
@@ -61,6 +65,8 @@
this.namingUtil = namingUtil;
this.syncTaskMgr = syncTaskMgr;
this.vmm = vmm;
+ this.cyRootNetworkManager = cyRootNetworkManager;
+ this.cyApplicationManager = cyApplicationManager;
}
public TaskIterator createTaskIterator() {
@@ -68,7 +74,7 @@
}
private NewEmptyNetworkTask createTask() {
- return new NewEmptyNetworkTask(cnf, cnvf, netMgr,
networkViewMgr, namingUtil, vmm);
+ return new NewEmptyNetworkTask(cnf, cnvf, netMgr,
networkViewMgr, namingUtil, vmm, cyRootNetworkManager, cyApplicationManager);
}
public CyNetworkView createNewEmptyNetworkView() {
Modified:
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTaskTest.java
===================================================================
---
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTaskTest.java
2012-10-19 20:02:40 UTC (rev 30686)
+++
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/creation/NewEmptyNetworkTaskTest.java
2012-10-19 23:54:31 UTC (rev 30687)
@@ -3,11 +3,13 @@
import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;
+import org.cytoscape.application.CyApplicationManager;
import org.cytoscape.ding.NetworkViewTestSupport;
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNetworkFactory;
import org.cytoscape.model.CyNetworkManager;
import org.cytoscape.model.NetworkTestSupport;
+import org.cytoscape.model.subnetwork.CyRootNetworkManager;
import org.cytoscape.session.CyNetworkNaming;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.CyNetworkViewFactory;
@@ -27,7 +29,10 @@
private CyNetworkFactory cnf = support.getNetworkFactory();
private CyNetworkViewFactory cnvf = viewSupport.getNetworkViewFactory();
-
+ private CyRootNetworkManager cyroot = support.getRootNetworkFactory();
+
+ private CyApplicationManager appManager =
mock(CyApplicationManager.class);
+
@Mock
private CyNetworkManager netMgr;
@Mock
@@ -47,7 +52,7 @@
@Test
public void testNewEmptyNetworkTask() throws Exception {
- final NewEmptyNetworkTask task = new NewEmptyNetworkTask(cnf,
cnvf, netMgr, netViewMgr, namingUtil, vmm);
+ final NewEmptyNetworkTask task = new NewEmptyNetworkTask(cnf,
cnvf, netMgr, netViewMgr, namingUtil, vmm, cyroot, appManager);
final TaskMonitor taskMonitor = mock(TaskMonitor.class);
task.run(taskMonitor);
--
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.