/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.gui.wizards.toolintegration.cpacs;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.map.ObjectMapper;
import org.eclipse.jface.dialogs.DialogPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.help.IWorkbenchHelpSystem;
import de.rcenvironment.core.component.integration.ToolIntegrationConstants;
import de.rcenvironment.core.component.integration.cpacs.CpacsToolIntegrationConstants;
import de.rcenvironment.core.datamodel.api.DataType;
import de.rcenvironment.core.gui.wizards.toolintegration.api.ToolIntegrationWizardPage;
import de.rcenvironment.core.utils.common.JsonUtils;
/**
* Wizard page for cpacs specific tool integration configuration.
*
* @author Jan Flink
*/
public class CpacsConfigurationPage extends ToolIntegrationWizardPage {
private static final String HELP_CONTEXT_ID = "de.rcenvironment.core.gui.wizards.toolintegration.cpacs.integration_cpacs";
private static final String EMPTY_STRING = "";
private static final String COLON = ":";
private static final int INDEX_NULL = -1;
protected final Log logger = LogFactory.getLog(getClass());
private Map<String, Object> configurationMap;
private Button alwaysRunCheckbox;
private Button toolSpecificInputCheckbox;
private Label labelIncomingCpacsEndpoint;
private Combo fileEndpointCombo;
private Label labelInputMappingFile;
private Text mappingInputFilename;
private Button mappingInputFileChooser;
private Label labelOutputMappingFile;
private Text mappingOutputFilename;
private Button mappingOutputFileChooser;
private Label labelCpacsResultFilename;
private Text cpacsResultFilename;
private Label labelToolSpecificInput;
private Label labelToolSpecificMapping;
private Text toolSpecificInputdataFilename;
private Text toolSpecificMappingFilename;
private Button toolSpecificInputFileChooser;
private Button toolSpecificMappingFileChooser;
private Label labelToolInputFilename;
private Label labelToolOutputFilename;
private Text toolInputFilename;
private Text toolOutputFilename;
private final List<RelativeXMLFilePathChooserButtonListener> fileChooseListener =
new ArrayList<RelativeXMLFilePathChooserButtonListener>();
private Label labelOutgoingCpacsEndpoint;
private Combo fileOutgoingEndpointCombo;
private boolean pageBuild;
protected CpacsConfigurationPage(String pageName, Map<String, Object> configurationMap) {
super(pageName);
setTitle(pageName);
setDescription(Messages.cpacsPageDescription);
this.configurationMap = configurationMap;
initDynamicEndpointConfiguration();
}
@SuppressWarnings("unchecked")
private void initDynamicEndpointConfiguration() {
if (configurationMap.get(ToolIntegrationConstants.INTEGRATION_TYPE) != null
&& configurationMap.get(ToolIntegrationConstants.INTEGRATION_TYPE).equals(
CpacsToolIntegrationConstants.CPACS_TOOL_INTEGRATION_CONTEXT_TYPE)) {
ObjectMapper mapper = JsonUtils.getDefaultObjectMapper();
try {
Map<String, List<Map<String, Object>>> inputs =
mapper.readValue(getClass().getResource("/resources/inputTemplate.json"),
new HashMap<String, List<Map<String, Object>>>().getClass());
Map<String, List<Map<String, Object>>> outputs =
mapper.readValue(getClass().getResource("/resources/outputTemplate.json"),
new HashMap<String, List<Map<String, Object>>>().getClass());
configurationMap.put("dynamicInputs", inputs.get("dynamicInputs"));
configurationMap.put("dynamicOutputs", outputs.get("dynamicOutputs"));
} catch (IOException e) {
logger.error("Could not read templates for dynamic inputs/outputs. " + e);
}
}
}
// TODO this is a workaround --> implement a general mechanism to set default values in common
// tool integration
private void setDefaultConfigurations() {
if (configurationMap.get(ToolIntegrationConstants.INTEGRATION_TYPE) != null
&& configurationMap.get(ToolIntegrationConstants.INTEGRATION_TYPE).equals(
CpacsToolIntegrationConstants.CPACS_TOOL_INTEGRATION_CONTEXT_TYPE)) {
configurationMap.put(ToolIntegrationConstants.KEY_SET_TOOL_DIR_AS_WORKING_DIR, Boolean.TRUE);
}
}
@Override
public void setConfigMap(Map<String, Object> newConfigurationMap) {
this.configurationMap = newConfigurationMap;
initDynamicEndpointConfiguration();
setDefaultConfigurations();
updateSelectionListeners();
}
private void updateSelectionListeners() {
for (RelativeXMLFilePathChooserButtonListener l : fileChooseListener) {
l.updateConfiguration(configurationMap);
}
}
@Override
public void createControl(Composite parent) {
Composite container = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout(1, false);
layout.marginWidth = 0;
layout.marginHeight = 0;
container.setLayout(layout);
Group mappingsGroup = new Group(container, SWT.NONE);
mappingsGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
Group toolSpecMappingsGroup = new Group(container, SWT.NONE);
toolSpecMappingsGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
Group alwaysRunGroup = new Group(container, SWT.NONE);
alwaysRunGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
GridLayout layout1 = new GridLayout(3, true);
mappingsGroup.setLayout(layout1);
mappingsGroup.setText(Messages.mappingTitle);
GridLayout layout2 = new GridLayout(3, true);
toolSpecMappingsGroup.setLayout(layout2);
toolSpecMappingsGroup.setText(Messages.toolSpecMappingTitle);
GridLayout layout3 = new GridLayout(1, true);
alwaysRunGroup.setLayout(layout3);
alwaysRunGroup.setText(Messages.executionOptionsTitle);
createIncomingCpacsEndpointConfig(mappingsGroup);
new Label(mappingsGroup, SWT.NONE);
createInputMappingConfig(mappingsGroup);
createToolInputConfig(mappingsGroup);
new Label(mappingsGroup, SWT.NONE);
createToolOutputConfig(mappingsGroup);
new Label(mappingsGroup, SWT.NONE);
createToolOutputMappingConfig(mappingsGroup);
createCpacsResultConfig(mappingsGroup);
createOutgoingCpacsEndpointConfig(mappingsGroup);
new Label(mappingsGroup, SWT.NONE);
createToolSpecificInputConfig(toolSpecMappingsGroup);
createAlwaysRunConfig(alwaysRunGroup);
new Label(alwaysRunGroup, SWT.NONE);
new Label(alwaysRunGroup, SWT.NONE);
setControl(container);
PlatformUI.getWorkbench().getHelpSystem().setHelp(this.getControl(),
HELP_CONTEXT_ID);
updatePageComplete();
pageBuild = true;
}
private void createAlwaysRunConfig(Composite container) {
alwaysRunCheckbox = new Button(container, SWT.CHECK);
alwaysRunCheckbox.setText(Messages.alwaysRunCheckbox);
alwaysRunCheckbox.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent arg0) {
configurationMap.put(CpacsToolIntegrationConstants.KEY_ALWAYS_RUN, (!alwaysRunCheckbox.getSelection()));
}
@Override
public void widgetDefaultSelected(SelectionEvent arg0) {
widgetSelected(arg0);
}
});
}
private void enableToolspecific(boolean enable) {
labelToolSpecificInput.setEnabled(enable);
toolSpecificInputdataFilename.setEnabled(enable);
labelToolSpecificMapping.setEnabled(enable);
toolSpecificMappingFilename.setEnabled(enable);
toolSpecificInputFileChooser.setEnabled(enable);
toolSpecificMappingFileChooser.setEnabled(enable);
if (!enable) {
toolSpecificInputdataFilename.setText(EMPTY_STRING);
toolSpecificMappingFilename.setText(EMPTY_STRING);
}
}
private void createToolSpecificInputConfig(Composite container) {
toolSpecificInputCheckbox = new Button(container, SWT.CHECK);
toolSpecificInputCheckbox.setText(Messages.toolSpecificInputCheckbox);
toolSpecificInputCheckbox.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent arg0) {
if (configurationMap.get(ToolIntegrationConstants.INTEGRATION_TYPE).equals(
CpacsToolIntegrationConstants.CPACS_TOOL_INTEGRATION_CONTEXT_TYPE)) {
configurationMap.put(CpacsToolIntegrationConstants.KEY_HAS_TOOLSPECIFIC_INPUT,
(toolSpecificInputCheckbox.getSelection()));
}
enableToolspecific(toolSpecificInputCheckbox.getSelection());
updatePageComplete();
}
@Override
public void widgetDefaultSelected(SelectionEvent arg0) {
widgetSelected(arg0);
}
});
new Label(container, SWT.NONE);
new Label(container, SWT.NONE);
labelToolSpecificInput = new Label(container, SWT.NONE);
labelToolSpecificInput.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
labelToolSpecificInput.setText(Messages.labelToolSpecificInput + COLON);
labelToolSpecificInput.setEnabled(false);
toolSpecificInputdataFilename = new Text(container, SWT.BORDER);
toolSpecificInputdataFilename.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1));
toolSpecificInputdataFilename.setEnabled(false);
toolSpecificInputdataFilename.addModifyListener(new TextAreaModifyListener(
CpacsToolIntegrationConstants.KEY_TOOLSPECIFICINPUTDATA_FILENAME));
toolSpecificInputFileChooser = new Button(container, SWT.NONE);
toolSpecificInputFileChooser.setText(Messages.fileChooser);
RelativeXMLFilePathChooserButtonListener toolSpecificInputFileChooserListener =
new RelativeXMLFilePathChooserButtonListener(Messages.labelToolInputFilename,
toolSpecificInputdataFilename,
getShell(), configurationMap);
toolSpecificInputFileChooser.addSelectionListener(toolSpecificInputFileChooserListener);
fileChooseListener.add(toolSpecificInputFileChooserListener);
toolSpecificInputFileChooser.setEnabled(false);
labelToolSpecificMapping = new Label(container, SWT.NONE);
labelToolSpecificMapping.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
labelToolSpecificMapping.setText(Messages.labelToolSpecificMapping + COLON);
labelToolSpecificMapping.setEnabled(false);
toolSpecificMappingFilename = new Text(container, SWT.BORDER);
toolSpecificMappingFilename.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
toolSpecificMappingFilename.setEnabled(false);
toolSpecificMappingFilename.addModifyListener(new TextAreaModifyListener(
CpacsToolIntegrationConstants.KEY_TOOLSPECIFICMAPPING_FILENAME));
toolSpecificMappingFileChooser = new Button(container, SWT.NONE);
toolSpecificMappingFileChooser.setText(Messages.fileChooser);
RelativeXMLFilePathChooserButtonListener toolSpecificMappingFileChooserListener =
new RelativeXMLFilePathChooserButtonListener(Messages.labelToolSpecificMapping,
toolSpecificMappingFilename,
getShell(), configurationMap);
toolSpecificMappingFileChooser.addSelectionListener(toolSpecificMappingFileChooserListener);
fileChooseListener.add(toolSpecificMappingFileChooserListener);
toolSpecificMappingFileChooser.setEnabled(false);
}
private void createCpacsResultConfig(Composite container) {
labelCpacsResultFilename = new Label(container, SWT.NONE);
labelCpacsResultFilename.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
labelCpacsResultFilename.setText(Messages.labelCpacsResultFilename + COLON);
cpacsResultFilename = new Text(container, SWT.BORDER);
cpacsResultFilename.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
cpacsResultFilename.addModifyListener(new TextAreaModifyListener(CpacsToolIntegrationConstants.KEY_CPACS_RESULT_FILENAME));
new Label(container, SWT.NONE);
}
private void createToolOutputMappingConfig(Composite container) {
labelOutputMappingFile = new Label(container, SWT.NONE);
labelOutputMappingFile.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
labelOutputMappingFile.setText(Messages.labelOutputMappingFile + COLON);
mappingOutputFilename = new Text(container, SWT.BORDER);
mappingOutputFilename.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
mappingOutputFilename.addModifyListener(new TextAreaModifyListener(CpacsToolIntegrationConstants.KEY_MAPPING_OUTPUT_FILENAME));
mappingOutputFileChooser = new Button(container, SWT.NONE);
mappingOutputFileChooser.setText(Messages.fileChooser);
RelativeXMLFilePathChooserButtonListener mappingOutputFileChooserListener =
new RelativeXMLFilePathChooserButtonListener(Messages.labelOutputMappingFile,
mappingOutputFilename, getShell(),
configurationMap);
mappingOutputFileChooser.addSelectionListener(mappingOutputFileChooserListener);
fileChooseListener.add(mappingOutputFileChooserListener);
}
private void createToolOutputConfig(Composite container) {
labelToolOutputFilename = new Label(container, SWT.NONE);
labelToolOutputFilename.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
labelToolOutputFilename.setText(Messages.labelToolOutputFilename + COLON);
toolOutputFilename = new Text(container, SWT.BORDER);
toolOutputFilename.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
toolOutputFilename.addModifyListener(new TextAreaModifyListener(CpacsToolIntegrationConstants.KEY_TOOL_OUTPUT_FILENAME));
}
private void createToolInputConfig(Composite container) {
labelToolInputFilename = new Label(container, SWT.NONE);
labelToolInputFilename.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
labelToolInputFilename.setText(Messages.labelToolInputFilename + COLON);
toolInputFilename = new Text(container, SWT.BORDER);
toolInputFilename.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
toolInputFilename.addModifyListener(new TextAreaModifyListener(CpacsToolIntegrationConstants.KEY_TOOL_INPUT_FILENAME));
}
private void createInputMappingConfig(Composite container) {
labelInputMappingFile = new Label(container, SWT.NONE);
labelInputMappingFile.setText(Messages.labelInputMappingFile + COLON);
labelInputMappingFile.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
mappingInputFilename = new Text(container, SWT.BORDER);
mappingInputFilename.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
mappingInputFilename.addModifyListener(new TextAreaModifyListener(CpacsToolIntegrationConstants.KEY_MAPPING_INPUT_FILENAME));
mappingInputFileChooser = new Button(container, SWT.NONE);
mappingInputFileChooser.setText(Messages.fileChooser);
RelativeXMLFilePathChooserButtonListener mappingInputFileChooserListener =
new RelativeXMLFilePathChooserButtonListener(Messages.labelInputMappingFile,
mappingInputFilename, getShell(),
configurationMap);
mappingInputFileChooser.addSelectionListener(mappingInputFileChooserListener);
fileChooseListener.add(mappingInputFileChooserListener);
}
private void createIncomingCpacsEndpointConfig(Composite container) {
labelIncomingCpacsEndpoint = new Label(container, SWT.NONE);
labelIncomingCpacsEndpoint.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
labelIncomingCpacsEndpoint.setText(Messages.labelIncomingCpacsEndpoint + COLON);
fileEndpointCombo = new Combo(container, SWT.READ_ONLY);
fileEndpointCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
fileEndpointCombo.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
configurationMap.put(CpacsToolIntegrationConstants.KEY_CPACS_INITIAL_ENDPOINTNAME,
fileEndpointCombo.getItem(fileEndpointCombo.getSelectionIndex()));
updatePageComplete();
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
widgetSelected(e);
}
});
}
private void createOutgoingCpacsEndpointConfig(Composite container) {
labelOutgoingCpacsEndpoint = new Label(container, SWT.NONE);
labelOutgoingCpacsEndpoint.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
labelOutgoingCpacsEndpoint.setText(Messages.labelOutgoingCpacsEndpoint + COLON);
fileOutgoingEndpointCombo = new Combo(container, SWT.READ_ONLY);
fileOutgoingEndpointCombo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
fileOutgoingEndpointCombo.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
configurationMap.put(CpacsToolIntegrationConstants.KEY_CPACS_OUTGOING_ENDPOINTNAME,
fileOutgoingEndpointCombo.getItem(fileOutgoingEndpointCombo.getSelectionIndex()));
updatePageComplete();
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
widgetSelected(e);
}
});
}
@Override
public void updatePage() {
if (getControl() != null && pageBuild
&& configurationMap.get(ToolIntegrationConstants.INTEGRATION_TYPE) != null
&& configurationMap.get(ToolIntegrationConstants.INTEGRATION_TYPE).equals(
CpacsToolIntegrationConstants.CPACS_TOOL_INTEGRATION_CONTEXT_TYPE)) {
updateComboBoxes(fileEndpointCombo, ToolIntegrationConstants.KEY_ENDPOINT_INPUTS);
updateComboBoxes(fileOutgoingEndpointCombo, ToolIntegrationConstants.KEY_ENDPOINT_OUTPUTS);
if (fileEndpointCombo.getSelectionIndex() < 0
&& configurationMap.get(CpacsToolIntegrationConstants.KEY_CPACS_INITIAL_ENDPOINTNAME) != null
&& configurationMap.get(CpacsToolIntegrationConstants.KEY_CPACS_INITIAL_ENDPOINTNAME) != EMPTY_STRING) {
configurationMap.put(CpacsToolIntegrationConstants.KEY_CPACS_INITIAL_ENDPOINTNAME, EMPTY_STRING);
}
if ((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_MAPPING_INPUT_FILENAME) != null) {
mappingInputFilename.setText((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_MAPPING_INPUT_FILENAME));
} else {
mappingInputFilename.setText(EMPTY_STRING);
}
if ((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_TOOL_INPUT_FILENAME) != null) {
toolInputFilename.setText((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_TOOL_INPUT_FILENAME));
} else {
toolInputFilename.setText(EMPTY_STRING);
}
if ((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_TOOL_OUTPUT_FILENAME) != null) {
toolOutputFilename.setText((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_TOOL_OUTPUT_FILENAME));
} else {
toolOutputFilename.setText(EMPTY_STRING);
}
if ((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_MAPPING_OUTPUT_FILENAME) != null) {
mappingOutputFilename.setText((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_MAPPING_OUTPUT_FILENAME));
} else {
mappingOutputFilename.setText(EMPTY_STRING);
}
if ((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_CPACS_RESULT_FILENAME) != null) {
cpacsResultFilename.setText((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_CPACS_RESULT_FILENAME));
} else {
cpacsResultFilename.setText(EMPTY_STRING);
}
if ((Boolean) configurationMap.get(CpacsToolIntegrationConstants.KEY_HAS_TOOLSPECIFIC_INPUT) == null) {
if (configurationMap.get(ToolIntegrationConstants.INTEGRATION_TYPE).equals(
CpacsToolIntegrationConstants.CPACS_TOOL_INTEGRATION_CONTEXT_TYPE)) {
configurationMap.put(CpacsToolIntegrationConstants.KEY_HAS_TOOLSPECIFIC_INPUT, false);
}
}
if ((Boolean) configurationMap.get(CpacsToolIntegrationConstants.KEY_HAS_TOOLSPECIFIC_INPUT) != null) {
toolSpecificInputCheckbox.setSelection((Boolean) configurationMap
.get(CpacsToolIntegrationConstants.KEY_HAS_TOOLSPECIFIC_INPUT));
}
enableToolspecific(toolSpecificInputCheckbox.getSelection());
if ((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_TOOLSPECIFICINPUTDATA_FILENAME) != null) {
toolSpecificInputdataFilename.setText((String) configurationMap
.get(CpacsToolIntegrationConstants.KEY_TOOLSPECIFICINPUTDATA_FILENAME));
} else {
toolSpecificInputdataFilename.setText(EMPTY_STRING);
}
if ((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_TOOLSPECIFICMAPPING_FILENAME) != null) {
toolSpecificMappingFilename.setText((String) configurationMap
.get(CpacsToolIntegrationConstants.KEY_TOOLSPECIFICMAPPING_FILENAME));
} else {
toolSpecificMappingFilename.setText(EMPTY_STRING);
}
if ((Boolean) configurationMap.get(CpacsToolIntegrationConstants.KEY_ALWAYS_RUN) == null) {
configurationMap.put(CpacsToolIntegrationConstants.KEY_ALWAYS_RUN, true);
}
alwaysRunCheckbox.setSelection(!(Boolean) configurationMap.get(CpacsToolIntegrationConstants.KEY_ALWAYS_RUN));
updatePageComplete();
}
}
private void updateComboBoxes(Combo combo, String direction) {
String type;
if (direction.equals(ToolIntegrationConstants.KEY_ENDPOINT_OUTPUTS)) {
type = CpacsToolIntegrationConstants.KEY_CPACS_OUTGOING_ENDPOINTNAME;
} else {
type = CpacsToolIntegrationConstants.KEY_CPACS_INITIAL_ENDPOINTNAME;
}
addAllFileEndpoints(combo, direction, type);
if (combo.getItemCount() > 0 && combo.getSelectionIndex() >= 0 && ((String) configurationMap.get(type) == null
|| ((String) configurationMap.get(type)).equals(EMPTY_STRING))) {
configurationMap.put(type,
combo.getItem(combo.getSelectionIndex()));
}
String cpacsEndpoint = (String) configurationMap.get(type);
if (cpacsEndpoint != null && combo.indexOf(cpacsEndpoint) != INDEX_NULL) {
combo.select(combo.indexOf(cpacsEndpoint));
} else if (cpacsEndpoint != null && combo.indexOf(cpacsEndpoint) == INDEX_NULL) {
configurationMap.put(type, EMPTY_STRING);
}
}
private void addAllFileEndpoints(Combo combo, String direction, String type) {
combo.removeAll();
@SuppressWarnings("unchecked") List<Map<String, String>> endpointList =
(List<Map<String, String>>) configurationMap.get(direction);
if (endpointList != null) {
for (Map<String, String> endpoint : endpointList) {
// add only if data type equals {@link DataType.FileReference}
if (DataType.valueOf(endpoint.get(ToolIntegrationConstants.KEY_ENDPOINT_DATA_TYPE)) == DataType.FileReference) {
combo.add(endpoint.get(ToolIntegrationConstants.KEY_ENDPOINT_NAME));
}
}
if (combo.getItemCount() > 0 && configurationMap.get(type) == null) {
combo.select(0);
}
}
}
private void updatePageComplete() {
boolean configsNotNull = (Boolean) configurationMap.get(CpacsToolIntegrationConstants.KEY_HAS_TOOLSPECIFIC_INPUT) != null
&& (Boolean) configurationMap.get(CpacsToolIntegrationConstants.KEY_ALWAYS_RUN) != null
&& (String) configurationMap.get(CpacsToolIntegrationConstants.KEY_TOOLSPECIFICMAPPING_FILENAME) != null
&& (String) configurationMap.get(CpacsToolIntegrationConstants.KEY_TOOLSPECIFICINPUTDATA_FILENAME) != null
&& (String) configurationMap.get(CpacsToolIntegrationConstants.KEY_MAPPING_INPUT_FILENAME) != null
&& (String) configurationMap.get(CpacsToolIntegrationConstants.KEY_TOOL_INPUT_FILENAME) != null
&& (String) configurationMap.get(CpacsToolIntegrationConstants.KEY_TOOL_OUTPUT_FILENAME) != null
&& (String) configurationMap.get(CpacsToolIntegrationConstants.KEY_MAPPING_OUTPUT_FILENAME) != null
&& (String) configurationMap.get(CpacsToolIntegrationConstants.KEY_CPACS_RESULT_FILENAME) != null
&& (String) configurationMap.get(CpacsToolIntegrationConstants.KEY_CPACS_INITIAL_ENDPOINTNAME) != null
&& (String) configurationMap.get(CpacsToolIntegrationConstants.KEY_CPACS_OUTGOING_ENDPOINTNAME) != null;
boolean generalConfigNotEmpty = configsNotNull
&& !((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_CPACS_INITIAL_ENDPOINTNAME)).equals(EMPTY_STRING)
&& !((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_CPACS_OUTGOING_ENDPOINTNAME)).equals(EMPTY_STRING)
&& !((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_MAPPING_INPUT_FILENAME)).equals(EMPTY_STRING)
&& !((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_TOOL_INPUT_FILENAME)).equals(EMPTY_STRING)
&& !((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_TOOL_OUTPUT_FILENAME)).equals(EMPTY_STRING)
&& !((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_MAPPING_OUTPUT_FILENAME)).equals(EMPTY_STRING)
&& !((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_CPACS_RESULT_FILENAME)).equals(EMPTY_STRING);
boolean toolSpecificInputConfigNotEmpty = configsNotNull
&& (!(Boolean) configurationMap.get(CpacsToolIntegrationConstants.KEY_HAS_TOOLSPECIFIC_INPUT)
|| (!((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_TOOLSPECIFICMAPPING_FILENAME)).equals(EMPTY_STRING))
&& !((String) configurationMap.get(CpacsToolIntegrationConstants.KEY_TOOLSPECIFICINPUTDATA_FILENAME))
.equals(EMPTY_STRING));
if (fileEndpointCombo.getItemCount() == 0) {
setMessage(Messages.errorNoInput, DialogPage.ERROR);
} else {
setMessage(null, DialogPage.NONE);
}
if (fileOutgoingEndpointCombo.getItemCount() == 0 && getMessage() == null) {
setMessage(Messages.errorNoOutput, DialogPage.ERROR);
}
if (generalConfigNotEmpty && toolSpecificInputConfigNotEmpty) {
setPageComplete(true);
setMessage(null, DialogPage.NONE);
} else {
setPageComplete(false);
if (getMessage() == null) {
setMessage(Messages.configurationValueMissing, DialogPage.ERROR);
}
}
}
@Override
protected boolean isCurrentPage() {
return super.isCurrentPage();
}
/**
* Listener for the script text areas for saving the content to the correct key.
*
* @author Jan Flink
*/
private class TextAreaModifyListener implements ModifyListener {
private final String key;
TextAreaModifyListener(String key) {
this.key = key;
}
@Override
public void modifyText(ModifyEvent arg0) {
if (configurationMap != null && configurationMap.get(ToolIntegrationConstants.INTEGRATION_TYPE) != null
&& configurationMap.get(ToolIntegrationConstants.INTEGRATION_TYPE).equals(
CpacsToolIntegrationConstants.CPACS_TOOL_INTEGRATION_CONTEXT_TYPE)) {
configurationMap.put(key, ((Text) arg0.getSource()).getText());
}
updatePageComplete();
}
}
@Override
public void performHelp() {
super.performHelp();
IWorkbenchHelpSystem helpSystem = PlatformUI.getWorkbench().getHelpSystem();
helpSystem.displayHelp(HELP_CONTEXT_ID);
}
}