/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.components.switchcmp.gui; import de.rcenvironment.components.switchcmp.common.SwitchComponentConstants; import de.rcenvironment.core.component.model.endpoint.api.EndpointDescription; import de.rcenvironment.core.component.workflow.model.api.WorkflowNode; import de.rcenvironment.core.datamodel.api.EndpointType; import de.rcenvironment.core.gui.workflow.editor.commands.endpoint.EditDynamicEndpointCommand; import de.rcenvironment.core.gui.workflow.editor.properties.EndpointSelectionPane; import de.rcenvironment.core.gui.workflow.editor.properties.Refreshable; import de.rcenvironment.core.gui.workflow.editor.properties.WorkflowNodeCommand; import de.rcenvironment.core.gui.workflow.editor.properties.WorkflowNodeCommand.Executor; /** * Pane for static input which is meant to switch. * * @author David Scholz */ public class SwitchDataInputSelectionPane extends EndpointSelectionPane { private EndpointSelectionPane[] panes; public SwitchDataInputSelectionPane(Executor executor) { super(Messages.dataInputString, EndpointType.INPUT, null, new String[] {}, new String[] { SwitchComponentConstants.DATA_INPUT_NAME }, executor); } @Override protected void executeEditCommand(EndpointDescription oldDescription, EndpointDescription newDescription) { super.executeEditCommand(oldDescription, newDescription); WorkflowNodeCommand command = new SwitchEditDynamicEndpointCommand(endpointType, newDescription, newDescription, panes); execute(command); } /** * * Changes enpoints if edited. * * @author David Scholz */ private class SwitchEditDynamicEndpointCommand extends EditDynamicEndpointCommand { SwitchEditDynamicEndpointCommand(EndpointType direction, EndpointDescription oldDescription, EndpointDescription newDescription, Refreshable[] refreshable) { super(direction, oldDescription, newDescription, refreshable); } @Override public void execute() { final WorkflowNode workflowNode = getWorkflowNode(); super.execute(); for (EndpointDescription outputDesc : workflowNode.getOutputDescriptionsManager().getStaticEndpointDescriptions()) { workflowNode.getOutputDescriptionsManager().editStaticEndpointDescription(outputDesc.getName(), newDesc.getDataType(), newDesc.getMetaData()); } // refresh all pains if endpoints were changed if (refreshable != null) { for (Refreshable r : refreshable) { r.refresh(); } } } } public void setAllPanes(EndpointSelectionPane[] allPanes) { this.panes = allPanes; } }