Author: mes
Date: 2012-06-08 17:24:51 -0700 (Fri, 08 Jun 2012)
New Revision: 29516

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/CreateNetworkViewTaskFactoryImpl.java
   
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/task/TaskFactoryTunableAction.java
   
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/CytoscapeMenuPopulator.java
   
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
Log:
fixes #1033 Instead of adding new enableFor keys, I just updated the 
CreateNetworkViewTaskFactory to implement the isReady() method and then tweaked 
SwingApplication so that it would use the TaskFactory isReady() method instead 
of enableFor if the enableFor key wasn't defined for the TaskFactort service 
properties.

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-06-08 22:27:13 UTC (rev 29515)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
  2012-06-09 00:24:51 UTC (rev 29516)
@@ -762,7 +762,7 @@
 
                Properties createNetworkViewTaskFactoryProps = new Properties();
                
createNetworkViewTaskFactoryProps.setProperty(ID,"createNetworkViewTaskFactory");
-               
createNetworkViewTaskFactoryProps.setProperty(ENABLE_FOR,"networkWithoutView");
+               // No ENABLE_FOR because that is handled by the isReady() 
methdod of the task factory.
                
createNetworkViewTaskFactoryProps.setProperty(PREFERRED_MENU,"Edit");
                
createNetworkViewTaskFactoryProps.setProperty(MENU_GRAVITY,"3.0");
                createNetworkViewTaskFactoryProps.setProperty(TITLE,"Create 
View");

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewTaskFactoryImpl.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewTaskFactoryImpl.java
    2012-06-08 22:27:13 UTC (rev 29515)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewTaskFactoryImpl.java
    2012-06-09 00:24:51 UTC (rev 29516)
@@ -80,4 +80,12 @@
                                        layouts, eventHelper, vmm));
        }
 
+       @Override
+       public boolean isReady(final Collection<CyNetwork> networks) {
+        for ( CyNetwork n : networks ) 
+            if ( !networkViewManager.getNetworkViews(n).isEmpty() ) 
+                return false;
+        return true;
+       }
+
 }

Modified: 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/task/TaskFactoryTunableAction.java
===================================================================
--- 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/task/TaskFactoryTunableAction.java
     2012-06-08 22:27:13 UTC (rev 29515)
+++ 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/task/TaskFactoryTunableAction.java
     2012-06-09 00:24:51 UTC (rev 29516)
@@ -48,13 +48,30 @@
 
        final protected TaskFactory factory;
        final protected DialogTaskManager manager;
-       final protected CyApplicationManager applicationManager;
 
-       public TaskFactoryTunableAction(final DialogTaskManager manager, final 
TaskFactory factory,
-                       final Map<String, String> serviceProps, final 
CyApplicationManager applicationManager, final CyNetworkViewManager 
networkViewManager) {
+       /**
+        * This constructor forces the action to use the TaskFactory.isReady() 
method
+        * to determine whether the action should be enabled.
+        */
+       public TaskFactoryTunableAction(final DialogTaskManager manager, 
+                                       final TaskFactory factory,
+                                       final Map<String, String> serviceProps) 
{
+               super(serviceProps, factory);
+               this.manager = manager;
+               this.factory = factory;
+       }
+
+       /**
+        * This constructor forces the action to use the "enableFor" property 
in serviceProps 
+        * to determine whether the action should be enabled.
+        */
+       public TaskFactoryTunableAction(final DialogTaskManager manager, 
+                                       final TaskFactory factory,
+                                       final Map<String, String> serviceProps, 
+                                       final CyApplicationManager 
applicationManager, 
+                                       final CyNetworkViewManager 
networkViewManager) {
                super(serviceProps, applicationManager, networkViewManager, 
factory);
                this.manager = manager;
-               this.applicationManager = applicationManager;
                this.factory = factory;
        }
 

Modified: 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/CytoscapeMenuPopulator.java
===================================================================
--- 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/CytoscapeMenuPopulator.java
       2012-06-08 22:27:13 UTC (rev 29515)
+++ 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/CytoscapeMenuPopulator.java
       2012-06-09 00:24:51 UTC (rev 29516)
@@ -99,10 +99,13 @@
 
        public void addTaskFactory(TaskFactory factory, Map props) {
                String pref = (String)(props.get("preferredTaskManager"));
-               if (pref != null && pref.equals("panel"))
-                       addFactory(new 
CytoPanelTaskFactoryTunableAction(factory, null, panelTaskManager, props, 
appManager, networkViewManager, registrar), factory, props);
-               else
-                       addFactory(new 
TaskFactoryTunableAction(dialogTaskManager, factory, props, appManager, 
networkViewManager), factory, props);
+               if (pref != null && pref.equals("panel")) {
+                       addAction(new 
CytoPanelTaskFactoryTunableAction(factory, null, panelTaskManager, 
+                                                                       props, 
appManager, networkViewManager, registrar), 
+                                                                       
factory);
+               } else {
+                       addFactory(factory, props);
+               }
        }
 
        public void removeTaskFactory(TaskFactory factory, Map props) {
@@ -112,7 +115,7 @@
        public void addNetworkTaskFactory(NetworkTaskFactory factory, Map 
props) {
                TaskFactory provisioner = factoryProvisioner.createFor(factory);
                provisionerMap.put(factory, provisioner);
-               addFactory(new TaskFactoryTunableAction(dialogTaskManager, 
provisioner, props, appManager, networkViewManager), provisioner, props);
+               addFactory(provisioner, props);
        }
 
        public void removeNetworkTaskFactory(NetworkTaskFactory factory, Map 
props) {
@@ -125,7 +128,7 @@
                        return;
                TaskFactory provisioner = factoryProvisioner.createFor(factory);
                provisionerMap.put(factory, provisioner);
-               addFactory(new TaskFactoryTunableAction(dialogTaskManager, 
provisioner, props, appManager, networkViewManager), provisioner, props);
+               addFactory(provisioner, props);
        }
 
        public void removeNetworkViewTaskFactory(NetworkViewTaskFactory 
factory, Map props) {
@@ -135,7 +138,7 @@
        public void 
addNetworkViewCollectionTaskFactory(NetworkViewCollectionTaskFactory factory, 
Map props) {
                TaskFactory provisioner = factoryProvisioner.createFor(factory);
                provisionerMap.put(factory, provisioner);
-               addFactory(new TaskFactoryTunableAction(dialogTaskManager, 
provisioner, props, appManager, networkViewManager), provisioner, props);
+               addFactory(provisioner, props);
        }
 
        public void 
removeNetworkViewCollectionTaskFactory(NetworkViewCollectionTaskFactory 
factory, Map props) {
@@ -145,7 +148,7 @@
        public void 
addNetworkCollectionTaskFactory(NetworkCollectionTaskFactory factory, Map 
props) {
                TaskFactory provisioner = factoryProvisioner.createFor(factory);
                provisionerMap.put(factory, provisioner);
-               addFactory(new TaskFactoryTunableAction(dialogTaskManager, 
provisioner, props, appManager, networkViewManager), provisioner, props);
+               addFactory(provisioner, props);
        }
 
        public void 
removeNetworkCollectionTaskFactory(NetworkCollectionTaskFactory factory, Map 
props) {
@@ -155,14 +158,24 @@
        public void addTableTaskFactory(TableTaskFactory factory, Map props) {
                TaskFactory provisioner = factoryProvisioner.createFor(factory);
                provisionerMap.put(factory, provisioner);
-               addFactory(new TaskFactoryTunableAction(dialogTaskManager, 
provisioner, props, appManager, networkViewManager), provisioner, props);
+               addFactory(provisioner, props);
        }
        
        public void removeTableTaskFactory(TableTaskFactory factory, Map props) 
{
                removeFactory(provisionerMap.get(factory), props);
        }
        
-       private <F extends TaskFactory> void addFactory(CyAction action, F 
factory, Map props) {
+       private void addFactory(TaskFactory factory, Map props) {
+               CyAction action;
+               if ( props.containsKey("enableFor") )
+                       action = new 
TaskFactoryTunableAction(dialogTaskManager, factory, props, appManager, 
networkViewManager);
+               else    
+                       action = new 
TaskFactoryTunableAction(dialogTaskManager, factory, props);
+
+               addAction(action,factory);
+       }
+
+       private void addAction(CyAction action, TaskFactory factory) {
                taskMap.put(factory,action);
                app.addAction(action);
        }

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-06-08 22:27:13 UTC (rev 29515)
+++ 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
 2012-06-09 00:24:51 UTC (rev 29516)
@@ -235,7 +235,13 @@
                treeTable.addMouseListener(new PopupListener());
        }
 
-       private void addFactory(TaskFactory factory, CyAction action) {
+       private void addFactory(TaskFactory factory, 
@SuppressWarnings("rawtypes") Map props) {
+               CyAction action;
+               if ( props.containsKey("enableFor") )
+                       action = new TaskFactoryTunableAction(taskMgr, factory, 
props, appMgr, netViewMgr);
+               else
+                       action = new TaskFactoryTunableAction(taskMgr, factory, 
props);
+
                final JMenuItem item = new JMenuItem(action);
                popupMap.put(factory, item);
                popupActions.put(factory, action);
@@ -253,18 +259,17 @@
        }
 
        public void addTaskFactory(TaskFactory factory, 
@SuppressWarnings("rawtypes") Map props) {
-               addFactory(factory, new TaskFactoryTunableAction(taskMgr, 
factory, props, appMgr, netViewMgr));
+               addFactory(factory, props);
        }
 
        public void removeTaskFactory(TaskFactory factory, 
@SuppressWarnings("rawtypes") Map props) {
                removeFactory(factory);
        }
 
-       public void 
addNetworkCollectionTaskFactory(NetworkCollectionTaskFactory factory, Map 
props) {
+       public void 
addNetworkCollectionTaskFactory(NetworkCollectionTaskFactory factory, 
@SuppressWarnings("rawtypes") Map props) {
                TaskFactory provisioner = factoryProvisioner.createFor(factory);
                provisionerMap.put(factory, provisioner);
-               addFactory(provisioner, new TaskFactoryTunableAction(taskMgr, 
provisioner, props, appMgr,
-                               netViewMgr));
+               addFactory(provisioner, props);
        }
 
        public void 
removeNetworkCollectionTaskFactory(NetworkCollectionTaskFactory factory, Map 
props) {
@@ -274,8 +279,7 @@
        public void 
addNetworkViewCollectionTaskFactory(NetworkViewCollectionTaskFactory factory, 
Map props) {
                TaskFactory provisioner = factoryProvisioner.createFor(factory);
                provisionerMap.put(factory, provisioner);
-               addFactory(provisioner, new TaskFactoryTunableAction(taskMgr, 
provisioner, props, appMgr,
-                               netViewMgr));
+               addFactory(provisioner, props);
        }
 
        public void 
removeNetworkViewCollectionTaskFactory(NetworkViewCollectionTaskFactory 
factory, Map props) {
@@ -285,8 +289,7 @@
        public void addNetworkTaskFactory(NetworkTaskFactory factory, 
@SuppressWarnings("rawtypes") Map props) {
                TaskFactory provisioner = factoryProvisioner.createFor(factory);
                provisionerMap.put(factory, provisioner);
-               addFactory(provisioner, new TaskFactoryTunableAction(taskMgr, 
provisioner, props, appMgr,
-                               netViewMgr));
+               addFactory(provisioner, props);
        }
 
        public void removeNetworkTaskFactory(NetworkTaskFactory factory, 
@SuppressWarnings("rawtypes") Map props) {
@@ -296,8 +299,7 @@
        public void addNetworkViewTaskFactory(final NetworkViewTaskFactory 
factory, @SuppressWarnings("rawtypes") Map props) {
                TaskFactory provisioner = factoryProvisioner.createFor(factory);
                provisionerMap.put(factory, provisioner);
-               addFactory(provisioner, new TaskFactoryTunableAction(taskMgr, 
provisioner, props, appMgr,
-                               netViewMgr));
+               addFactory(provisioner, props);
        }
 
        public void removeNetworkViewTaskFactory(NetworkViewTaskFactory 
factory, @SuppressWarnings("rawtypes") Map props) {

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