/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.workflow.view.properties; import java.util.HashMap; import java.util.Map; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.widgets.TreeItem; import org.eclipse.ui.IWorkbenchPart; import de.rcenvironment.core.component.execution.api.ComponentExecutionInformation; import de.rcenvironment.core.component.workflow.execution.api.WorkflowExecutionInformation; import de.rcenvironment.core.component.workflow.model.api.WorkflowNode; import de.rcenvironment.core.gui.workflow.parts.WorkflowExecutionInformationPart; /** * Property section for displaying and editing inputs. * * @author Doreen Seider */ public class InputSection extends AbstractInputSection { private static InputSection instance; private Map<String, String> componentNameToIdMapping; public InputSection() { super(); instance = this; } public static InputSection getInstance() { return instance; } @Override protected void retrieveWorkflowInformation(IWorkbenchPart part, ISelection selection) { final Object firstSelectionElement = ((IStructuredSelection) selection).getFirstElement(); wfExeInfo = (WorkflowExecutionInformation) ((WorkflowExecutionInformationPart) firstSelectionElement).getModel(); componentNameToIdMapping = new HashMap<String, String>(); for (WorkflowNode workflowNode : wfExeInfo.getWorkflowDescription().getWorkflowNodes()) { ComponentExecutionInformation componentExecutionInformation = wfExeInfo.getComponentExecutionInformation(workflowNode.getIdentifier()); componentNameToIdMapping.put(componentExecutionInformation.getInstanceName(), componentExecutionInformation.getExecutionIdentifier()); } } @Override protected void initializeTreeViewer(IWorkbenchPart part, ISelection selection) { inputTreeViewer.setLabelProvider(new EditableInputLabelProvider(wfExeInfo)); inputTreeViewer.setInput(wfExeInfo.getWorkflowDescription()); } @Override protected void openInputDialog(TreeItem item) { TreeItem childItem = item; while (item.getParentItem() != null) { item = item.getParentItem(); } String componentId = componentNameToIdMapping.get(item.getText()); new InputQueueDialogController(wfExeInfo, componentId, childItem.getText()).open(); } }