]> gerrit.simantics Code Review - simantics/interop.git/blob - org.simantics.xml.sax.ui/src/org/simantics/xml/sax/ui/wizard/SchemaConversionWizard.java
3c27632b6bcccbbe012de1b105568ca6a6cc24e0
[simantics/interop.git] / org.simantics.xml.sax.ui / src / org / simantics / xml / sax / ui / wizard / SchemaConversionWizard.java
1 package org.simantics.xml.sax.ui.wizard;\r
2 \r
3 import java.io.File;\r
4 import java.io.IOException;\r
5 \r
6 import org.eclipse.jface.viewers.IStructuredSelection;\r
7 import org.eclipse.jface.wizard.Wizard;\r
8 import org.eclipse.swt.SWT;\r
9 import org.eclipse.swt.widgets.Display;\r
10 import org.eclipse.swt.widgets.FileDialog;\r
11 import org.eclipse.ui.IImportWizard;\r
12 import org.eclipse.ui.IWorkbench;\r
13 import org.simantics.xml.sax.ManualSchemaFileImport;\r
14 import org.simantics.xml.sax.SchemaConverter;\r
15 \r
16 public class SchemaConversionWizard extends Wizard implements IImportWizard {\r
17 \r
18         InputSelectionPage inputSelectionPage;\r
19         ImportProcessPage importProcessPage;\r
20         SchemaCombinationPage schemaCombinationPage;\r
21         \r
22         public SchemaConversionWizard() {\r
23                 setWindowTitle("XML Schema conversion");\r
24         }\r
25 \r
26         @Override\r
27         public void init(IWorkbench workbench, IStructuredSelection selection) {\r
28 \r
29         }\r
30 \r
31         @Override\r
32         public boolean performFinish() {\r
33                 if (importProcessPage.isImporting())\r
34                         return false;\r
35                 return true;\r
36         }\r
37         \r
38         \r
39         @Override\r
40         public void addPages() {\r
41                 addPage(inputSelectionPage = new InputSelectionPage());\r
42                 addPage(importProcessPage = new ImportProcessPage());\r
43                 addPage(schemaCombinationPage = new SchemaCombinationPage());\r
44         }\r
45         \r
46         public void doConversion() throws Exception {\r
47                 \r
48                 \r
49                 File inputFile = new File(inputSelectionPage.getSchemaFilename());\r
50                 File configurationFile = null;\r
51                 if (inputSelectionPage.getConfigurationFilename() != null)\r
52                         configurationFile = new File(inputSelectionPage.getConfigurationFilename());\r
53                 File outputPlugin = new File(inputSelectionPage.getPluginFilename());\r
54 \r
55                 SchemaConverter converter = new SchemaConverter(inputFile,configurationFile,outputPlugin);\r
56                 converter.setCreateExporter(inputSelectionPage.createExporter);\r
57                 converter.setCreateImporter(inputSelectionPage.createImporter);\r
58                 converter.setCreatePGraph(inputSelectionPage.createPGraph);\r
59                 converter.setFileImport(new ManualSchemaFileImport() {\r
60                         \r
61                         String filename;\r
62                         @Override\r
63                         public File getFileForLocation(final String location) throws IOException {\r
64                                 if (Display.getCurrent() == null)\r
65                                         Display.getDefault().syncExec(new Runnable() {\r
66                                                 @Override\r
67                                                 public void run() {\r
68                                                         showDialog(location);\r
69                                                 }\r
70                                         });\r
71                                 else {\r
72                                         showDialog(location);\r
73                                 }\r
74                                 if (filename == null)\r
75                                         return null;\r
76                                 return new File(filename);\r
77                         }\r
78                         \r
79                         protected void showDialog(String location) {\r
80                                 FileDialog dialog = new FileDialog(SchemaConversionWizard.this.getShell(), SWT.OPEN);\r
81                                 dialog.setText("Open schema file for " + location);\r
82                                 filename = dialog.open();\r
83                         }\r
84                 });\r
85                 \r
86                 converter.convert();\r
87                 \r
88                 schemaCombinationPage.setOutputPlugin(outputPlugin);\r
89         }\r
90 \r
91 }\r