Author: paperwing
Date: 2012-03-23 12:03:11 -0700 (Fri, 23 Mar 2012)
New Revision: 28629

Added:
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/TaskFactoryProvider.java
Modified:
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/ContextMenuInputHandler.java
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/PopupMenuCreator.java
Log:
Right-click popup-menu creation updated for recently modified TaskFactory API, 
most functionalities restored

Modified: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/ContextMenuInputHandler.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/ContextMenuInputHandler.java
    2012-03-23 18:41:37 UTC (rev 28628)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/ContextMenuInputHandler.java
    2012-03-23 19:03:11 UTC (rev 28629)
@@ -28,46 +28,46 @@
        }
 
        private void processNetworkRightClickMenu(MouseMonitor mouse, 
GraphicsData graphicsData){
-//             if (popupMenuCreator == null) {
-//                     popupMenuCreator = new 
PopupMenuCreator(graphicsData.getTaskManager(),
-//                                     graphicsData.getSubmenuTaskManager());
-//             }
-//             
-//             Set<Integer> pressed = mouse.getPressed();
-//             
-//             CyNetworkView networkView = graphicsData.getNetworkView();
-//             
-//             CyNode node = 
networkView.getModel().getNode(graphicsData.getSelectionData().getHoverNodeIndex());
-//             CyEdge edge = 
networkView.getModel().getEdge(graphicsData.getSelectionData().getHoverEdgeIndex());
-//             
-//             if (pressed.contains(MouseEvent.BUTTON3)) {
-//                     
-//                     JPopupMenu popupMenu = null;
-//                     
-//                     if (node != null) {
-//                             View<CyNode> nodeView = 
networkView.getNodeView(node);;
-//                             
-//                             popupMenu = 
popupMenuCreator.createNodeMenu(nodeView, 
-//                                             networkView, 
graphicsData.getVisualLexicon(), 
-//                                             
graphicsData.getTaskFactoryListener().getNodeViewTaskFactories());
-//                     } else if (edge != null) {
-//                             View<CyEdge> edgeView = 
networkView.getEdgeView(edge);
-//                             
-//                             popupMenu = 
popupMenuCreator.createEdgeMenu(edgeView, 
-//                                             networkView, 
graphicsData.getVisualLexicon(), 
-//                                             
graphicsData.getTaskFactoryListener().getEdgeViewTaskFactories());
-//                     } else {
-//                             popupMenu = 
popupMenuCreator.createNetworkMenu(networkView, 
-//                                             graphicsData.getVisualLexicon(),
-//                                             
graphicsData.getTaskFactoryListener().getNetworkViewTaskFactories());
-//                     }
-//                     
-//                     // menu.add(new JMenuItem("Sample Action"));
-//                     
-//                     if (popupMenu != null) {
-//                             popupMenu.show(graphicsData.getContainer(), 
mouse.x(), mouse.y());
-//                     }
-//             }
-//             
+               if (popupMenuCreator == null) {
+                       popupMenuCreator = new 
PopupMenuCreator(graphicsData.getTaskManager(),
+                                       graphicsData.getSubmenuTaskManager());
+               }
+               
+               Set<Integer> pressed = mouse.getPressed();
+               
+               CyNetworkView networkView = graphicsData.getNetworkView();
+               
+               CyNode node = 
networkView.getModel().getNode(graphicsData.getSelectionData().getHoverNodeIndex());
+               CyEdge edge = 
networkView.getModel().getEdge(graphicsData.getSelectionData().getHoverEdgeIndex());
+               
+               if (pressed.contains(MouseEvent.BUTTON3)) {
+                       
+                       JPopupMenu popupMenu = null;
+                       
+                       if (node != null) {
+                               View<CyNode> nodeView = 
networkView.getNodeView(node);;
+                               
+                               popupMenu = 
popupMenuCreator.createNodeMenu(nodeView, 
+                                               networkView, 
graphicsData.getVisualLexicon(), 
+                                               
graphicsData.getTaskFactoryListener().getNodeViewTaskFactories());
+                       } else if (edge != null) {
+                               View<CyEdge> edgeView = 
networkView.getEdgeView(edge);
+                               
+                               popupMenu = 
popupMenuCreator.createEdgeMenu(edgeView, 
+                                               networkView, 
graphicsData.getVisualLexicon(), 
+                                               
graphicsData.getTaskFactoryListener().getEdgeViewTaskFactories());
+                       } else {
+                               popupMenu = 
popupMenuCreator.createNetworkMenu(networkView, 
+                                               graphicsData.getVisualLexicon(),
+                                               
graphicsData.getTaskFactoryListener().getNetworkViewTaskFactories());
+                       }
+                       
+                       // menu.add(new JMenuItem("Sample Action"));
+                       
+                       if (popupMenu != null) {
+                               popupMenu.show(graphicsData.getContainer(), 
mouse.x(), mouse.y());
+                       }
+               }
+               
        }
 }

Modified: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/PopupMenuCreator.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/PopupMenuCreator.java
    2012-03-23 18:41:37 UTC (rev 28628)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/PopupMenuCreator.java
    2012-03-23 19:03:11 UTC (rev 28629)
@@ -17,6 +17,8 @@
 import org.cytoscape.task.EdgeViewTaskFactory;
 import org.cytoscape.task.NetworkViewTaskFactory;
 import org.cytoscape.task.NodeViewTaskFactory;
+import org.cytoscape.task.TunableEdgeViewTaskFactory;
+import org.cytoscape.task.TunableNodeViewTaskFactory;
 import org.cytoscape.util.swing.GravityTracker;
 import org.cytoscape.util.swing.JMenuTracker;
 import org.cytoscape.view.model.CyNetworkView;
@@ -34,208 +36,223 @@
  */
 public class PopupMenuCreator {
                
-//     /** For creating popup menu items for the network, only use task 
factories that match the preferred action*/
-//     private static final String NETWORK_PREFFERED_ACTION = "NEW";
-//     
-//     private DialogTaskManager taskManager;
-//     private SubmenuTaskManager submenuTaskManager;
-//     
-//     // Large value to be used for the gravity value of 
org.cytoscape.util.swing.GravityTracker
-//     private double largeValue = Double.MAX_VALUE / 2.0;
-//
-//     public PopupMenuCreator(DialogTaskManager taskManager, 
SubmenuTaskManager submenuTaskManager) {
-//             this.taskManager = taskManager;
-//             this.submenuTaskManager = submenuTaskManager;
-//     }
-//     
-//     public JPopupMenu createEdgeMenu(View<CyEdge> edgeView, 
-//                     CyNetworkView networkView, 
-//                     VisualLexicon visualLexicon,
-//                     Map<EdgeViewTaskFactory, Map<String, Object>> 
taskFactories) {
-//             
-//             JPopupMenu popupMenu = new JPopupMenu();
-//             JMenuTracker tracker = new JMenuTracker(popupMenu);
-//             
-//             if (taskFactories.size() >= 1) {
-//                     for (Entry<EdgeViewTaskFactory, Map<String, Object>> 
entry : taskFactories.entrySet()) {
-//
-//                             EdgeViewTaskFactory edgeViewTaskFactory = 
entry.getKey();
-//                             Map<String, Object> properties = 
entry.getValue();
-//                             
+       /** For creating popup menu items for the network, only use task 
factories that match the preferred action*/
+       private static final String NETWORK_PREFFERED_ACTION = "NEW";
+       
+       private DialogTaskManager taskManager;
+       private SubmenuTaskManager submenuTaskManager;
+       
+       private TaskFactoryProvider taskFactoryProvider;
+       
+       // Large value to be used for the gravity value of 
org.cytoscape.util.swing.GravityTracker
+       private double largeValue = Double.MAX_VALUE / 2.0;
+
+       public PopupMenuCreator(DialogTaskManager taskManager, 
SubmenuTaskManager submenuTaskManager) {
+               this.taskManager = taskManager;
+               this.submenuTaskManager = submenuTaskManager;
+               
+               this.taskFactoryProvider = new TaskFactoryProvider();
+       }
+       
+       public JPopupMenu createEdgeMenu(View<CyEdge> edgeView, 
+                       CyNetworkView networkView, 
+                       VisualLexicon visualLexicon,
+                       Map<EdgeViewTaskFactory, Map<String, Object>> 
taskFactories) {
+               
+               JPopupMenu popupMenu = new JPopupMenu();
+               JMenuTracker tracker = new JMenuTracker(popupMenu);
+               
+               if (taskFactories.size() >= 1) {
+                       for (Entry<EdgeViewTaskFactory, Map<String, Object>> 
entry : taskFactories.entrySet()) {
+                               EdgeViewTaskFactory edgeViewTaskFactory = 
entry.getKey();
+                               Map<String, Object> properties = 
entry.getValue();
+                               
+                               Object context = null; // TunableContext
+                               if (edgeViewTaskFactory instanceof 
TunableEdgeViewTaskFactory<?>) {
+                                       context = 
((TunableEdgeViewTaskFactory<?>) edgeViewTaskFactory).createTunableContext(
+                                                       edgeView, networkView);
+                               }
+                               
 //                             edgeViewTaskFactory.setEdgeView(edgeView, 
networkView);
-//
-//                             createMenuItem(edgeView, visualLexicon, 
popupMenu, edgeViewTaskFactory, tracker, properties);
-//                     }
-//             }
-//             
-//             return popupMenu;
-//     }
-//     
-//     public JPopupMenu createNodeMenu(View<CyNode> nodeView, 
-//                     CyNetworkView networkView, 
-//                     VisualLexicon visualLexicon,
-//                     Map<NodeViewTaskFactory, Map<String, Object>> 
taskFactories) {
-//             
-//             JPopupMenu popupMenu = new JPopupMenu();
-//             JMenuTracker tracker = new JMenuTracker(popupMenu);
-//             
-//             if (taskFactories.size() >= 1) {
-//                     for (Entry<NodeViewTaskFactory, Map<String, Object>> 
entry : taskFactories.entrySet()) {
-//
-//                             NodeViewTaskFactory nodeViewTaskFactory = 
entry.getKey();
-//                             Map<String, Object> properties = 
entry.getValue();
-//                             
-//                             nodeViewTaskFactory.setNodeView(nodeView, 
networkView);
-//                             
-//                             createMenuItem(nodeView, visualLexicon, 
popupMenu, nodeViewTaskFactory, tracker, properties);
-//                     }
-//             }
-//             
-//             return popupMenu;
-//     }
-//     
-//     public JPopupMenu createNetworkMenu(CyNetworkView networkView, 
VisualLexicon visualLexicon,
-//                     Map<NetworkViewTaskFactory, Map<String, Object>> 
taskFactories) {
-//             
-//             JPopupMenu popupMenu = new JPopupMenu();
-//             JMenuTracker tracker = new JMenuTracker(popupMenu);
-//             
-//             if (taskFactories.size() >= 1) {
-//                     for (Entry<NetworkViewTaskFactory, Map<String, Object>> 
entry : taskFactories.entrySet()) {
-//
-//                             NetworkViewTaskFactory networkViewTaskFactory = 
entry.getKey();
-//                             Map<String, Object> properties = 
entry.getValue();
-//                             
-//                             Object preferredAction = 
properties.get("preferredAction");
-//                             
-//                             if (preferredAction != null && 
preferredAction.toString().equals(NETWORK_PREFFERED_ACTION)) {
-//                                     
networkViewTaskFactory.setNetworkView(networkView);
-//                                     
-//                                     createMenuItem(null, visualLexicon, 
popupMenu, networkViewTaskFactory, tracker, properties);
-//                             }
-//                     }
-//             }
-//             
-//             return popupMenu;
-//     }
-//     
-//     private void createMenuItem(View<?> view, VisualLexicon visualLexicon, 
JPopupMenu popupMenu, TaskFactory taskFactory,
-//                                 JMenuTracker tracker, Map<String, Object> 
properties) {
-//             
-//             String title = null;
-//             if (properties.get("title") != null) {
-//                     title = properties.get("title").toString();
-//             }
-//             
-//             String tooltip = null;
-//             if (properties.get("tooltip") != null) {
-//                     tooltip = properties.get("tooltip").toString();
-//             }
-//             
-//             String preferredMenu = null;
-//             if (properties.get("preferredMenu") != null) {
-//                     preferredMenu = 
properties.get("preferredMenu").toString();
-//             }
-//             
-//             // TODO: Ding implementation refers to a DynamicSubmenuListener 
related to the SubMenuTaskManager,
-//             // check if this is necessary for this implementation
-//             
-//             // Below based on implementation from Ding
-//
-//             // check if the menus are created dynamically, and if so add 
the listener
-//             Object preferredTaskManager = 
properties.get("preferredTaskManager");
-//             if (preferredTaskManager != null && 
preferredTaskManager.toString().equals("menu")) {
-//                     if (title == null)
-//                             title = "Dynamic";
-//                     DynamicSubmenuListener submenu = 
submenuTaskManager.getConfiguration(taskFactory);
-//             submenu.setMenuTitle(title);
-//                     popupMenu.addPopupMenuListener(submenu);
-//                     return;
-//             }
-//
-//             
-//             Boolean useCheckBoxMenuItem = 
Boolean.parseBoolean(String.valueOf(properties.get("useCheckBoxMenuItem")));
-//             Object targetVisualProperty = properties.get("targetVP");
-//             boolean isSelected = false;
-//             
-//             // Update value for isSelected
-//             if(view != null) {
-//                     if (targetVisualProperty != null && 
targetVisualProperty instanceof String) {
-//
-//                             Class<?> targetClass = CyNetwork.class;
-//                             
-//                             if (view.getModel() instanceof CyNode)
-//                                     targetClass = CyNode.class;
-//                             else if (view.getModel() instanceof CyEdge)
-//                                     targetClass = CyEdge.class;
-//                             
-//                             VisualProperty<?> visualProperty = 
visualLexicon.lookup(CyNode.class, targetVisualProperty.toString());
-//                             if (visualProperty == null)
-//                                     isSelected = false;
-//                             else
-//                                     isSelected = 
view.isValueLocked(visualProperty);
-//                     } else if ( targetVisualProperty instanceof 
VisualProperty)
-//                             isSelected = 
view.isValueLocked((VisualProperty<?>) targetVisualProperty);
-//             }
-//             
-//
-//             // no title and no preferred menu
-//             if (title == null && preferredMenu == null) {
-//                     title = "Unidentified Task: " + 
Integer.toString(taskFactory.hashCode());
-//                     popupMenu.add(createMenuItem(taskFactory, title, 
useCheckBoxMenuItem, tooltip));
-//
-//             // title, but no preferred menu
-//             } else if (title != null && preferredMenu == null) {
-//                     popupMenu.add(createMenuItem(taskFactory, title, 
useCheckBoxMenuItem, tooltip));
-//
-//             // no title, but preferred menu
-//             } else if (title == null && preferredMenu != null) {
-//                     int last = preferredMenu.lastIndexOf(".");
-//
-//                     // if the preferred menu is delimited
-//                     if (last > 0) {
-//                             title = preferredMenu.substring(last + 1);
-//                             preferredMenu = preferredMenu.substring(0, 
last);
-//                             final GravityTracker gravityTracker = 
tracker.getGravityTracker(preferredMenu);
-//                             final JMenuItem item = 
createMenuItem(taskFactory, title,useCheckBoxMenuItem, tooltip);
-//                             if (useCheckBoxMenuItem) {
-//                                     final JCheckBoxMenuItem checkBox = 
(JCheckBoxMenuItem)item; 
-//                                     checkBox.setSelected(isSelected);
-//                             }
-//                             gravityTracker.addMenuItem(item, ++largeValue);
-//                     // otherwise just use the preferred menu as the 
menuitem name
-//                     } else {
-//                             title = preferredMenu;
-//                             popupMenu.add(createMenuItem(taskFactory, 
title, useCheckBoxMenuItem, tooltip));
-//                     }
-//
-//             // title and preferred menu
-//             } else {
-//                     final GravityTracker gravityTracker = 
tracker.getGravityTracker(preferredMenu);
-//                     gravityTracker.addMenuItem(createMenuItem(taskFactory, 
title,useCheckBoxMenuItem, tooltip), ++largeValue);
-//             }
-//     }
-//             
-//     private JMenuItem createMenuItem(final TaskFactory taskFactory, String 
title, boolean useCheckBoxMenuItem, String toolTipText) {
-//             JMenuItem item;
-//             AbstractAction action = new AbstractAction(title){
-//
-//                     @Override
-//                     public void actionPerformed(ActionEvent event) {
-//                             taskManager.execute(taskFactory);
-//                     }
-//                     
-//             };
-//             
-//             if (useCheckBoxMenuItem)
-//                     item = new JCheckBoxMenuItem(action);
-//             else
-//                     item = new JMenuItem(action);
-//
+                               TaskFactory taskFactory = 
taskFactoryProvider.createFor(edgeViewTaskFactory, edgeView, networkView);
+                               createMenuItem(edgeView, visualLexicon, 
popupMenu, taskFactory, context, tracker, properties);
+                       }
+               }
+               
+               return popupMenu;
+       }
+       
+       public JPopupMenu createNodeMenu(View<CyNode> nodeView, 
+                       CyNetworkView networkView, 
+                       VisualLexicon visualLexicon,
+                       Map<NodeViewTaskFactory, Map<String, Object>> 
taskFactories) {
+               
+               JPopupMenu popupMenu = new JPopupMenu();
+               JMenuTracker tracker = new JMenuTracker(popupMenu);
+               
+               if (taskFactories.size() >= 1) {
+                       for (Entry<NodeViewTaskFactory, Map<String, Object>> 
entry : taskFactories.entrySet()) {
+                               NodeViewTaskFactory nodeViewTaskFactory = 
entry.getKey();
+                               Map<String, Object> properties = 
entry.getValue();
+                               
+                               Object context = null;
+                               if (nodeViewTaskFactory instanceof 
TunableNodeViewTaskFactory<?>) {
+                                       context = 
((TunableNodeViewTaskFactory<?>) nodeViewTaskFactory).createTunableContext(
+                                                       nodeView, networkView);
+                               }
+                               
+                               TaskFactory taskFactory = 
taskFactoryProvider.createFor(nodeViewTaskFactory, nodeView, networkView);
+                               createMenuItem(nodeView, visualLexicon, 
popupMenu, taskFactory, context, tracker, properties);
+                       }
+               }
+               
+               return popupMenu;
+       }
+       
+       public JPopupMenu createNetworkMenu(CyNetworkView networkView, 
VisualLexicon visualLexicon,
+                       Map<NetworkViewTaskFactory, Map<String, Object>> 
taskFactories) {
+               
+               JPopupMenu popupMenu = new JPopupMenu();
+               JMenuTracker tracker = new JMenuTracker(popupMenu);
+               
+               if (taskFactories.size() >= 1) {
+                       for (Entry<NetworkViewTaskFactory, Map<String, Object>> 
entry : taskFactories.entrySet()) {
+
+                               NetworkViewTaskFactory networkViewTaskFactory = 
entry.getKey();
+                               Map<String, Object> properties = 
entry.getValue();
+                               
+                               Object preferredAction = 
properties.get("preferredAction");
+                               
+                               if (preferredAction != null && 
preferredAction.toString().equals(NETWORK_PREFFERED_ACTION)) {
+                                       
+                                       TaskFactory taskFactory = 
taskFactoryProvider.createFor(networkViewTaskFactory, networkView);
+                                       createMenuItem(null, visualLexicon, 
popupMenu, taskFactory, null, tracker, properties);
+                               }
+                       }
+               }
+               
+               return popupMenu;
+       }
+       
+       private void createMenuItem(View<?> view, VisualLexicon visualLexicon, 
JPopupMenu popupMenu, TaskFactory taskFactory,
+                                   Object context, JMenuTracker tracker, 
Map<String, Object> properties) {
+               
+               String title = null;
+               if (properties.get("title") != null) {
+                       title = properties.get("title").toString();
+               }
+               
+               String tooltip = null;
+               if (properties.get("tooltip") != null) {
+                       tooltip = properties.get("tooltip").toString();
+               }
+               
+               String preferredMenu = null;
+               if (properties.get("preferredMenu") != null) {
+                       preferredMenu = 
properties.get("preferredMenu").toString();
+               }
+               
+               // TODO: Ding implementation refers to a DynamicSubmenuListener 
related to the SubMenuTaskManager,
+               // check if this is necessary for this implementation
+               
+               // Below based on implementation from Ding
+
+               // check if the menus are created dynamically, and if so add 
the listener
+               Object preferredTaskManager = 
properties.get("preferredTaskManager");
+               if (preferredTaskManager != null && 
preferredTaskManager.toString().equals("menu")) {
+                       if (title == null)
+                               title = "Dynamic";
+                       DynamicSubmenuListener submenu = 
submenuTaskManager.getConfiguration(taskFactory, context);
+               submenu.setMenuTitle(title);
+                       popupMenu.addPopupMenuListener(submenu);
+                       return;
+               }
+
+               
+               Boolean useCheckBoxMenuItem = 
Boolean.parseBoolean(String.valueOf(properties.get("useCheckBoxMenuItem")));
+               Object targetVisualProperty = properties.get("targetVP");
+               boolean isSelected = false;
+               
+               // Update value for isSelected
+               if(view != null) {
+                       if (targetVisualProperty != null && 
targetVisualProperty instanceof String) {
+
+                               Class<?> targetClass = CyNetwork.class;
+                               
+                               if (view.getModel() instanceof CyNode)
+                                       targetClass = CyNode.class;
+                               else if (view.getModel() instanceof CyEdge)
+                                       targetClass = CyEdge.class;
+                               
+                               VisualProperty<?> visualProperty = 
visualLexicon.lookup(CyNode.class, targetVisualProperty.toString());
+                               if (visualProperty == null)
+                                       isSelected = false;
+                               else
+                                       isSelected = 
view.isValueLocked(visualProperty);
+                       } else if ( targetVisualProperty instanceof 
VisualProperty)
+                               isSelected = 
view.isValueLocked((VisualProperty<?>) targetVisualProperty);
+               }
+               
+
+               // no title and no preferred menu
+               if (title == null && preferredMenu == null) {
+                       title = "Unidentified Task: " + 
Integer.toString(taskFactory.hashCode());
+                       popupMenu.add(createMenuItem(taskFactory, title, 
useCheckBoxMenuItem, tooltip));
+
+               // title, but no preferred menu
+               } else if (title != null && preferredMenu == null) {
+                       popupMenu.add(createMenuItem(taskFactory, title, 
useCheckBoxMenuItem, tooltip));
+
+               // no title, but preferred menu
+               } else if (title == null && preferredMenu != null) {
+                       int last = preferredMenu.lastIndexOf(".");
+
+                       // if the preferred menu is delimited
+                       if (last > 0) {
+                               title = preferredMenu.substring(last + 1);
+                               preferredMenu = preferredMenu.substring(0, 
last);
+                               final GravityTracker gravityTracker = 
tracker.getGravityTracker(preferredMenu);
+                               final JMenuItem item = 
createMenuItem(taskFactory, title,useCheckBoxMenuItem, tooltip);
+                               if (useCheckBoxMenuItem) {
+                                       final JCheckBoxMenuItem checkBox = 
(JCheckBoxMenuItem)item; 
+                                       checkBox.setSelected(isSelected);
+                               }
+                               gravityTracker.addMenuItem(item, ++largeValue);
+                       // otherwise just use the preferred menu as the 
menuitem name
+                       } else {
+                               title = preferredMenu;
+                               popupMenu.add(createMenuItem(taskFactory, 
title, useCheckBoxMenuItem, tooltip));
+                       }
+
+               // title and preferred menu
+               } else {
+                       final GravityTracker gravityTracker = 
tracker.getGravityTracker(preferredMenu);
+                       gravityTracker.addMenuItem(createMenuItem(taskFactory, 
title,useCheckBoxMenuItem, tooltip), ++largeValue);
+               }
+       }
+               
+       private JMenuItem createMenuItem(final TaskFactory taskFactory, String 
title, boolean useCheckBoxMenuItem, String toolTipText) {
+               JMenuItem item;
+               AbstractAction action = new AbstractAction(title){
+
+                       @Override
+                       public void actionPerformed(ActionEvent event) {
+                               
taskManager.execute(taskFactory.createTaskIterator());
+                       }
+                       
+               };
+               
+               if (useCheckBoxMenuItem)
+                       item = new JCheckBoxMenuItem(action);
+               else
+                       item = new JMenuItem(action);
+
 //             if (taskFactory instanceof TaskFactoryPredicate)
 //                     item.setEnabled(((TaskFactoryPredicate) 
taskFactory).isReady());
-//
-//             item.setToolTipText(toolTipText);
-//             return item;
-//     }
+
+               item.setEnabled(taskFactory.isReady());
+               
+               item.setToolTipText(toolTipText);
+               return item;
+       }
 }

Added: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/TaskFactoryProvider.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/TaskFactoryProvider.java
                         (rev 0)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/TaskFactoryProvider.java
 2012-03-23 19:03:11 UTC (rev 28629)
@@ -0,0 +1,74 @@
+package org.cytoscape.paperwing.internal.task;
+
+import java.awt.datatransfer.Transferable;
+import java.awt.geom.Point2D;
+import java.lang.ref.Reference;
+import java.lang.ref.WeakReference;
+
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.task.EdgeViewTaskFactory;
+import org.cytoscape.task.NetworkViewLocationTaskFactory;
+import org.cytoscape.task.NetworkViewTaskFactory;
+import org.cytoscape.task.NodeViewTaskFactory;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.View;
+import org.cytoscape.work.TaskFactory;
+import org.cytoscape.work.TaskIterator;
+
+public class TaskFactoryProvider {
+       public  TaskFactory createFor(final NetworkViewTaskFactory factory, 
CyNetworkView networkView) {
+               final Reference<CyNetworkView> reference = new 
WeakReference<CyNetworkView>(networkView);
+               return new TaskFactory() {
+                       public TaskIterator createTaskIterator() {
+                               return 
factory.createTaskIterator(reference.get());
+                       }
+                       
+                       public boolean isReady() {
+                               return factory.isReady(reference.get());
+                       }
+               };
+       }
+       
+       public  TaskFactory createFor(final NetworkViewLocationTaskFactory 
factory, CyNetworkView networkView, final Point2D point, final Point2D 
transformedPoint) {
+               final Reference<CyNetworkView> reference = new 
WeakReference<CyNetworkView>(networkView);
+               return new TaskFactory() {
+                       public TaskIterator createTaskIterator() {
+                               return 
factory.createTaskIterator(reference.get(), point, transformedPoint);
+                       }
+                       
+                       public boolean isReady() {
+                               return factory.isReady(reference.get(), point, 
transformedPoint);
+                       }
+               };
+       }
+       
+       public  TaskFactory createFor(final NodeViewTaskFactory factory, 
View<CyNode> nodeView, CyNetworkView networkView) {
+               final Reference<View<CyNode>> nodeReference = new 
WeakReference<View<CyNode>>(nodeView);
+               final Reference<CyNetworkView> networkReference = new 
WeakReference<CyNetworkView>(networkView);
+               return new TaskFactory() {
+                       public TaskIterator createTaskIterator() {
+                               return 
factory.createTaskIterator(nodeReference.get(), networkReference.get());
+                       }
+                       
+                       public boolean isReady() {
+                               return factory.isReady(nodeReference.get(), 
networkReference.get());
+                       }
+               };
+       }
+
+       public  TaskFactory createFor(final EdgeViewTaskFactory factory, 
View<CyEdge> edgeView, CyNetworkView networkView) {
+               final Reference<View<CyEdge>> edgeReference = new 
WeakReference<View<CyEdge>>(edgeView);
+               final Reference<CyNetworkView> networkReference = new 
WeakReference<CyNetworkView>(networkView);
+               return new TaskFactory() {
+                       public TaskIterator createTaskIterator() {
+                               return 
factory.createTaskIterator(edgeReference.get(), networkReference.get());
+                       }
+                       
+                       public boolean isReady() {
+                               return factory.isReady(edgeReference.get(), 
networkReference.get());
+                       }
+               };
+       
+       }
+}


Property changes on: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/TaskFactoryProvider.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

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