private void enableActionsNow() { boolean[] currentStates = new boolean[ConditionalAction.NUMBER_OF_CONDITIONS]; Operator op = getFirstSelectedOperator(); if (op != null) { currentStates[ConditionalAction.OPERATOR_SELECTED] = true; if (op instanceof OperatorChain) { currentStates[ConditionalAction.OPERATOR_CHAIN_SELECTED] = true; } if (op.getParent() == null) { currentStates[ConditionalAction.ROOT_SELECTED] = true; } else { currentStates[ConditionalAction.PARENT_ENABLED] = op.getParent().isEnabled(); if (op.getExecutionUnit().getNumberOfOperators() > 1) { currentStates[ConditionalAction.SIBLINGS_EXIST] = true; } } } int processState = process.getProcessState(); currentStates[ConditionalAction.PROCESS_STOPPED] = processState == Process.PROCESS_STATE_STOPPED; currentStates[ConditionalAction.PROCESS_PAUSED] = processState == Process.PROCESS_STATE_PAUSED; currentStates[ConditionalAction.PROCESS_RUNNING] = processState == Process.PROCESS_STATE_RUNNING; currentStates[ConditionalAction.EDIT_IN_PROGRESS] = EditBlockingProgressThread.isEditing(); currentStates[ConditionalAction.PROCESS_SAVED] = process.hasSaveDestination(); currentStates[ConditionalAction.PROCESS_RENDERER_IS_VISIBLE] = mainFrame.getProcessPanel().getProcessRenderer().isShowing(); currentStates[ConditionalAction.PROCESS_RENDERER_HAS_UNDO_STEPS] = mainFrame.hasUndoSteps(); currentStates[ConditionalAction.PROCESS_RENDERER_HAS_REDO_STEPS] = mainFrame.hasRedoSteps(); ConditionalAction.updateAll(currentStates); updateCheckboxStates(); }
/** The currently selected operator will be deleted. */ public void delete() { Operator parent = null; for (Operator selectedOperator : new LinkedList<Operator>(getSelectedOperators())) { if (parent == null) { parent = selectedOperator.getParent(); } if (selectedOperator instanceof ProcessRootOperator) { return; } selectedOperator.remove(); } mainFrame.selectOperator(parent); }
/** Creates a new popup menu for the selected operator. */ public void addToOperatorPopupMenu( JPopupMenu menu, Action renameAction, Action... furtherActions) { final Operator op = getFirstSelectedOperator(); final boolean singleSelection = getSelectedOperators().size() == 1; if (op != null && !singleSelection) { if (!(op instanceof ProcessRootOperator) && op.getParent() != null) { // enable / disable operator menu.add(TOGGLE_ACTIVATION_ITEM.createMultipleActivationItem()); } } if (op != null && singleSelection) { if (mainFrame.getProcessPanel().getProcessRenderer().getModel().getDisplayedChain() != op) { menu.add(INFO_OPERATOR_ACTION); menu.add(TOGGLE_ACTIVATION_ITEM.createMenuItem()); if (renameAction != null) { menu.add(renameAction); } else { menu.add(RENAME_OPERATOR_ACTION); } menu.addSeparator(); if (op instanceof OperatorChain && ((OperatorChain) op).getAllInnerOperators().size() > 0) { menu.add(OperatorMenu.REPLACE_OPERATORCHAIN_MENU); } else { menu.add(OperatorMenu.REPLACE_OPERATOR_MENU); } } } // add new operator and building block menu if (mainFrame.getProcessPanel().getProcessRenderer().getModel().getDisplayedChain() == op) { menu.add(OperatorMenu.NEW_OPERATOR_MENU); } // populate menu with registered operator actions (if any) synchronized (factories) { for (OperatorActionFactory factory : factories) { List<ResourceEntry> entries = factory.create(context); if (!entries.isEmpty()) { menu.addSeparator(); } for (ResourceEntry entry : entries) { if (entry.isMenu()) { menu.add(entry.getMenu()); } else { menu.add(entry.getAction()); } } } } menu.addSeparator(); boolean enableCutCopy = mainFrame.getProcessPanel().getProcessRenderer().getModel().getDisplayedChain() != op; OperatorTransferHandler.installMenuItems(menu, enableCutCopy); // add further actions here if (furtherActions.length > 0) { menu.addSeparator(); for (Action a : furtherActions) { if (a == null) { continue; } if (a instanceof ToggleAction) { menu.add(((ToggleAction) a).createMenuItem()); } else { menu.add(a); } } } if (op != null && !(op instanceof ProcessRootOperator) && singleSelection) { menu.addSeparator(); for (int i = 0; i < TOGGLE_BREAKPOINT.length; i++) { JMenuItem item = TOGGLE_BREAKPOINT[i].createMenuItem(); menu.add(item); } } }