]> gerrit.simantics Code Review - simantics/interop.git/blob - org.simantics.xml.sax.ui/src/org/simantics/xml/sax/ui/wizard/ImportProcessPage.java
Generate SCL bindings for multi-version ontology references classes.
[simantics/interop.git] / org.simantics.xml.sax.ui / src / org / simantics / xml / sax / ui / wizard / ImportProcessPage.java
1 package org.simantics.xml.sax.ui.wizard;\r
2 \r
3 import java.lang.reflect.InvocationTargetException;\r
4 \r
5 import org.eclipse.core.runtime.IProgressMonitor;\r
6 import org.eclipse.jface.layout.GridDataFactory;\r
7 import org.eclipse.jface.operation.IRunnableWithProgress;\r
8 import org.eclipse.jface.wizard.WizardPage;\r
9 import org.eclipse.swt.SWT;\r
10 import org.eclipse.swt.events.SelectionAdapter;\r
11 import org.eclipse.swt.events.SelectionEvent;\r
12 import org.eclipse.swt.layout.GridLayout;\r
13 import org.eclipse.swt.widgets.Button;\r
14 import org.eclipse.swt.widgets.Composite;\r
15 import org.eclipse.swt.widgets.Label;\r
16 import org.simantics.utils.ui.ErrorLogger;\r
17 \r
18 \r
19 public class ImportProcessPage extends WizardPage {\r
20         private Composite composite;\r
21         \r
22         private Button button;\r
23         private Label label;\r
24         \r
25         private boolean doneImport = false;\r
26         private boolean importing = false;\r
27         \r
28         public ImportProcessPage() {\r
29                 super("XML Schema conversion","Conversion Summary", null);\r
30                 setPageComplete(false);\r
31                 \r
32         }\r
33         \r
34         public boolean isDoneImport() {\r
35                 return doneImport;\r
36         }\r
37         \r
38         @Override\r
39         public void createControl(Composite parent) {\r
40                 composite = new Composite(parent, SWT.NONE);\r
41                 composite.setLayout(new GridLayout(1,true));\r
42                 \r
43                 Label fileLabel = new Label(composite, SWT.NONE);\r
44                 fileLabel.setText("File: ");\r
45                                 \r
46                 label = new Label(composite, SWT.NONE);\r
47                 label.setText("Import has not been started.");\r
48                 GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BOTTOM).grab(true, false).applyTo(label);\r
49                 button = new Button(composite, SWT.PUSH);\r
50                 button.setText("Import");\r
51                 GridDataFactory.fillDefaults().align(SWT.RIGHT, SWT.CENTER).applyTo(button);\r
52                 button.addSelectionListener(new SelectionAdapter() {\r
53                         @Override\r
54                         public void widgetSelected(SelectionEvent e) {\r
55                                 doImport();\r
56                                 \r
57                         }\r
58                 });\r
59                 setControl(composite);  \r
60         }\r
61         \r
62         private Exception exception;\r
63 \r
64         private void doImport() {\r
65                 button.setEnabled(false);\r
66                 label.setText("Import started.");\r
67                 importing = true;\r
68                 try {\r
69                         getWizard().getContainer().run(true, true, new IRunnableWithProgress() {\r
70                                 \r
71                                 @Override\r
72                                 public void run(final IProgressMonitor monitor) throws InvocationTargetException,\r
73                                                 InterruptedException {\r
74                                         try {\r
75                                                 \r
76                                                 monitor.beginTask("Database import", IProgressMonitor.UNKNOWN);\r
77                                                 final SchemaConversionWizard wizard = (SchemaConversionWizard)getWizard();\r
78                                                 wizard.doConversion();\r
79 \r
80                                                 \r
81                                         } catch (final Exception err) {\r
82                                                 exception = err;\r
83                                         }\r
84                                         monitor.done();\r
85                                 }\r
86                         });\r
87                 } catch (InvocationTargetException err) {\r
88                         exception = err;\r
89                 } catch (InterruptedException err) {\r
90                         exception = err;\r
91                 }\r
92                 if (exception != null) {\r
93                         setErrorMessage("Conversion failed: " + exception.getMessage());\r
94                         ErrorLogger.defaultLogError("Schema conversion failed.",exception);\r
95                         label.setText("Schema conversion failed.");\r
96                 } else {\r
97                         label.setText("Schema conversion done.");\r
98                 }\r
99                 doneImport = true;\r
100                 importing = false;\r
101                 setPreviousPage(null);\r
102                 setPageComplete(true);\r
103                 getContainer().updateButtons();\r
104                 \r
105         }\r
106         \r
107         public boolean isImporting() {\r
108                 return importing;\r
109         }\r
110 \r
111 }\r