/*
* 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);
}
}
}
}