]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/CSVImportWizardPage.java
Add conductance to edge properties
[simantics/district.git] / org.simantics.district.imports.ui / src / org / simantics / district / imports / ui / CSVImportWizardPage.java
index b7e46475dcec4f00c2b4069476de5084364b8b4e..2fb3b47b4eaa94588f419fe6e373d316de3a2b11 100644 (file)
@@ -1,11 +1,13 @@
 package org.simantics.district.imports.ui;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
+import java.util.function.Consumer;
 
 import org.apache.commons.csv.CSVRecord;
 import org.eclipse.jface.dialogs.IPageChangeProvider;
@@ -33,7 +35,8 @@ import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.TableItem;
 import org.eclipse.swt.widgets.Text;
 import org.geotools.referencing.CRS;
-import org.simantics.district.imports.ui.controls.DynamicComboFieldEditor;
+import org.simantics.district.imports.CSVImportModel;
+import org.simantics.district.network.ui.DynamicComboFieldEditor;
 
 public class CSVImportWizardPage extends WizardPage {
 
@@ -49,51 +52,10 @@ public class CSVImportWizardPage extends WizardPage {
     private Composite tableComposite;
 //    private FileSelectionWidget wktFileSelection;
 
-    // Common for vertex and edge
-    private DynamicComboFieldEditor componentMappingSelector;
-    private DynamicComboFieldEditor idSelector;
-    private DynamicComboFieldEditor labelSelector;
+    List<DynamicComboFieldEditor> fieldSelectors;
     
-    // For vertex import
-    private DynamicComboFieldEditor xCoordSelector;
-    private DynamicComboFieldEditor yCoordSelector;
-    private DynamicComboFieldEditor zValueSelector;
-
-    private DynamicComboFieldEditor supplyTempValueSelector;
-    private DynamicComboFieldEditor returnTempValueSelector;
-    private DynamicComboFieldEditor supplyPressureValueSelector;
-    private DynamicComboFieldEditor returnPressureValueSelector;
-    private DynamicComboFieldEditor dpSelector;
-    private DynamicComboFieldEditor dtSelector;
-    private DynamicComboFieldEditor heatPowerSelector;
-    private DynamicComboFieldEditor nominalHeadMSelector;
-    private DynamicComboFieldEditor nominalHeadBSelector;
-    private DynamicComboFieldEditor nominalFlowSelector;
-    private DynamicComboFieldEditor maximumHeadMSelector;
-    private DynamicComboFieldEditor heatLoadDsSelector;
-    private DynamicComboFieldEditor massFlowSelector;
-    private DynamicComboFieldEditor volFlowSelector;
-    private DynamicComboFieldEditor velocitySelector;
-    private DynamicComboFieldEditor flowAreaSelector;
-    private DynamicComboFieldEditor nominalPressureLossSelector;
-    private DynamicComboFieldEditor valvePositionSelector;
-    private DynamicComboFieldEditor addressSelector;
-    private DynamicComboFieldEditor lengthSelector;
-
-    // For edge import
-    private DynamicComboFieldEditor startXCoordSelector;
-    private DynamicComboFieldEditor startYCoordSelector;
-    private DynamicComboFieldEditor startZValueSelector;
-    private DynamicComboFieldEditor endXCoordSelector;
-    private DynamicComboFieldEditor endYCoordSelector;
-    private DynamicComboFieldEditor endZValueSelector;
-
     private Text edgeConnectionPadding;
     
-    private DynamicComboFieldEditor outerDiameterSelector;
-    private DynamicComboFieldEditor diameterSelector;
-    private DynamicComboFieldEditor nominalMassFlowSelector;
-
     private Group indexMappingGroup;
 
     private Composite composite;
@@ -102,14 +64,6 @@ public class CSVImportWizardPage extends WizardPage {
 
     private Combo sourceCRSCombo;
 
-    private DynamicComboFieldEditor edgeFlowAreaSelector;
-
-    private DynamicComboFieldEditor kReturnSelector;
-
-    private DynamicComboFieldEditor kSupplySelector;
-
-    private DynamicComboFieldEditor tGroundSelector;
-    
     protected CSVImportWizardPage(CSVImportModel model) {
         super("Import CSV Data");
         this.model = model;
@@ -280,13 +234,15 @@ public class CSVImportWizardPage extends WizardPage {
         indexMappingGroup.setText("Column index mapping");
         GridDataFactory.fillDefaults().grab(true, false).span(2, 1).applyTo(indexMappingGroup);
         
+        fieldSelectors = new ArrayList<>();
+        
+        createCommonIndexMappingField(indexMappingGroup);
+        
         if (model.isVertexImport())
             createVertexIndexMappingField(indexMappingGroup);
         else
             createEdgeIndexMappingField(indexMappingGroup);
         
-        createCommonIndexMappingField(indexMappingGroup);
-        
         if (!model.isVertexImport()) {
             Label label = new Label(indexMappingGroup, SWT.NONE);
             label.setText("Connection point padding");
@@ -299,8 +255,8 @@ public class CSVImportWizardPage extends WizardPage {
                 @Override
                 public void modifyText(ModifyEvent e) {
                     try {
-                        double padding = Double.parseDouble("");
-                        model.setEdgePapping(padding);
+                        double padding = Double.parseDouble(edgeConnectionPadding.getText());
+                        model.setEdgePadding(padding);
                     } catch (NumberFormatException ee) {
                         // ignore
                     }
@@ -311,557 +267,97 @@ public class CSVImportWizardPage extends WizardPage {
 
     private void createCommonIndexMappingField(Group parent) {
         
-        componentMappingSelector = new DynamicComboFieldEditor("componentMapping", "Apros component mapping", parent);
-        componentMappingSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setComponentMappingIndex(Integer.parseInt(componentMappingSelector.getValue()));
-                validatePageComplete();
-            }
-        });
+        fieldSelectors.add(createComboField("componentMapping", "Apros component mapping", model::setComponentMappingIndex, parent));
         
-        idSelector = new DynamicComboFieldEditor("id", "ID", parent);
-        idSelector.addComboListener(new SelectionListener() {
+        fieldSelectors.add(createComboField("id", "ID", model::setIdIndex, parent));
+        fieldSelectors.add(createComboField("regionValue", "Region", model::setRegionIndex, parent));
+    }
 
+    private DynamicComboFieldEditor createComboField(String name, String label, Consumer<Integer> setter, Group parent) {
+        DynamicComboFieldEditor selector = new DynamicComboFieldEditor(name, label, parent);
+        createSelectionListener(selector, setter);
+        return selector;
+    }
+    
+    private void createSelectionListener(DynamicComboFieldEditor editor, Consumer<Integer> setter) {
+        editor.addComboListener(new SelectionListener() {
+    
             @Override
             public void widgetSelected(SelectionEvent e) {
                 widgetDefaultSelected(e);
             }
-
+    
             @Override
             public void widgetDefaultSelected(SelectionEvent e) {
-                model.setIdIndex(Integer.parseInt(idSelector.getValue()));
+                setter.accept(Integer.parseInt(editor.getValue()));
                 validatePageComplete();
             }
         });
-        
     }
 
     private void createVertexIndexMappingField(Group parent) {
-        xCoordSelector = new DynamicComboFieldEditor("xCoord", "X Coordinate", parent);
-        xCoordSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setXCoordIndex(Integer.parseInt(xCoordSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-
-        yCoordSelector = new DynamicComboFieldEditor("yCoord", "Y Coordinate", parent);
-        yCoordSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setYCoordIndex(Integer.parseInt(yCoordSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        zValueSelector = new DynamicComboFieldEditor("zValue", "Z Value", parent);
-        zValueSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setZCoordIndex(Integer.parseInt(zValueSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        supplyTempValueSelector = new DynamicComboFieldEditor("tempValue", "Supply Temperature value", parent);
-        supplyTempValueSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setSupplyTempIndex(Integer.parseInt(supplyTempValueSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        returnTempValueSelector = new DynamicComboFieldEditor("returnTempValue", "Return Temperature value", parent);
-        returnTempValueSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setReturnTempIndex(Integer.parseInt(returnTempValueSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        supplyPressureValueSelector = new DynamicComboFieldEditor("pressureValue", "Supply Pressure value", parent);
-        supplyPressureValueSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setSupplyPressureIndex(Integer.parseInt(supplyPressureValueSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        returnPressureValueSelector = new DynamicComboFieldEditor("returnPressureValue", "Return Pressure value", parent);
-        returnPressureValueSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setReturnPressureIndex(Integer.parseInt(returnPressureValueSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        dpSelector = new DynamicComboFieldEditor("dpValue", "Delta pressure ", parent);
-        dpSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setDeltaPressureIndex(Integer.parseInt(dpSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        dtSelector = new DynamicComboFieldEditor("dtValue", "Delta temperature ", parent);
-        dtSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setDeltaTemperatureIndex(Integer.parseInt(dtSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        heatPowerSelector = new DynamicComboFieldEditor("heatPowerValue", "Heat Power", parent);
-        heatPowerSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setHeatPowerIndex(Integer.parseInt(heatPowerSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        nominalHeadMSelector = new DynamicComboFieldEditor("nominalHeadMValue", "nominalHeadM", parent);
-        nominalHeadMSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setNominalHeadMIndex(Integer.parseInt(nominalHeadMSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        nominalHeadBSelector = new DynamicComboFieldEditor("nominalHeadBValue", "nominalHeadB", parent);
-        nominalHeadBSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setNominalHeadBIndex(Integer.parseInt(nominalHeadBSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        nominalFlowSelector = new DynamicComboFieldEditor("nominalFlowValue", "nominalFlow", parent);
-        nominalFlowSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setNominalFlowIndex(Integer.parseInt(nominalFlowSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-
-        maximumHeadMSelector = new DynamicComboFieldEditor("maximumHeadMValue", "maximumHeadM", parent);
-        maximumHeadMSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setMaximumHeadMIndex(Integer.parseInt(maximumHeadMSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        heatLoadDsSelector = new DynamicComboFieldEditor("heatLoadDsValue", "heatLoadDs", parent);
-        heatLoadDsSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setHeatLoadDsIndex(Integer.parseInt(heatLoadDsSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        massFlowSelector = new DynamicComboFieldEditor("massFlowValue", "massFlow", parent);
-        massFlowSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setMassFlowIndex(Integer.parseInt(massFlowSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        volFlowSelector = new DynamicComboFieldEditor("volFlowValue", "volFlow", parent);
-        volFlowSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setVolFlowIndex(Integer.parseInt(volFlowSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        velocitySelector = new DynamicComboFieldEditor("velocityValue", "velocity", parent);
-        velocitySelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setVelocityIndex(Integer.parseInt(velocitySelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        flowAreaSelector = new DynamicComboFieldEditor("flowAreaValue", "flowArea", parent);
-        flowAreaSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
+        fieldSelectors.add(createComboField("xCoord", "X Coordinate", model::setXCoordIndex, parent));
 
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setFlowAreaIndex(Integer.parseInt(flowAreaSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        nominalPressureLossSelector = new DynamicComboFieldEditor("nominalPressureLossValue", "nominalPressureLoss", parent);
-        nominalPressureLossSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
+        fieldSelectors.add(createComboField("yCoord", "Y Coordinate", model::setYCoordIndex, parent));
+        fieldSelectors.add(createComboField("zValue", "Z Value", model::setZCoordIndex, parent));
 
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setNominalPressureLossIndex(Integer.parseInt(nominalPressureLossSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        valvePositionSelector = new DynamicComboFieldEditor("valvePositionSelectorValue", "valvePositionSelector", parent);
-        valvePositionSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setValvePositionIndex(Integer.parseInt(valvePositionSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        addressSelector = new DynamicComboFieldEditor("addressValue", "addressSelector", parent);
-        addressSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setAddressIndex(Integer.parseInt(addressSelector.getValue()));
-                validatePageComplete();
-            }
-        });
+        fieldSelectors.add(createComboField("altElevation", "Alternative Elevation", model::setAltElevationIndex, parent));
         
-
+        fieldSelectors.add(createComboField("tempValue", "Supply Temperature value", model::setSupplyTempIndex, parent));
+        fieldSelectors.add(createComboField("returnTempValue", "Return Temperature value", model::setReturnTempIndex, parent));
+        fieldSelectors.add(createComboField("pressureValue", "Supply Pressure value", model::setSupplyPressureIndex, parent));
+        fieldSelectors.add(createComboField("returnPressureValue", "Return Pressure value", model::setReturnPressureIndex, parent));
+        fieldSelectors.add(createComboField("dpValue", "Delta pressure ", model::setDeltaPressureIndex, parent));
+        fieldSelectors.add(createComboField("dtValue", "Delta temperature ", model::setDeltaTemperatureIndex, parent));
+        fieldSelectors.add(createComboField("heatPowerValue", "Heat Power", model::setHeatPowerIndex, parent));
+        fieldSelectors.add(createComboField("peakPowerValue", "Peak Power", model::setPeakPowerIndex, parent));
+        
+        fieldSelectors.add(createComboField("nominalHeadMValue", "nominalHeadM", model::setNominalHeadMIndex, parent));
+        fieldSelectors.add(createComboField("nominalHeadBValue", "nominalHeadB", model::setNominalHeadBIndex, parent));
+        fieldSelectors.add(createComboField("nominalFlowValue", "nominalFlow", model::setNominalFlowIndex, parent));
+
+        fieldSelectors.add(createComboField("maximumHeadMValue", "maximumHeadM", model::setMaximumHeadMIndex, parent));
+        fieldSelectors.add(createComboField("heatLoadDsValue", "heatLoadDs", model::setHeatLoadDsIndex, parent));
+        fieldSelectors.add(createComboField("massFlowValue", "massFlow", model::setMassFlowIndex, parent));
+        fieldSelectors.add(createComboField("volFlowValue", "volFlow", model::setVolFlowIndex, parent));
+        fieldSelectors.add(createComboField("velocityValue", "velocity", model::setVelocityIndex, parent));
+        fieldSelectors.add(createComboField("flowAreaValue", "flowArea", model::setFlowAreaIndex, parent));
+        fieldSelectors.add(createComboField("nominalPressureLossValue", "nominalPressureLoss", model::setNominalPressureLossIndex, parent));
+        fieldSelectors.add(createComboField("valvePositionSelectorValue", "valvePositionSelector", model::setValvePositionIndex, parent));
+        fieldSelectors.add(createComboField("addressValue", "addressSelector", model::setAddressIndex, parent));
     }
-
+    
     private void createEdgeIndexMappingField(Group parent) {
         
 //        Composite paddingComposite = new Composite(parent, SWT.NONE);
 //        GridLayoutFactory.fillDefaults().numColumns(2).applyTo(paddingComposite);
+        fieldSelectors.add(createComboField("startxCoord", "Start X Coordinate", model::setStartXCoordIndex, parent));
+        fieldSelectors.add(createComboField("startyCoord", "Start Y Coordinate", model::setStartYCoordIndex, parent));
+        fieldSelectors.add(createComboField("startzValue", "Start Z Value", model::setStartZCoordIndex, parent));
         
-        startXCoordSelector = new DynamicComboFieldEditor("startxCoord", "Start X Coordinate", parent);
-        startXCoordSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setStartXCoordIndex(Integer.parseInt(startXCoordSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-
-        startYCoordSelector = new DynamicComboFieldEditor("startyCoord", "Start Y Coordinate", parent);
-        startYCoordSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setStartYCoordIndex(Integer.parseInt(startYCoordSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        startZValueSelector = new DynamicComboFieldEditor("startzValue", "Start Z Value", parent);
-        startZValueSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setStartZCoordIndex(Integer.parseInt(startZValueSelector.getValue()));
-                validatePageComplete();
-            }
-        });
+        fieldSelectors.add(createComboField("endxCoord", "End X Coordinate", model::setEndXCoordIndex, parent));
+        fieldSelectors.add(createComboField("endyCoord", "End Y Coordinate", model::setEndYCoordIndex, parent));
+        fieldSelectors.add(createComboField("endzValue", "End Z Value", model::setEndZCoordIndex, parent));
         
-        endXCoordSelector = new DynamicComboFieldEditor("endxCoord", "End X Coordinate", parent);
-        endXCoordSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setEndXCoordIndex(Integer.parseInt(endXCoordSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-
-        endYCoordSelector = new DynamicComboFieldEditor("endyCoord", "End Y Coordinate", parent);
-        endYCoordSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setEndYCoordIndex(Integer.parseInt(endYCoordSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        endZValueSelector = new DynamicComboFieldEditor("endzValue", "End Z Value", parent);
-        endZValueSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setEndZCoordIndex(Integer.parseInt(endZValueSelector.getValue()));
-                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();
-            }
-        });
-        edgeFlowAreaSelector = new DynamicComboFieldEditor("edgeFlowAreaValue", "Flow Area", parent);
-        edgeFlowAreaSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setEdgeFlowAreaIndex(Integer.parseInt(edgeFlowAreaSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        kReturnSelector = new DynamicComboFieldEditor("kReturnValue", "K Return", parent);
-        kReturnSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setKReturnIndex(Integer.parseInt(kReturnSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        kSupplySelector = new DynamicComboFieldEditor("kSupplyValue", "K Supply", parent);
-        kSupplySelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setKSupplyIndex(Integer.parseInt(kSupplySelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        tGroundSelector = new DynamicComboFieldEditor("tGroundValue", "Temperature Ground", parent);
-        tGroundSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setTGroundIndex(Integer.parseInt(tGroundSelector.getValue()));
-                validatePageComplete();
-            }
-        });
-        lengthSelector = new DynamicComboFieldEditor("lengthValue", "lengthSelector", parent);
-        lengthSelector.addComboListener(new SelectionListener() {
-
-            @Override
-            public void widgetSelected(SelectionEvent e) {
-                widgetDefaultSelected(e);
-            }
-
-            @Override
-            public void widgetDefaultSelected(SelectionEvent e) {
-                model.setLengthIndex(Integer.parseInt(lengthSelector.getValue()));
-                validatePageComplete();
-            }
-        });
+        fieldSelectors.add(createComboField("pipeCodeValue", "Pipe Code", model::setPipeCodeIndex, parent));
+        
+        fieldSelectors.add(createComboField("detailedGeometryValue", "Geometry", model::detailedGeometryIndex, parent));
+        fieldSelectors.add(createComboField("diameterValue", "Diameter value", model::setDiameterIndex, parent));
+        fieldSelectors.add(createComboField("outerDiameterValue", "Outer Diameter value", model::setOuterDiameterIndex, parent));
+        fieldSelectors.add(createComboField("nominalMassFlowValue", "Nominal Mass Flow", model::setNominalMassFlowIndex, parent));
+        fieldSelectors.add(createComboField("edgeFlowAreaValue", "Flow Area", model::setEdgeFlowAreaIndex, parent));
+        fieldSelectors.add(createComboField("kReturnValue", "K Return", model::setKReturnIndex, parent));
+        fieldSelectors.add(createComboField("kSupplyValue", "K Supply", model::setKSupplyIndex, parent));
+        fieldSelectors.add(createComboField("tGroundValue", "Temperature Ground", model::setTGroundIndex, parent));
+        fieldSelectors.add(createComboField("lengthValue", "Length", model::setLengthIndex, parent));
+        
+        fieldSelectors.add(createComboField("pipeSizeDNValue", "Pipe Size DN", model::setPipeSizeDNIndex, parent));
+        fieldSelectors.add(createComboField("structureValue", "Structure", model::setStructureIndex, parent));
+        fieldSelectors.add(createComboField("installationYearValue", "Installation Year", model::setInstallationYearIndex, parent));
+        fieldSelectors.add(createComboField("wallThicknessValue", "Wall Thickness", model::setWallThicknessIndex, parent));
+        fieldSelectors.add(createComboField("insulationConductivityValue", "Insulation Conductivity", model::setInsulationConductivityIndex, parent));
+        fieldSelectors.add(createComboField("roughnessValue", "Roughness", model::setRoughnessIndex, parent));
+        fieldSelectors.add(createComboField("conductanceValue", "Conductance", model::setConductanceIndex, parent));
     }
 
     private void updateCombos() {
@@ -879,58 +375,12 @@ public class CSVImportWizardPage extends WizardPage {
             namesAndValues[i++] = nameAndValue;
         }
 
-        if (model.isVertexImport())
-            updateVertexCombos(namesAndValues);
-        else
-            updateEdgeCombos(namesAndValues);
-
-        componentMappingSelector.updateCombo(namesAndValues);
-        idSelector.updateCombo(namesAndValues);
-    }
-
-    private void updateEdgeCombos(String[][] namesAndValues) {
-        startXCoordSelector.updateCombo(namesAndValues);
-        endXCoordSelector.updateCombo(namesAndValues);
-        startYCoordSelector.updateCombo(namesAndValues);
-        endYCoordSelector.updateCombo(namesAndValues);
-        startZValueSelector.updateCombo(namesAndValues);
-        endZValueSelector.updateCombo(namesAndValues);
-        diameterSelector.updateCombo(namesAndValues);
-        outerDiameterSelector.updateCombo(namesAndValues);
-        nominalMassFlowSelector.updateCombo(namesAndValues);
-        edgeFlowAreaSelector.updateCombo(namesAndValues);
-        kReturnSelector.updateCombo(namesAndValues);
-        kSupplySelector.updateCombo(namesAndValues);
-        tGroundSelector.updateCombo(namesAndValues);
-        lengthSelector.updateCombo(namesAndValues);
+        updateCombos(namesAndValues);
     }
 
-    private void updateVertexCombos(String[][] namesAndValues) {
-        xCoordSelector.updateCombo(namesAndValues);
-        yCoordSelector.updateCombo(namesAndValues);
-        zValueSelector.updateCombo(namesAndValues);
-        supplyTempValueSelector.updateCombo(namesAndValues);       
-        returnTempValueSelector.updateCombo(namesAndValues);       
-        supplyPressureValueSelector.updateCombo(namesAndValues);   
-        returnPressureValueSelector.updateCombo(namesAndValues);   
-        dpSelector.updateCombo(namesAndValues);                    
-        dtSelector.updateCombo(namesAndValues);                    
-        heatPowerSelector.updateCombo(namesAndValues);             
-        valvePositionSelector.updateCombo(namesAndValues);             
-        nominalHeadMSelector.updateCombo(namesAndValues);          
-        nominalHeadBSelector.updateCombo(namesAndValues);          
-        nominalFlowSelector.updateCombo(namesAndValues);           
-        maximumHeadMSelector.updateCombo(namesAndValues);          
-        heatLoadDsSelector.updateCombo(namesAndValues);            
-        massFlowSelector.updateCombo(namesAndValues);              
-        volFlowSelector.updateCombo(namesAndValues);               
-        velocitySelector.updateCombo(namesAndValues);              
-        flowAreaSelector.updateCombo(namesAndValues);              
-        nominalPressureLossSelector.updateCombo(namesAndValues);   
-        addressSelector.updateCombo(namesAndValues);
+    private void updateCombos(String[][] namesAndValues) {
+        fieldSelectors.forEach(s -> s.updateCombo(namesAndValues));
     }
-    
-    
 
     private void updateHeaders() {
         if (headerTable != null)
@@ -951,7 +401,7 @@ public class CSVImportWizardPage extends WizardPage {
         headerIndexAndValues.clear();
 
         try {
-            List<CSVRecord> rows = model.getRows(5);
+            List<CSVRecord> rows = model.getRows(5, false);
 
             for (int k = 0; k < rows.size(); k++) {
                 CSVRecord row = rows.get(k);
@@ -990,7 +440,7 @@ public class CSVImportWizardPage extends WizardPage {
         if (model.isVertexImport())
             setPageComplete(model.getXCoordIndex() != -1 && model.getYCoordIndex() != -1 && model.getComponentMappingIndex() != -1);
         else
-            setPageComplete(model.getStartXCoordIndex() != 1 && model.getStartYCoordIndex() != -1 && model.getEndXCoordIndex() != -1 && model.getEndYCoordIndex() != -1 && model.getComponentMappingIndex() != -1);
+            setPageComplete(model.getStartXCoordIndex() != -1 && model.getStartYCoordIndex() != -1 && model.getEndXCoordIndex() != -1 && model.getEndYCoordIndex() != -1 && model.getComponentMappingIndex() != -1);
     }
 
 }