Author: paperwing
Date: 2012-03-13 09:00:54 -0700 (Tue, 13 Mar 2012)
New Revision: 28513
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/CyActivator.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngineFactory.java
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 pop-up menus added for nodes, edges and network; pop-up menus now
populated with items corresponding to task factories; need to use
SubmenuTaskManager service to prevent adding duplicate menu items as
implemented in Ding
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/CyActivator.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/CyActivator.java
2012-03-13 01:30:38 UTC (rev 28512)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/CyActivator.java
2012-03-13 16:00:54 UTC (rev 28513)
@@ -18,6 +18,7 @@
import org.cytoscape.work.TaskFactory;
import org.cytoscape.work.TaskManager;
import org.cytoscape.work.swing.DialogTaskManager;
+import org.cytoscape.work.swing.SubmenuTaskManager;
import org.osgi.framework.BundleContext;
/**
@@ -43,6 +44,9 @@
DialogTaskManager cyDialogTaskManager = getService(bc,
DialogTaskManager.class);
+ SubmenuTaskManager cySubmenuTaskManager = getService(bc,
+ SubmenuTaskManager.class);
+
// Register service to collect references to relevant task
factories for the right-click context menu
TaskFactoryListener taskFactoryListener = new
TaskFactoryListener();
registerServiceListener(bc, taskFactoryListener,
"addNodeViewTaskFactory", "removeNodeViewTaskFactory",
NodeViewTaskFactory.class);
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngineFactory.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngineFactory.java
2012-03-13 01:30:38 UTC (rev 28512)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngineFactory.java
2012-03-13 16:00:54 UTC (rev 28513)
@@ -67,6 +67,7 @@
// engine.setUpNetworkView(networkViewManager);
engine.setUpCanvas(container);
engine.setUpNetworkViewDestroyedListener(serviceRegistrar);
+ engine.setupTaskFactories(taskFactoryListener, taskManager);
// System.out.println("returning engine: " + engine);
renderingEngineManager.addRenderingEngine(engine);
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-13 01:30:38 UTC (rev 28512)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/ContextMenuInputHandler.java
2012-03-13 16:00:54 UTC (rev 28513)
@@ -6,6 +6,7 @@
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
+import org.cytoscape.model.CyEdge;
import org.cytoscape.model.CyNode;
import org.cytoscape.paperwing.internal.data.GraphicsData;
import org.cytoscape.paperwing.internal.task.PopupMenuCreator;
@@ -35,27 +36,37 @@
CyNetworkView networkView = graphicsData.getNetworkView();
- int nodeIndex =
graphicsData.getSelectionData().getHoverNodeIndex();
- CyNode node = networkView.getModel().getNode(nodeIndex);
+ CyNode node =
networkView.getModel().getNode(graphicsData.getSelectionData().getHoverNodeIndex());
+ CyEdge edge =
networkView.getModel().getEdge(graphicsData.getSelectionData().getHoverEdgeIndex());
- View<CyNode> nodeView = null;
- if (node != null) {
- nodeView = networkView.getNodeView(node);
- }
-
- if (pressed.contains(MouseEvent.BUTTON3) && nodeView != null) {
+ 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());
+ }
- JPopupMenu popupMenu =
popupMenuCreator.createNodeMenu(nodeView,
- networkView,
graphicsData.getVisualLexicon(),
-
graphicsData.getTaskFactoryListener().getNodeViewTaskFactories());
-
-
// menu.add(new JMenuItem("Sample Action"));
- System.out.println("Creating context menu at : " +
mouse.x() + ", " + mouse.y());
- popupMenu.show(graphicsData.getContainer(), mouse.x(),
mouse.y());
+ 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-13 01:30:38 UTC (rev 28512)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/PopupMenuCreator.java
2012-03-13 16:00:54 UTC (rev 28513)
@@ -14,6 +14,8 @@
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNode;
import org.cytoscape.paperwing.internal.data.GraphicsData;
+import org.cytoscape.task.EdgeViewTaskFactory;
+import org.cytoscape.task.NetworkViewTaskFactory;
import org.cytoscape.task.NodeViewTaskFactory;
import org.cytoscape.util.swing.GravityTracker;
import org.cytoscape.util.swing.JMenuTracker;
@@ -25,6 +27,7 @@
import org.cytoscape.work.TaskFactoryPredicate;
import org.cytoscape.work.swing.DialogTaskManager;
import org.cytoscape.work.swing.DynamicSubmenuListener;
+import org.cytoscape.work.swing.SubmenuTaskManager;
/**
* This class is responsible for creating and populating pop-up menus created
when right-clicking the network.
@@ -32,14 +35,39 @@
public class PopupMenuCreator {
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) {
+ 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();
+
+ edgeViewTaskFactory.setEdgeView(edgeView,
networkView);
+
+ createMenuItem(edgeView, visualLexicon,
popupMenu, edgeViewTaskFactory, tracker, properties);
+ }
+ }
+
+ return popupMenu;
+ }
+
public JPopupMenu createNodeMenu(View<CyNode> nodeView,
CyNetworkView networkView,
VisualLexicon visualLexicon,
@@ -62,7 +90,27 @@
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();
+
+
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) {
@@ -87,6 +135,17 @@
// Below based on implementation from Ding
+ // check if the menus are created dynamically, and if so add
the listener
+ final 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");
@@ -94,7 +153,7 @@
// Update value for isSelected
if(view != null) {
- if (targetVisualProperty != null &&
targetVisualProperty instanceof String ) {
+ if (targetVisualProperty != null &&
targetVisualProperty instanceof String) {
Class<?> targetClass = CyNetwork.class;
@@ -108,7 +167,7 @@
isSelected = false;
else
isSelected =
view.isValueLocked(visualProperty);
- } else if ( targetVisualProperty instanceof
VisualProperty )
+ } else if ( targetVisualProperty instanceof
VisualProperty)
isSelected =
view.isValueLocked((VisualProperty<?>) targetVisualProperty);
}
@@ -140,7 +199,7 @@
// otherwise just use the preferred menu as the
menuitem name
} else {
title = preferredMenu;
- popupMenu.add( createMenuItem(taskFactory,
title, useCheckBoxMenuItem, tooltip) );
+ popupMenu.add(createMenuItem(taskFactory,
title, useCheckBoxMenuItem, tooltip));
}
// title and preferred menu
@@ -155,7 +214,7 @@
AbstractAction action = new AbstractAction(title){
@Override
- public void actionPerformed(ActionEvent arg0) {
+ public void actionPerformed(ActionEvent event) {
taskManager.execute(taskFactory);
}
--
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.