]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.xml.sax.ui/src/org/simantics/xml/sax/ui/wizard/ImportProcessPage.java
XML Schema converter
[simantics/interop.git] / org.simantics.xml.sax.ui / src / org / simantics / xml / sax / ui / wizard / ImportProcessPage.java
diff --git a/org.simantics.xml.sax.ui/src/org/simantics/xml/sax/ui/wizard/ImportProcessPage.java b/org.simantics.xml.sax.ui/src/org/simantics/xml/sax/ui/wizard/ImportProcessPage.java
new file mode 100644 (file)
index 0000000..33cee37
--- /dev/null
@@ -0,0 +1,111 @@
+package org.simantics.xml.sax.ui.wizard;\r
+\r
+import java.lang.reflect.InvocationTargetException;\r
+\r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.jface.layout.GridDataFactory;\r
+import org.eclipse.jface.operation.IRunnableWithProgress;\r
+import org.eclipse.jface.wizard.WizardPage;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.SelectionAdapter;\r
+import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.layout.GridLayout;\r
+import org.eclipse.swt.widgets.Button;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Label;\r
+import org.simantics.utils.ui.ErrorLogger;\r
+\r
+\r
+public class ImportProcessPage extends WizardPage {\r
+       private Composite composite;\r
+       \r
+       private Button button;\r
+       private Label label;\r
+       \r
+       private boolean doneImport = false;\r
+       private boolean importing = false;\r
+       \r
+       public ImportProcessPage() {\r
+               super("XML Schema conversion","Conversion Summary", null);\r
+               setPageComplete(false);\r
+               \r
+       }\r
+       \r
+       public boolean isDoneImport() {\r
+               return doneImport;\r
+       }\r
+       \r
+       @Override\r
+       public void createControl(Composite parent) {\r
+               composite = new Composite(parent, SWT.NONE);\r
+               composite.setLayout(new GridLayout(1,true));\r
+               \r
+               Label fileLabel = new Label(composite, SWT.NONE);\r
+               fileLabel.setText("File: ");\r
+                               \r
+               label = new Label(composite, SWT.NONE);\r
+               label.setText("Import has not been started.");\r
+               GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BOTTOM).grab(true, false).applyTo(label);\r
+               button = new Button(composite, SWT.PUSH);\r
+               button.setText("Import");\r
+               GridDataFactory.fillDefaults().align(SWT.RIGHT, SWT.CENTER).applyTo(button);\r
+               button.addSelectionListener(new SelectionAdapter() {\r
+                       @Override\r
+                       public void widgetSelected(SelectionEvent e) {\r
+                               doImport();\r
+                               \r
+                       }\r
+               });\r
+               setControl(composite);  \r
+       }\r
+       \r
+       private Exception exception;\r
+\r
+       private void doImport() {\r
+               button.setEnabled(false);\r
+               label.setText("Import started.");\r
+               importing = true;\r
+               try {\r
+                       getWizard().getContainer().run(true, true, new IRunnableWithProgress() {\r
+                               \r
+                               @Override\r
+                               public void run(final IProgressMonitor monitor) throws InvocationTargetException,\r
+                                               InterruptedException {\r
+                                       try {\r
+                                               \r
+                                               monitor.beginTask("Database import", IProgressMonitor.UNKNOWN);\r
+                                               final SchemaConversionWizard wizard = (SchemaConversionWizard)getWizard();\r
+                                               wizard.doConversion();\r
+\r
+                                               \r
+                                       } catch (final Exception err) {\r
+                                               exception = err;\r
+                                       }\r
+                                       monitor.done();\r
+                               }\r
+                       });\r
+               } catch (InvocationTargetException err) {\r
+                       exception = err;\r
+               } catch (InterruptedException err) {\r
+                       exception = err;\r
+               }\r
+               if (exception != null) {\r
+                       setErrorMessage("Conversion failed: " + exception.getMessage());\r
+                       ErrorLogger.defaultLogError("Schema conversion failed.",exception);\r
+                       label.setText("Schema conversion failed.");\r
+               } else {\r
+                       label.setText("Schema conversion done.");\r
+               }\r
+               doneImport = true;\r
+               importing = false;\r
+               setPreviousPage(null);\r
+               setPageComplete(true);\r
+               getContainer().updateButtons();\r
+               \r
+       }\r
+       \r
+       public boolean isImporting() {\r
+               return importing;\r
+       }\r
+\r
+}\r