/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.workflow.editor.commands; import java.util.List; import org.eclipse.gef.commands.Command; import org.eclipse.gef.editpolicies.ConnectionEditPolicy; import org.eclipse.gef.requests.GroupRequest; import de.rcenvironment.core.component.workflow.model.api.Connection; import de.rcenvironment.core.component.workflow.model.api.WorkflowDescription; import de.rcenvironment.core.component.workflow.model.api.WorkflowNode; import de.rcenvironment.core.gui.workflow.ConnectionUtils; import de.rcenvironment.core.gui.workflow.parts.ConnectionWrapper; /** * ConnectionEditPolicy required to delete connections from the graphical workflow editor. * * @author Oliver Seebach */ public class ConnectionDeletionPolicy extends ConnectionEditPolicy { @Override protected Command getDeleteCommand(GroupRequest groupRequest) { Object parent = getHost().getParent().getViewer().getContents().getModel(); WorkflowDescription description = null; if (parent instanceof WorkflowDescription) { description = (WorkflowDescription) parent; } ConnectionDeleteCommand command = new ConnectionDeleteCommand(); // set description command.setOriginalModel(description); // find and set connection(s) ConnectionWrapper connectionWrapper = null; WorkflowNode sourceNode = null; WorkflowNode targetNode = null; if (getHost().getModel() instanceof ConnectionWrapper) { connectionWrapper = (ConnectionWrapper) getHost().getModel(); sourceNode = connectionWrapper.getSource(); targetNode = connectionWrapper.getTarget(); } List<Connection> connections = ConnectionUtils.getConnectionsBetweenNodes(sourceNode, targetNode, description); for (Connection connection : connections){ command.addConnectionForDeletion(connection); } return command; } }