private void handleMouseEvent()

in taverna-activity-palette-ui/src/main/java/org/apache/taverna/workbench/ui/servicepanel/ServiceTreeClickListener.java [92:206]


	private void handleMouseEvent(MouseEvent evt) {
		FilterTreeSelectionModel selectionModel = (FilterTreeSelectionModel) tree
				.getSelectionModel();
		// Discover the tree row that was clicked on
		int selRow = tree.getRowForLocation(evt.getX(), evt.getY());
		if (selRow == -1)
			return;

		// Get the selection path for the row
		TreePath selectionPath = tree
				.getPathForLocation(evt.getX(), evt.getY());
		if (selectionPath == null)
			return;

		// Get the selected node
		final FilterTreeNode selectedNode = (FilterTreeNode) selectionPath
				.getLastPathComponent();

		selectionModel.clearSelection();
		selectionModel.mySetSelectionPath(selectionPath);

		if (evt.isPopupTrigger()) {
			JPopupMenu menu = new JPopupMenu();
			Object selectedObject = selectedNode.getUserObject();
			logger.info(selectedObject.getClass().getName());
			if (!(selectedObject instanceof ServiceDescription)) {
				menu.add(new ShadedLabel("Tree", BLUE));
				menu.add(new JMenuItem(new AbstractAction("Expand all",
						plusIcon) {
					@Override
					public void actionPerformed(ActionEvent evt) {
						invokeLater(new Runnable() {
							@Override
							public void run() {
								panel.expandAll(selectedNode, true);
							}
						});
					}
				}));
				menu.add(new JMenuItem(new AbstractAction("Collapse all",
						minusIcon) {
					@Override
					public void actionPerformed(ActionEvent evt) {
						invokeLater(new Runnable() {
							@Override
							public void run() {
								panel.expandAll(selectedNode, false);
							}
						});
					}
				}));
			}

			if (selectedObject instanceof ServiceDescription) {
				final ServiceDescription sd = (ServiceDescription) selectedObject;
				menu.add(new ShadedLabel(sd.getName(), ORANGE));
				menu.add(new AbstractAction("Add to workflow") {
					@Override
					public void actionPerformed(ActionEvent e) {
						WorkflowView.importServiceDescription(sd, false, editManager,
								menuManager, selectionManager, serviceRegistry);
					}
				});
				menu.add(new AbstractAction("Add to workflow with name...") {
					@Override
					public void actionPerformed(ActionEvent e) {
						WorkflowView.importServiceDescription(sd, true, editManager,
								menuManager, selectionManager, serviceRegistry);
					}
				});
			}

			Map<String, ServiceDescriptionProvider> nameMap = getServiceDescriptionProviderMap(selectedNode);

			boolean first = true;
			for (String name : nameMap.keySet()) {
				final ServiceDescriptionProvider sdp = nameMap.get(name);
				if (!(sdp instanceof ConfigurableServiceProvider))
					continue;
				if (first) {
					menu.add(new ShadedLabel(
							"Remove individual service provider", GREEN));
					first = false;
				}
				menu.add(new AbstractAction(name) {
					@Override
					public void actionPerformed(ActionEvent e) {
						serviceDescriptionRegistry
								.removeServiceDescriptionProvider(sdp);
					}
				});
			}

			if (selectedNode.isRoot()) { // Root "Available services"
				menu.add(new ShadedLabel("Default and added service providers",
						ORANGE));
				menu.add(new RemoveUserServicesAction(
						serviceDescriptionRegistry));
				menu.add(new RemoveDefaultServicesAction(
						serviceDescriptionRegistry));
				menu.add(new RestoreDefaultServicesAction(
						serviceDescriptionRegistry));

				menu.add(new ShadedLabel("Import/export services", halfShade(RED)));
				menu.add(new ImportServiceDescriptionsFromFileAction(
						serviceDescriptionRegistry));
				menu.add(new ImportServiceDescriptionsFromURLAction(
						serviceDescriptionRegistry));
				menu.add(new ExportServiceDescriptionsAction(
						serviceDescriptionRegistry));
			}

			menu.show(evt.getComponent(), evt.getX(), evt.getY());
		}
	}