/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.wizards.toolintegration.cpacs; import java.io.File; import java.util.List; import java.util.Map; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import de.rcenvironment.core.component.integration.ToolIntegrationConstants; import de.rcenvironment.core.gui.utils.common.components.PropertyTabGuiHelper; /** * File chooser to choose a file path relative to the tool directory. * * @author Jan Flink */ public class RelativeXMLFilePathChooserButtonListener implements SelectionListener { private Text linkedTextfield; private Shell shell; private Map<String, Object> configurationMap; private String title; public RelativeXMLFilePathChooserButtonListener(String title, Text linkedTextfield, Shell shell, Map<String, Object> configurationMap) { this.title = title; this.linkedTextfield = linkedTextfield; this.shell = shell; this.configurationMap = configurationMap; } @Override @SuppressWarnings("unchecked") public void widgetSelected(SelectionEvent arg0) { List<Map<String, String>> launchConfigs = (List<Map<String, String>>) configurationMap.get(ToolIntegrationConstants.KEY_LAUNCH_SETTINGS); // In case of CPACS tool integration only one launch configuration is allowed String toolDirectory = launchConfigs.iterator().next().get(ToolIntegrationConstants.KEY_TOOL_DIRECTORY); String selectedPath = PropertyTabGuiHelper.selectFileFromFileSystem(shell, new String[] { "*.xml;*.xsl", "*.xml", "*.xsl" }, title, toolDirectory); if (selectedPath != null) { File selectedFile = new File(selectedPath.replace(toolDirectory + File.separator, "")); if (!selectedFile.isAbsolute()) { linkedTextfield.setText(selectedFile.getPath()); } else { MessageDialog.openError(shell, Messages.fileNotRelativeTitle, Messages.fileNotRelativeText); linkedTextfield.setText(""); } } } @Override public void widgetDefaultSelected(SelectionEvent arg0) { widgetSelected(arg0); } /** * Updates the configuration map. * * @param newConfigurationMap The new configuration map. */ public void updateConfiguration(Map<String, Object> newConfigurationMap) { this.configurationMap = newConfigurationMap; } }