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;
}
}
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;
}
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;
}
}
Aggregations