package org.simantics.district.imports.ui;
import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Set;
import org.apache.commons.csv.CSVRecord;
import org.eclipse.jface.dialogs.IPageChangeProvider;
import org.eclipse.jface.wizard.IWizardContainer;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridLayout;
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.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
+import org.geotools.referencing.CRS;
import org.simantics.district.imports.ui.controls.DynamicComboFieldEditor;
-import org.simantics.utils.ui.widgets.FileOrDirectorySelectionWidget;
-import org.simantics.utils.ui.widgets.FileSelectionListener;
-import org.simantics.utils.ui.widgets.FileSelectionWidget;
public class CSVImportWizardPage extends WizardPage {
private Map<Integer, String> headerIndexAndValues = new HashMap<>();
private Table headerTable;
- private Button firstAsHeader;
+// private Button firstAsHeader;
private Combo delimiterCombo;
private TableColumnLayout tableColumnLayout;
private Composite tableComposite;
- private FileSelectionWidget wktFileSelection;
+// private FileSelectionWidget wktFileSelection;
// Common for vertex and edge
private DynamicComboFieldEditor componentMappingSelector;
private DynamicComboFieldEditor endXCoordSelector;
private DynamicComboFieldEditor endYCoordSelector;
private DynamicComboFieldEditor endZValueSelector;
+ private DynamicComboFieldEditor tempValueSelector;
+ private DynamicComboFieldEditor pressureValueSelector;
+
+ private DynamicComboFieldEditor outerDiameterSelector;
+ private DynamicComboFieldEditor diameterSelector;
+ private DynamicComboFieldEditor nominalMassFlowSelector;
private Group indexMappingGroup;
private Composite composite;
private Button isVertexImport;
+
+ private Combo sourceCRSCombo;
protected CSVImportWizardPage(CSVImportModel model) {
super("Import CSV Data");
this.model = model;
- setMessage("Select columng index mappings");
+ setMessage("Select column index mappings");
}
@Override
composite.setLayout(new GridLayout(1, false));
GridDataFactory.fillDefaults().grab(true, true).align(SWT.FILL, SWT.FILL).applyTo(composite);
+ Label label = new Label(composite, SWT.NONE);
+ label.setText("Select delimiter");
+
delimiterCombo = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY);
+ delimiterCombo.setToolTipText("Select the delimiter that is used to separate elements in the CSV file");
delimiterCombo.setItems(model.getDelimiterFormats());
delimiterCombo.addSelectionListener(new SelectionListener() {
}
});
- firstAsHeader = new Button(composite, SWT.CHECK);
- firstAsHeader.setText("Read first row as header");
- firstAsHeader.setSelection(model.getReadFirstAsHeader());
- firstAsHeader.addSelectionListener(new SelectionListener() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- model.setReadFirstAsHeader(firstAsHeader.getSelection());
- updateHeaders();
- updateCombos();
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
-
- }
- });
+// firstAsHeader = new Button(composite, SWT.CHECK);
+// firstAsHeader.setText("Read first row as header");
+// firstAsHeader.setSelection(model.getReadFirstAsHeader());
+// firstAsHeader.addSelectionListener(new SelectionListener() {
+//
+// @Override
+// public void widgetSelected(SelectionEvent e) {
+// model.setReadFirstAsHeader(firstAsHeader.getSelection());
+// updateHeaders();
+// updateCombos();
+// }
+//
+// @Override
+// public void widgetDefaultSelected(SelectionEvent e) {
+// widgetSelected(e);
+// }
+// });
tableComposite = new Composite(composite, SWT.BORDER);
tableColumnLayout = new TableColumnLayout();
tableComposite.setLayout(tableColumnLayout);
- wktFileSelection = new FileSelectionWidget(composite, "WKT file", SWT.OPEN);
- wktFileSelection.addListener(new FileSelectionListener() {
-
+ label = new Label(composite, SWT.NONE);
+ label.setText("Select source Coordinate Reference System");
+
+ sourceCRSCombo = new Combo(composite, SWT.NONE);
+ sourceCRSCombo.setToolTipText("Select the coordinate reference system that is used in the source material for possible transformation to target coordinate reference system (EPSG:4326)");
+ Set<String> codes = CRS.getSupportedCodes("EPSG");
+ sourceCRSCombo.setItems(codes.toArray(new String[codes.size()]));
+ sourceCRSCombo.addSelectionListener(new SelectionAdapter() {
+
@Override
- public void fileSelected(FileOrDirectorySelectionWidget source, String[] filename) {
- String[] selection = wktFileSelection.getFilename();
- if (selection != null && selection.length > 0) {
- Path wktFile = Paths.get(selection[0]);
- if (!Files.exists(wktFile)) {
- setErrorMessage("File " + wktFile.toAbsolutePath() + " does not exist");
- } else {
- model.setWKTFile(wktFile);
- validatePageComplete();
- }
- }
+ public void widgetSelected(SelectionEvent e) {
+ String current = sourceCRSCombo.getItem(sourceCRSCombo.getSelectionIndex());
+ model.setSourceCRS("EPSG:" + current);
}
});
+
+// wktFileSelection = new FileSelectionWidget(composite, "WKT file", SWT.OPEN);
+// wktFileSelection.addListener(new FileSelectionListener() {
+//
+// @Override
+// public void fileSelected(FileOrDirectorySelectionWidget source, String[] filename) {
+// String[] selection = wktFileSelection.getFilename();
+// if (selection != null && selection.length > 0) {
+// Path wktFile = Paths.get(selection[0]);
+// if (!Files.exists(wktFile)) {
+// setErrorMessage("File " + wktFile.toAbsolutePath() + " does not exist");
+// } else {
+// model.setWKTFile(wktFile);
+// validatePageComplete();
+// }
+// }
+// }
+// });
isVertexImport = new Button(composite, SWT.CHECK);
isVertexImport.setText("File contains vertices");
+ isVertexImport.setToolTipText("Enable this if the file contains vertices, i.e. points");
isVertexImport.setSelection(model.isVertexImport());
isVertexImport.addSelectionListener(new SelectionListener() {
validatePageComplete();
}
});
+ tempValueSelector = new DynamicComboFieldEditor("tempValue", "Temperature value", parent);
+ tempValueSelector.addComboListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ widgetDefaultSelected(e);
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ model.setTempIndex(Integer.parseInt(tempValueSelector.getValue()));
+ validatePageComplete();
+ }
+ });
+ pressureValueSelector = new DynamicComboFieldEditor("pressureValue", "Pressure value", parent);
+ pressureValueSelector.addComboListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ widgetDefaultSelected(e);
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ model.setPressureIndex(Integer.parseInt(pressureValueSelector.getValue()));
+ validatePageComplete();
+ }
+ });
}
private void createEdgeIndexMappingField(Group parent) {
validatePageComplete();
}
});
+ diameterSelector = new DynamicComboFieldEditor("diameterValue", "Diameter value", parent);
+ diameterSelector.addComboListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ widgetDefaultSelected(e);
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ model.setDiameterIndex(Integer.parseInt(diameterSelector.getValue()));
+ validatePageComplete();
+ }
+ });
+ outerDiameterSelector = new DynamicComboFieldEditor("outerDiameterValue", "Outer Diameter value", parent);
+ outerDiameterSelector.addComboListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ widgetDefaultSelected(e);
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ model.setOuterDiameterIndex(Integer.parseInt(outerDiameterSelector.getValue()));
+ validatePageComplete();
+ }
+ });
+ nominalMassFlowSelector = new DynamicComboFieldEditor("nominalMassFlowValue", "Nominal Mass Flow", parent);
+ nominalMassFlowSelector.addComboListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ widgetDefaultSelected(e);
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ model.setNominalMassFlowIndex(Integer.parseInt(nominalMassFlowSelector.getValue()));
+ validatePageComplete();
+ }
+ });
}
private void updateCombos() {
}
if (model.isVertexImport())
- updateVertexcombos(namesAndValues);
+ updateVertexCombos(namesAndValues);
else
updateEdgeCombos(namesAndValues);
endYCoordSelector.updateCombo(namesAndValues);
startZValueSelector.updateCombo(namesAndValues);
endZValueSelector.updateCombo(namesAndValues);
+ diameterSelector.updateCombo(namesAndValues);
+ outerDiameterSelector.updateCombo(namesAndValues);
+ nominalMassFlowSelector.updateCombo(namesAndValues);
}
- private void updateVertexcombos(String[][] namesAndValues) {
+ private void updateVertexCombos(String[][] namesAndValues) {
xCoordSelector.updateCombo(namesAndValues);
yCoordSelector.updateCombo(namesAndValues);
zValueSelector.updateCombo(namesAndValues);
+ pressureValueSelector.updateCombo(namesAndValues);
+ tempValueSelector.updateCombo(namesAndValues);
}
private void updateHeaders() {