use of org.knime.workbench.editor2.commands.VerifyingCompoundCommand in project knime-core by knime.
the class NodeConnectionContainerDeleteAction method createDeleteCommand.
/**
* Create one command to remove the selected objects.
*
* @param objects The objects to be deleted.
* @return The command to remove the selected objects.
*/
@Override
public Command createDeleteCommand(final List objects) {
if (objects.isEmpty()) {
return null;
}
if (!(objects.get(0) instanceof EditPart)) {
return null;
}
VerifyingCompoundCommand compoundCmd = new VerifyingCompoundCommand(GEFMessages.DeleteAction_ActionDeleteCommandName);
// will contain nodes -- just used for marking
NodeContainerEditPart[] nodeParts = AbstractNodeAction.filterObjects(NodeContainerEditPart.class, objects);
Optional<WorkflowManager> manager = ((WorkflowEditor) getWorkbenchPart()).getWorkflowManager();
if (manager.isPresent()) {
DeleteCommand cmd = new DeleteCommand(objects, manager.get());
int nodeCount = cmd.getNodeCount();
int connCount = cmd.getConnectionCount();
int annoCount = cmd.getAnnotationCount();
StringBuilder dialogText = new StringBuilder("Do you really want to delete ");
if (nodeCount > 0) {
dialogText.append(nodeCount).append(" node");
dialogText.append(nodeCount > 1 ? "s" : "");
if (annoCount > 0 && connCount > 0) {
dialogText.append(" , ");
} else if (annoCount > 0 || connCount > 0) {
dialogText.append(" and ");
}
}
if (connCount > 0) {
dialogText.append(connCount).append(" connection");
dialogText.append(connCount > 1 ? "s" : "");
dialogText.append(annoCount > 0 ? " and " : "");
}
if (annoCount > 0) {
dialogText.append(annoCount).append(" annotation");
dialogText.append(annoCount > 1 ? "s" : "");
}
dialogText.append("?");
compoundCmd.setDialogDisplayText(dialogText.toString());
// set the parts into the compound command (for unmarking after cancel)
compoundCmd.setNodeParts(Arrays.asList(nodeParts));
compoundCmd.add(cmd);
}
return compoundCmd;
}
Aggregations