/* * 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.apache.commons.collections4.CollectionUtils; 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.editor.commands.ConnectionEditCommand; import de.rcenvironment.core.gui.workflow.editor.connections.ConnectionDialogController; /** * Opens the connection editor. * * @author Doreen Seider * @author Oliver Seebach * */ public class OpenConnectionEditorHandler extends AbstractWorkflowNodeEditHandler { private WorkflowNode source = null; private WorkflowNode target = null; public OpenConnectionEditorHandler(WorkflowNode source, WorkflowNode target) { this.source = source; this.target = target; } @Override void edit() { WorkflowDescription model = (WorkflowDescription) viewer.getContents().getModel(); WorkflowDescription modelClone = model.clone(); // within dialog, work on a clone of model ConnectionDialogController dialogControler = new ConnectionDialogController(modelClone, source, target, true); // 0=ok; 1=cancel if (dialogControler.open() == 0) { List<Connection> originalConnections = model.getConnections(); List<Connection> modifiedConnections = dialogControler.getWorkflowDescription().getConnections(); if (!CollectionUtils.isEqualCollection(originalConnections, modifiedConnections)){ ConnectionEditCommand command = new ConnectionEditCommand(model, dialogControler.getWorkflowDescription()); commandStack.execute(command); } } } }