private void defineMenuForGraphElement()

in taverna-graph-model/src/main/java/org/apache/taverna/workbench/models/graph/DefaultGraphEventManager.java [133:226]


	private void defineMenuForGraphElement(final GraphElement graphElement,
			final int x, final int y, final Processor processor,
			final Activity activity) {
		if (graphController.getPortStyle(processor).equals(NONE)) {
			menu.addSeparator();
			menu.add(new JMenuItem(new AbstractAction("Show ports") {
				@Override
				public void actionPerformed(ActionEvent ev) {
					graphController.setPortStyle(processor, ALL);
					graphController.redraw();
				}
			}));
		} else if (graphController.getPortStyle(processor).equals(ALL)) {
			menu.addSeparator();
			menu.add(new JMenuItem(new AbstractAction("Hide ports") {
				@Override
				public void actionPerformed(ActionEvent arg0) {
					graphController.setPortStyle(processor, NONE);
					graphController.redraw();
				}
			}));
		}

		if (activity.getType().equals(NESTED_WORKFLOW_URI)) {
			menu.addSeparator();
			menu.add(new JMenuItem(new AbstractAction("Show nested workflow") {
				@Override
				public void actionPerformed(ActionEvent arg0) {
					graphController.setExpandNestedDataflow(activity, true);
					graphController.redraw();
				}
			}));
		}

		menu.addSeparator();

		GraphNode graphNode = (GraphNode) graphElement;

		List<GraphNode> sourceNodes = graphNode.getSourceNodes();
		if (sourceNodes.size() == 1) {
			final GraphNode sourceNode = sourceNodes.get(0);
			if (sourceNode.getLabel() != null) {
				menu.add(new JMenuItem(new AbstractAction("Link from output '"
						+ sourceNode.getLabel() + "'") {
					@Override
					public void actionPerformed(ActionEvent arg0) {
						graphController.startEdgeCreation(sourceNode,
								new Point(x, y));
					}
				}));
			}
		} else if (sourceNodes.size() > 0) {
			JMenu linkMenu = new JMenu("Link from output...");
			menu.add(linkMenu);
			for (final GraphNode sourceNode : sourceNodes) {
				linkMenu.add(new JMenuItem(new AbstractAction(sourceNode
						.getLabel()) {
					@Override
					public void actionPerformed(ActionEvent arg0) {
						graphController.startEdgeCreation(sourceNode,
								new Point(x, y));
					}
				}));
			}
		}

		List<GraphNode> sinkNodes = graphNode.getSinkNodes();
		if (sinkNodes.size() == 1) {
			final GraphNode sinkNode = sinkNodes.get(0);
			if (sinkNode.getLabel() != null) {
				menu.add(new JMenuItem(new AbstractAction("Link to input '"
						+ sinkNode.getLabel() + "'") {
					@Override
					public void actionPerformed(ActionEvent arg0) {
						graphController.startEdgeCreation(sinkNode, new Point(
								x, y));
					}
				}));
			}
		} else if (sinkNodes.size() > 0) {
			JMenu linkMenu = new JMenu("Link to input...");
			menu.add(linkMenu);
			for (final GraphNode sinkNode : sinkNodes) {
				linkMenu.add(new JMenuItem(new AbstractAction(sinkNode
						.getLabel()) {
					@Override
					public void actionPerformed(ActionEvent arg0) {
						graphController.startEdgeCreation(sinkNode, new Point(
								x, y));
					}
				}));
			}
		}
	}