/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.gui.workflow.editor.handlers;
import java.util.List;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.commands.CommandStack;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;
import de.rcenvironment.core.component.workflow.model.api.WorkflowDescription;
import de.rcenvironment.core.gui.workflow.ConnectionUtils;
import de.rcenvironment.core.gui.workflow.editor.WorkflowEditor;
import de.rcenvironment.core.gui.workflow.editor.commands.BendpointDeleteAllCommand;
import de.rcenvironment.core.gui.workflow.parts.ConnectionPart;
import de.rcenvironment.core.gui.workflow.parts.ConnectionWrapper;
/**
* Handler to delete bendpoints from a connection.
*
* @author Oliver Seebach
*
*/
public class ConnectionBendpointDeleteHandler extends AbstractHandler {
protected GraphicalViewer viewer;
protected CommandStack commandStack;
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
final IWorkbenchPart activePart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart();
if (activePart instanceof WorkflowEditor) {
WorkflowEditor editor = (WorkflowEditor) activePart;
viewer = editor.getViewer();
commandStack = (CommandStack) editor.getAdapter(CommandStack.class);
}
WorkflowDescription model = (WorkflowDescription) viewer.getContents().getModel();
ConnectionWrapper connectionWrapper = null;
@SuppressWarnings("rawtypes") List selections = viewer.getSelectedEditParts();
for (Object element : selections) {
if (element instanceof ConnectionPart) {
ConnectionPart part = (ConnectionPart) element;
connectionWrapper = (ConnectionWrapper) part.getModel();
BendpointDeleteAllCommand bendpointDeleteCommand = new BendpointDeleteAllCommand();
bendpointDeleteCommand.setConnections(ConnectionUtils.getConnectionsBetweenNodes(
connectionWrapper.getSource(), connectionWrapper.getTarget(), model));
bendpointDeleteCommand.setReferencedModel(connectionWrapper);
bendpointDeleteCommand.setWorkflowDescription(model);
commandStack.execute(bendpointDeleteCommand);
break;
}
}
return null;
}
}