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