]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/CSVImportWizardPage.java
Updates to Simantics district CSV import
[simantics/district.git] / org.simantics.district.imports.ui / src / org / simantics / district / imports / ui / CSVImportWizardPage.java
index 9d1d08c422c1627480beb0ae1a71ee4117509b68..e1b81e0f10df3b6fad4729d26e77754c0460dd06 100644 (file)
@@ -1,13 +1,11 @@
 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;
@@ -19,6 +17,7 @@ import org.eclipse.jface.viewers.ColumnWeightData;
 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;
@@ -26,13 +25,12 @@ 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.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 {
 
@@ -41,12 +39,12 @@ 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;
@@ -64,17 +62,25 @@ public class CSVImportWizardPage extends WizardPage {
     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
@@ -83,7 +89,11 @@ public class CSVImportWizardPage extends WizardPage {
         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() {
 
@@ -100,48 +110,65 @@ public class CSVImportWizardPage extends WizardPage {
             }
         });
 
-        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() {
 
@@ -263,6 +290,34 @@ public class CSVImportWizardPage extends WizardPage {
                 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) {
@@ -353,6 +408,48 @@ public class CSVImportWizardPage extends WizardPage {
                 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() {
@@ -370,7 +467,7 @@ public class CSVImportWizardPage extends WizardPage {
         }
 
         if (model.isVertexImport())
-            updateVertexcombos(namesAndValues);
+            updateVertexCombos(namesAndValues);
         else
             updateEdgeCombos(namesAndValues);
 
@@ -384,12 +481,17 @@ public class CSVImportWizardPage extends WizardPage {
         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() {