X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.imports.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fimports%2Fui%2FCSVImportWizardPage.java;h=5db4581584e6110147a87173b0fa3bb0e6aca5bf;hb=HEAD;hp=e1b81e0f10df3b6fad4729d26e77754c0460dd06;hpb=231b9da5dfd8129e24cb5a9d2ec87ff9afa7afd9;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/CSVImportWizardPage.java b/org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/CSVImportWizardPage.java index e1b81e0f..5db45815 100644 --- a/org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/CSVImportWizardPage.java +++ b/org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/CSVImportWizardPage.java @@ -6,6 +6,7 @@ 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; @@ -17,6 +18,8 @@ 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.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; @@ -29,8 +32,10 @@ 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.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 { @@ -48,12 +53,36 @@ public class CSVImportWizardPage extends WizardPage { // Common for vertex and edge private DynamicComboFieldEditor componentMappingSelector; - private DynamicComboFieldEditor labelSelector; + private DynamicComboFieldEditor idSelector; // For vertex import private DynamicComboFieldEditor xCoordSelector; private DynamicComboFieldEditor yCoordSelector; private DynamicComboFieldEditor zValueSelector; + private DynamicComboFieldEditor altElevationValueSelector; + + private DynamicComboFieldEditor supplyTempValueSelector; + private DynamicComboFieldEditor returnTempValueSelector; + private DynamicComboFieldEditor supplyPressureValueSelector; + private DynamicComboFieldEditor returnPressureValueSelector; + private DynamicComboFieldEditor dpSelector; + private DynamicComboFieldEditor dtSelector; + private DynamicComboFieldEditor heatPowerSelector; + private DynamicComboFieldEditor peakPowerSelector; + private DynamicComboFieldEditor regionSelector; + 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; @@ -62,8 +91,16 @@ public class CSVImportWizardPage extends WizardPage { private DynamicComboFieldEditor endXCoordSelector; private DynamicComboFieldEditor endYCoordSelector; private DynamicComboFieldEditor endZValueSelector; - private DynamicComboFieldEditor tempValueSelector; - private DynamicComboFieldEditor pressureValueSelector; + private DynamicComboFieldEditor detailedGeometrySelector; + private DynamicComboFieldEditor pipeCodeSelector; + private DynamicComboFieldEditor installationYearSelector; + private DynamicComboFieldEditor wallThicknessSelector; + private DynamicComboFieldEditor insulationConductivitySelector; + private DynamicComboFieldEditor pipeSizeDNSelector; + private DynamicComboFieldEditor roughnessSelector; + private DynamicComboFieldEditor structureSelector; + + private Text edgeConnectionPadding; private DynamicComboFieldEditor outerDiameterSelector; private DynamicComboFieldEditor diameterSelector; @@ -76,6 +113,14 @@ public class CSVImportWizardPage extends WizardPage { private Button isVertexImport; private Combo sourceCRSCombo; + + private DynamicComboFieldEditor edgeFlowAreaSelector; + + private DynamicComboFieldEditor kReturnSelector; + + private DynamicComboFieldEditor kSupplySelector; + + private DynamicComboFieldEditor tGroundSelector; protected CSVImportWizardPage(CSVImportModel model) { super("Import CSV Data"); @@ -94,7 +139,10 @@ public class CSVImportWizardPage extends WizardPage { 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()); + String[] formats = model.getDelimiterFormats(); + delimiterCombo.setItems(formats); + if (formats.length > 0) + delimiterCombo.select(0); delimiterCombo.addSelectionListener(new SelectionListener() { @Override @@ -148,6 +196,31 @@ public class CSVImportWizardPage extends WizardPage { } }); + sourceCRSCombo.addModifyListener(new ModifyListener() { + + @Override + public void modifyText(ModifyEvent e) { + String currentText = sourceCRSCombo.getText(); + if (codes.contains(currentText)) { + // Select this + String[] items = sourceCRSCombo.getItems(); + int i; + for (i = 0; i < items.length; i++) { + String item = items[i]; + if (currentText.equals(item)) { + break; + } + } + if (i != 0) { + sourceCRSCombo.select(i); + model.setSourceCRS("EPSG:" + currentText); + } else { + System.err.println("this should not happen"); + } + } + } + }); + // wktFileSelection = new FileSelectionWidget(composite, "WKT file", SWT.OPEN); // wktFileSelection.addListener(new FileSelectionListener() { // @@ -225,237 +298,130 @@ public class CSVImportWizardPage extends WizardPage { createEdgeIndexMappingField(indexMappingGroup); createCommonIndexMappingField(indexMappingGroup); + + if (!model.isVertexImport()) { + Label label = new Label(indexMappingGroup, SWT.NONE); + label.setText("Connection point padding"); + GridDataFactory.fillDefaults().applyTo(label); + edgeConnectionPadding = new Text(indexMappingGroup, SWT.BORDER); + GridDataFactory.fillDefaults().applyTo(edgeConnectionPadding); + edgeConnectionPadding.setText("0.0001"); // default + edgeConnectionPadding.addModifyListener(new ModifyListener() { + + @Override + public void modifyText(ModifyEvent e) { + try { + double padding = Double.parseDouble(edgeConnectionPadding.getText()); + model.setEdgePadding(padding); + } catch (NumberFormatException ee) { + // ignore + } + } + }); + } } 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(); - } - }); + componentMappingSelector = createComboField("componentMapping", "Apros component mapping", model::setComponentMappingIndex, parent); + idSelector = createComboField("id", "ID", model::setIdIndex, parent); + regionSelector = createComboField("regionValue", "Region", model::setRegionIndex, parent); } - 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() { - + private DynamicComboFieldEditor createComboField(String name, String label, Consumer setter, Group parent) { + DynamicComboFieldEditor selector = new DynamicComboFieldEditor(name, label, parent); + createSelectionListener(selector, setter); + return selector; + } + + private void createSelectionListener(DynamicComboFieldEditor editor, Consumer setter) { + editor.addComboListener(new SelectionListener() { + @Override public void widgetSelected(SelectionEvent e) { widgetDefaultSelected(e); } - + @Override public void widgetDefaultSelected(SelectionEvent e) { - model.setZCoordIndex(Integer.parseInt(zValueSelector.getValue())); + setter.accept(Integer.parseInt(editor.getValue())); validatePageComplete(); } }); - tempValueSelector = new DynamicComboFieldEditor("tempValue", "Temperature value", parent); - tempValueSelector.addComboListener(new SelectionListener() { + } - @Override - public void widgetSelected(SelectionEvent e) { - widgetDefaultSelected(e); - } + private void createVertexIndexMappingField(Group parent) { + xCoordSelector = createComboField("xCoord", "X Coordinate", model::setXCoordIndex, parent); - @Override - public void widgetDefaultSelected(SelectionEvent e) { - model.setTempIndex(Integer.parseInt(tempValueSelector.getValue())); - validatePageComplete(); - } - }); - pressureValueSelector = new DynamicComboFieldEditor("pressureValue", "Pressure value", parent); - pressureValueSelector.addComboListener(new SelectionListener() { + yCoordSelector = createComboField("yCoord", "Y Coordinate", model::setYCoordIndex, parent); + zValueSelector = createComboField("zValue", "Z Value", model::setZCoordIndex, parent); - @Override - public void widgetSelected(SelectionEvent e) { - widgetDefaultSelected(e); - } + altElevationValueSelector = createComboField("altElevation", "Alternative Elevation", model::setAltElevationIndex, parent); + + supplyTempValueSelector = createComboField("tempValue", "Supply Temperature value", model::setSupplyTempIndex, parent); + returnTempValueSelector = createComboField("returnTempValue", "Return Temperature value", model::setReturnTempIndex, parent); + supplyPressureValueSelector = createComboField("pressureValue", "Supply Pressure value", model::setSupplyPressureIndex, parent); + returnPressureValueSelector = createComboField("returnPressureValue", "Return Pressure value", model::setReturnPressureIndex, parent); + dpSelector = createComboField("dpValue", "Delta pressure ", model::setDeltaPressureIndex, parent); + dtSelector = createComboField("dtValue", "Delta temperature ", model::setDeltaTemperatureIndex, parent); + heatPowerSelector = createComboField("heatPowerValue", "Heat Power", model::setHeatPowerIndex, parent); + peakPowerSelector = createComboField("peakPowerValue", "Peak Power", model::setPeakPowerIndex, parent); + + nominalHeadMSelector = createComboField("nominalHeadMValue", "nominalHeadM", model::setNominalHeadMIndex, parent); + nominalHeadBSelector = createComboField("nominalHeadBValue", "nominalHeadB", model::setNominalHeadBIndex, parent); + nominalFlowSelector = createComboField("nominalFlowValue", "nominalFlow", model::setNominalFlowIndex, parent); + + maximumHeadMSelector = createComboField("maximumHeadMValue", "maximumHeadM", model::setMaximumHeadMIndex, parent); + heatLoadDsSelector = createComboField("heatLoadDsValue", "heatLoadDs", model::setHeatLoadDsIndex, parent); + massFlowSelector = createComboField("massFlowValue", "massFlow", model::setMassFlowIndex, parent); + volFlowSelector = createComboField("volFlowValue", "volFlow", model::setVolFlowIndex, parent); + velocitySelector = createComboField("velocityValue", "velocity", model::setVelocityIndex, parent); + flowAreaSelector = createComboField("flowAreaValue", "flowArea", model::setFlowAreaIndex, parent); + nominalPressureLossSelector = createComboField("nominalPressureLossValue", "nominalPressureLoss", model::setNominalPressureLossIndex, parent); + valvePositionSelector = createComboField("valvePositionSelectorValue", "valvePositionSelector", model::setValvePositionIndex, parent); + addressSelector = createComboField("addressValue", "addressSelector", model::setAddressIndex, parent); + - @Override - public void widgetDefaultSelected(SelectionEvent e) { - model.setPressureIndex(Integer.parseInt(pressureValueSelector.getValue())); - validatePageComplete(); - } - }); } - + private void createEdgeIndexMappingField(Group 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(); - } - }); - 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(); - } - }); +// Composite paddingComposite = new Composite(parent, SWT.NONE); +// GridLayoutFactory.fillDefaults().numColumns(2).applyTo(paddingComposite); + startXCoordSelector = createComboField("startxCoord", "Start X Coordinate", model::setStartXCoordIndex, parent); + startYCoordSelector = createComboField("startyCoord", "Start Y Coordinate", model::setStartYCoordIndex, parent); + startZValueSelector = createComboField("startzValue", "Start Z Value", model::setStartZCoordIndex, parent); + + endXCoordSelector = createComboField("endxCoord", "End X Coordinate", model::setEndXCoordIndex, parent); + endYCoordSelector = createComboField("endyCoord", "End Y Coordinate", model::setEndYCoordIndex, parent); + endZValueSelector = createComboField("endzValue", "End Z Value", model::setEndZCoordIndex, parent); + + pipeCodeSelector = createComboField("pipeCodeValue", "Pipe Code", model::setPipeCodeIndex, parent); + + detailedGeometrySelector = createComboField("detailedGeometryValue", "Geometry", model::detailedGeometryIndex, parent); + diameterSelector = createComboField("diameterValue", "Diameter value", model::setDiameterIndex, parent); + outerDiameterSelector = createComboField("outerDiameterValue", "Outer Diameter value", model::setOuterDiameterIndex, parent); + nominalMassFlowSelector = createComboField("nominalMassFlowValue", "Nominal Mass Flow", model::setNominalMassFlowIndex, parent); + edgeFlowAreaSelector = createComboField("edgeFlowAreaValue", "Flow Area", model::setEdgeFlowAreaIndex, parent); + kReturnSelector = createComboField("kReturnValue", "K Return", model::setKReturnIndex, parent); + kSupplySelector = createComboField("kSupplyValue", "K Supply", model::setKSupplyIndex, parent); + tGroundSelector = createComboField("tGroundValue", "Temperature Ground", model::setTGroundIndex, parent); + lengthSelector = createComboField("lengthValue", "lengthSelector", model::setLengthIndex, parent); + + pipeSizeDNSelector = createComboField("pipeSizeDNValue", "Pipe Size DN", model::setPipeSizeDNIndex, parent); + structureSelector = createComboField("structureValue", "Structure", model::setStructureIndex, parent); + installationYearSelector = createComboField("installationYearValue", "Installation Year", model::setInstallationYearIndex, parent); + wallThicknessSelector = createComboField("wallThicknessValue", "Wall Thickness", model::setWallThicknessIndex, parent); + insulationConductivitySelector = createComboField("insulationConductivityValue", "Insulation Conductivity", model::setInsulationConductivityIndex, parent); + roughnessSelector = createComboField("roughnessValue", "Roughness", model::setRoughnessIndex, parent); } private void updateCombos() { - String[][] namesAndValues = new String[headerIndexAndValues.size()][]; + String[][] namesAndValues = new String[headerIndexAndValues.size() + 1][]; - int i = 0; + namesAndValues[0] = new String[] {"", "-1"}; + int i = 1; for (Entry entry : headerIndexAndValues.entrySet()) { int key = entry.getKey(); String value = entry.getValue(); @@ -472,6 +438,7 @@ public class CSVImportWizardPage extends WizardPage { updateEdgeCombos(namesAndValues); componentMappingSelector.updateCombo(namesAndValues); + idSelector.updateCombo(namesAndValues); } private void updateEdgeCombos(String[][] namesAndValues) { @@ -481,18 +448,51 @@ public class CSVImportWizardPage extends WizardPage { endYCoordSelector.updateCombo(namesAndValues); startZValueSelector.updateCombo(namesAndValues); endZValueSelector.updateCombo(namesAndValues); + pipeCodeSelector.updateCombo(namesAndValues); + detailedGeometrySelector.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); + pipeSizeDNSelector.updateCombo(namesAndValues); + structureSelector.updateCombo(namesAndValues); + installationYearSelector.updateCombo(namesAndValues); + wallThicknessSelector.updateCombo(namesAndValues); + insulationConductivitySelector.updateCombo(namesAndValues); + roughnessSelector.updateCombo(namesAndValues); } private void updateVertexCombos(String[][] namesAndValues) { xCoordSelector.updateCombo(namesAndValues); yCoordSelector.updateCombo(namesAndValues); zValueSelector.updateCombo(namesAndValues); - pressureValueSelector.updateCombo(namesAndValues); - tempValueSelector.updateCombo(namesAndValues); + altElevationValueSelector.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 updateHeaders() { if (headerTable != null) @@ -513,7 +513,7 @@ public class CSVImportWizardPage extends WizardPage { headerIndexAndValues.clear(); try { - List rows = model.getRows(5); + List rows = model.getRows(5, false); for (int k = 0; k < rows.size(); k++) { CSVRecord row = rows.get(k); @@ -552,7 +552,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); } }