blob: f06d79297f2ab291164fc3cea21c58c814d84412 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 The University of York.
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* Louis Rose - initial API and implementation
******************************************************************************/
package org.eclipse.epsilon.emc.csv.dt;
import org.eclipse.epsilon.common.dt.launching.dialogs.AbstractCachedModelConfigurationDialog;
import org.eclipse.epsilon.common.dt.util.DialogUtil;
import org.eclipse.epsilon.emc.csv.CsvModel;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
public class CsvModelConfigurationDialogue extends AbstractCachedModelConfigurationDialog {
private Text fileText;
private Text fieldSeparatorText;
private Text quoteCharacterText;
private Text idFieldText;
private Button knownHeadersBtn;
private Button varargsHeadersBtn;
@Override
protected String getModelName() {
return "CSV model";
}
@Override
protected String getModelType() {
return "CSV";
}
@Override
protected void createGroups(Composite control) {
super.createGroups(control);
createFileGroup(control);
createLoadStoreOptionsGroup(control);
createCsvGroup(control);
}
private void createFileGroup(Composite parent) {
final Composite groupContent = DialogUtil.createGroupContainer(parent, "Files", 3);
final Label modelFileLabel = new Label(groupContent, SWT.NONE);
modelFileLabel.setText("Model file: ");
fileText = new Text(groupContent, SWT.BORDER);
fileText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
final Button browseFile = new Button(groupContent, SWT.NONE);
browseFile.setText("Browse Workspace...");
browseFile.addListener(SWT.Selection, new BrowseWorkspaceForModelsListener(fileText, "CSV files in the workspace", "Select a CSV file"));
}
protected void createCsvGroup(Composite parent) {
final Composite groupContent = DialogUtil.createGroupContainer(parent, "CSV", 4);
final Label modelFieldSeparatorLabel = new Label(groupContent, SWT.NONE);
modelFieldSeparatorLabel.setText("Field Separator: ");
fieldSeparatorText = new Text(groupContent, SWT.BORDER);
fieldSeparatorText.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
fieldSeparatorText.setTextLimit(2); // Accept \t for tabs? test this!!!
final Label modelQuoteCharacterLabel = new Label(groupContent, SWT.NONE);
modelQuoteCharacterLabel.setText("Quote Character: ");
quoteCharacterText = new Text(groupContent, SWT.BORDER);
quoteCharacterText.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
quoteCharacterText.setTextLimit(2);
knownHeadersBtn = new Button(groupContent, SWT.CHECK);
knownHeadersBtn.setText("Known Headers");
knownHeadersBtn.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
System.out.println("knownHeadersBtn Selected");
varargsHeadersBtn.setEnabled(knownHeadersBtn.getSelection());
}
});
varargsHeadersBtn = new Button(groupContent, SWT.CHECK);
varargsHeadersBtn.setText("Varargs Headers");
final Label modelIdFieldLabel = new Label(groupContent, SWT.NONE);
modelIdFieldLabel.setText("Id Field: ");
idFieldText = new Text(groupContent, SWT.BORDER);
idFieldText.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
idFieldText.setToolTipText("This can be used to indicate that a given field/colum can be used as id. If using " +
"headers this should be the field name, if not, it should be the index of the column");
}
@Override
protected void loadProperties() {
super.loadProperties();
if (properties == null) {
fieldSeparatorText.setText(",");
quoteCharacterText.setText("\"");
knownHeadersBtn.setSelection(true);
} else {
fileText.setText(properties.getProperty(CsvModel.PROPERTY_FILE));
fieldSeparatorText.setText(properties.getProperty(CsvModel.PROPERTY_FIELD_SEPARATOR));
quoteCharacterText.setText(properties.getProperty(CsvModel.PROPERTY_QUOTE_CHARACTER));
idFieldText.setText(properties.getProperty(CsvModel.PROPERTY_ID_FIELD));
knownHeadersBtn.setSelection(properties.getBooleanProperty(CsvModel.PROPERTY_HAS_KNOWN_HEADERS, true));
varargsHeadersBtn.setSelection(properties.getBooleanProperty(CsvModel.PROPERTY_HAS_VARARGS_HEADERS, false));
varargsHeadersBtn.setEnabled(knownHeadersBtn.getSelection());
}
}
@Override
protected void storeProperties() {
super.storeProperties();
properties.setProperty(CsvModel.PROPERTY_FILE, fileText.getText());
properties.setProperty(CsvModel.PROPERTY_FIELD_SEPARATOR, fieldSeparatorText.getText());
properties.setProperty(CsvModel.PROPERTY_QUOTE_CHARACTER, quoteCharacterText.getText());
String idFieldValue = idFieldText.getText();
if(idFieldValue.isEmpty()) {
properties.remove(CsvModel.PROPERTY_ID_FIELD);
}
else {
properties.setProperty(CsvModel.PROPERTY_ID_FIELD, idFieldValue);
}
properties.setProperty(CsvModel.PROPERTY_HAS_KNOWN_HEADERS, String.valueOf(knownHeadersBtn.getSelection()));
properties.setProperty(CsvModel.PROPERTY_HAS_VARARGS_HEADERS, String.valueOf(varargsHeadersBtn.getSelection()));
}
}