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.