/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.workflow.editor.properties; import java.util.HashMap; import java.util.List; import java.util.Map; import de.rcenvironment.core.component.model.endpoint.api.EndpointDescription; import de.rcenvironment.core.datamodel.api.DataType; import de.rcenvironment.core.datamodel.api.EndpointType; import de.rcenvironment.core.gui.workflow.editor.commands.endpoint.AddDynamicInputWithOutputsCommand; import de.rcenvironment.core.gui.workflow.editor.commands.endpoint.EditDynamicInputWithOutputsCommand; import de.rcenvironment.core.gui.workflow.editor.commands.endpoint.RemoveDynamicInputWithOutputsCommand; /** * Input pane for endpoints that add two outputs next to a requested input. * * @author Doreen Seider */ public class InputCoupledWithOutputsSelectionPane extends ForwardingEndpointSelectionPane { private final String dynEndpointId; private final String addDynOutputId; private final String outputNameSuffix; private final Refreshable outputPane; private Map<String, String> metaDataInput = new HashMap<>(); private Map<String, String> metaDataOutput = new HashMap<>(); private Map<String, String> metaDataOutputWithSuffix = new HashMap<>(); public InputCoupledWithOutputsSelectionPane(String title, String dynEndpointId, String addDynOutputId, String outputNameSuffix, WorkflowNodeCommand.Executor executor, Refreshable outputPane) { super(title, EndpointType.INPUT, dynEndpointId, new String[] {}, executor); this.dynEndpointId = dynEndpointId; this.addDynOutputId = addDynOutputId; this.outputNameSuffix = outputNameSuffix; this.outputPane = outputPane; } @Override protected void executeAddCommand(String name, DataType type, Map<String, String> metaData) { metaDataInput.putAll(metaData); WorkflowNodeCommand command = new AddDynamicInputWithOutputsCommand(dynEndpointId, addDynOutputId, outputNameSuffix, name, type, metaDataInput, this, outputPane); ((AddDynamicInputWithOutputsCommand) command).setMetaDataOutput(metaDataOutput); ((AddDynamicInputWithOutputsCommand) command).setMetaDataOutputWithSuffix(metaDataOutputWithSuffix); execute(command); } @Override protected void executeEditCommand(EndpointDescription oldDescription, EndpointDescription newDescription) { WorkflowNodeCommand command = new EditDynamicInputWithOutputsCommand(oldDescription, newDescription, outputNameSuffix, this, outputPane); ((EditDynamicInputWithOutputsCommand) command).setMetaDataOutput(metaDataOutput); ((EditDynamicInputWithOutputsCommand) command).setMetaDataOutputWithSuffix(metaDataOutputWithSuffix); execute(command); } @Override protected void executeRemoveCommand(List<String> names) { final WorkflowNodeCommand command = new RemoveDynamicInputWithOutputsCommand(dynEndpointId, addDynOutputId, outputNameSuffix, names, this, outputPane); execute(command); } @Override public void setMetaDataInput(Map<String, String> metaDataInput) { this.metaDataInput = metaDataInput; } public void setMetaDataOutput(Map<String, String> metaDataOutput) { this.metaDataOutput = metaDataOutput; } public void setMetaDataOutputWithSuffix(Map<String, String> metaDataOutputWithSuffix) { this.metaDataOutputWithSuffix = metaDataOutputWithSuffix; } }