]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.imports.ui/src/org/simantics/district/imports/ui/CSVImportWizard.java
Add support for importing regions to district models
[simantics/district.git] / org.simantics.district.imports.ui / src / org / simantics / district / imports / ui / CSVImportWizard.java
index 97fa990aed619334c5d080e04b74b0e4ec2fb830..6162314e21a91b3be6d4ba0e355482099f1d9085 100644 (file)
@@ -1,38 +1,69 @@
-package org.simantics.district.imports.ui;\r
-\r
-import java.io.IOException;\r
-import java.nio.file.Path;\r
-\r
-import org.eclipse.jface.viewers.IStructuredSelection;\r
-import org.eclipse.jface.wizard.Wizard;\r
-import org.eclipse.ui.IImportWizard;\r
-import org.eclipse.ui.IWorkbench;\r
-import org.simantics.district.imports.DistrictImportUtils;\r
-\r
-public class CSVImportWizard extends Wizard implements IImportWizard {\r
-\r
-    private CSVImportModel model;\r
-    \r
-    public CSVImportWizard() {\r
-        setWindowTitle("Import CSV data");\r
-    }\r
-    \r
-    \r
-    @Override\r
-    public void init(IWorkbench workbench, IStructuredSelection selection) {\r
-        model = new CSVImportModel();\r
-        addPage(new CSVImportWizardPage(model));\r
-    }\r
-    \r
-    @Override\r
-    public boolean performFinish() {\r
-        Path csvFile = model.getSource();\r
-        try {\r
-            DistrictImportUtils.importCSVAsLayer(csvFile);\r
-        } catch (IOException e) {\r
-            e.printStackTrace();\r
-        }\r
-        return false;\r
-    }\r
-\r
-}\r
+package org.simantics.district.imports.ui;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.ui.IImportWizard;
+import org.eclipse.ui.IWorkbench;
+import org.simantics.district.imports.CSVImportModel;
+import org.simantics.district.imports.DistrictImportUtils;
+import org.simantics.utils.ui.ExceptionUtils;
+
+public class CSVImportWizard extends Wizard implements IImportWizard {
+
+    private CSVImportModel model;
+    
+    public CSVImportWizard() {
+        setWindowTitle("Import CSV data");
+        setNeedsProgressMonitor(true);
+    }
+    
+    
+    @Override
+    public void init(IWorkbench workbench, IStructuredSelection selection) {
+        model = new CSVImportModel();
+        addPage(new CSVImportWizardFirstPage(model));
+        addPage(new CSVImportWizardPage(model));
+        addPage(new ComponentMappingPage(model));
+    }
+    
+    @Override
+    public boolean performFinish() {
+        try {
+            getContainer().run(true, true, new IRunnableWithProgress() {
+
+                @Override
+                public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+                    try {
+                        monitor.beginTask("Importing CSV", 1);
+                        
+                        if (model.isVertexImport()) {
+                            DistrictImportUtils.importVertices(model);
+                        } else {
+                            DistrictImportUtils.importEdges(model);
+                        }
+
+                    } catch (Exception e) {
+                        throw new InvocationTargetException(e);
+                    }
+                }
+            });
+            return true;
+        } catch (InvocationTargetException e) {
+            Throwable t = e.getTargetException();
+            WizardPage cp = (WizardPage) getContainer().getCurrentPage();
+            cp.setErrorMessage(t.getMessage());
+            ExceptionUtils.logAndShowError(t);
+            return false;
+        } catch (InterruptedException e) {
+            ExceptionUtils.logAndShowError(e);
+            return false;
+        }
+    }
+
+
+}