Search in sources :

Example 1 with GraphContextMenuItem

use of org.gephi.visualization.spi.GraphContextMenuItem in project gephi by gephi.

the class GraphContextMenu method createMenuItemFromGraphContextMenuItem.

public JMenuItem createMenuItemFromGraphContextMenuItem(final GraphContextMenuItem item, final Graph graph, final Node[] nodes) {
    ContextMenuItemManipulator[] subItems = item.getSubItems();
    if (subItems != null && item.canExecute()) {
        JMenu subMenu = new JMenu();
        subMenu.setText(item.getName());
        if (item.getDescription() != null && !item.getDescription().isEmpty()) {
            subMenu.setToolTipText(item.getDescription());
        }
        subMenu.setIcon(item.getIcon());
        Integer lastItemType = null;
        for (ContextMenuItemManipulator subItem : subItems) {
            ((GraphContextMenuItem) subItem).setup(graph, nodes);
            if (lastItemType == null) {
                lastItemType = subItem.getType();
            }
            if (lastItemType != subItem.getType()) {
                subMenu.addSeparator();
            }
            lastItemType = subItem.getType();
            if (subItem.isAvailable()) {
                subMenu.add(createMenuItemFromGraphContextMenuItem((GraphContextMenuItem) subItem, graph, nodes));
            }
        }
        if (item.getMnemonicKey() != null) {
            //Mnemonic for opening a sub menu
            subMenu.setMnemonic(item.getMnemonicKey());
        }
        return subMenu;
    } else {
        JMenuItem menuItem = new JMenuItem();
        menuItem.setText(item.getName());
        if (item.getDescription() != null && !item.getDescription().isEmpty()) {
            menuItem.setToolTipText(item.getDescription());
        }
        menuItem.setIcon(item.getIcon());
        if (item.canExecute()) {
            menuItem.addActionListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent e) {
                    new Thread() {

                        @Override
                        public void run() {
                            DataLaboratoryHelper.getDefault().executeManipulator(item);
                        }
                    }.start();
                }
            });
        } else {
            menuItem.setEnabled(false);
        }
        if (item.getMnemonicKey() != null) {
            //Mnemonic for executing the action
            menuItem.setMnemonic(item.getMnemonicKey());
            //And the same key mnemonic + ctrl for executing the action (and as a help display for the user!).
            menuItem.setAccelerator(KeyStroke.getKeyStroke(item.getMnemonicKey(), KeyEvent.CTRL_DOWN_MASK));
        }
        return menuItem;
    }
}
Also used : GraphContextMenuItem(org.gephi.visualization.spi.GraphContextMenuItem) ContextMenuItemManipulator(org.gephi.datalab.spi.ContextMenuItemManipulator) ActionListener(java.awt.event.ActionListener) ActionEvent(java.awt.event.ActionEvent) JMenuItem(javax.swing.JMenuItem) JMenu(javax.swing.JMenu)

Example 2 with GraphContextMenuItem

use of org.gephi.visualization.spi.GraphContextMenuItem in project gephi by gephi.

the class GraphContextMenu method getMenu.

public JPopupMenu getMenu() {
    GraphContextMenuItem[] items = getGraphContextMenuItems();
    final List<NodeModel> selectedNodeModels = engine.getSelectedNodes();
    Node[] selectedNodes = new Node[selectedNodeModels.size()];
    int i = 0;
    for (NodeModel nm : selectedNodeModels) {
        selectedNodes[i++] = nm.getNode();
    }
    final Graph graph = dataBridge.getGraph();
    JPopupMenu contextMenu = new JPopupMenu();
    //Add items ordered:
    Integer lastItemType = null;
    for (GraphContextMenuItem item : items) {
        item.setup(graph, selectedNodes);
        if (lastItemType == null) {
            lastItemType = item.getType();
        }
        if (lastItemType != item.getType()) {
            contextMenu.addSeparator();
        }
        lastItemType = item.getType();
        if (item.isAvailable()) {
            contextMenu.add(createMenuItemFromGraphContextMenuItem(item, graph, selectedNodes));
        }
    }
    return contextMenu;
}
Also used : GraphContextMenuItem(org.gephi.visualization.spi.GraphContextMenuItem) NodeModel(org.gephi.visualization.model.node.NodeModel) Graph(org.gephi.graph.api.Graph) Node(org.gephi.graph.api.Node) JPopupMenu(javax.swing.JPopupMenu)

Example 3 with GraphContextMenuItem

use of org.gephi.visualization.spi.GraphContextMenuItem in project gephi by gephi.

the class CopyOrMoveToWorkspace method getSubItems.

@Override
public ContextMenuItemManipulator[] getSubItems() {
    if (nodes != null) {
        int i = 0;
        ArrayList<GraphContextMenuItem> subItems = new ArrayList<>();
        if (canExecute()) {
            //New workspace
            subItems.add(new CopyOrMoveToWorkspaceSubItem(null, true, 0, 0, isCopy()));
            ProjectController projectController = Lookup.getDefault().lookup(ProjectController.class);
            for (final Workspace w : projectController.getCurrentProject().getLookup().lookup(WorkspaceProvider.class).getWorkspaces()) {
                GraphContextMenuItem item = new CopyOrMoveToWorkspaceSubItem(w, w != projectController.getCurrentWorkspace(), 1, i, isCopy());
                subItems.add(item);
                i++;
            }
            return subItems.toArray(new ContextMenuItemManipulator[0]);
        } else {
            return null;
        }
    } else {
        return null;
    }
}
Also used : GraphContextMenuItem(org.gephi.visualization.spi.GraphContextMenuItem) WorkspaceProvider(org.gephi.project.api.WorkspaceProvider) ArrayList(java.util.ArrayList) ProjectController(org.gephi.project.api.ProjectController) Workspace(org.gephi.project.api.Workspace)

Aggregations

GraphContextMenuItem (org.gephi.visualization.spi.GraphContextMenuItem)3 ActionEvent (java.awt.event.ActionEvent)1 ActionListener (java.awt.event.ActionListener)1 ArrayList (java.util.ArrayList)1 JMenu (javax.swing.JMenu)1 JMenuItem (javax.swing.JMenuItem)1 JPopupMenu (javax.swing.JPopupMenu)1 ContextMenuItemManipulator (org.gephi.datalab.spi.ContextMenuItemManipulator)1 Graph (org.gephi.graph.api.Graph)1 Node (org.gephi.graph.api.Node)1 ProjectController (org.gephi.project.api.ProjectController)1 Workspace (org.gephi.project.api.Workspace)1 WorkspaceProvider (org.gephi.project.api.WorkspaceProvider)1 NodeModel (org.gephi.visualization.model.node.NodeModel)1