package org.simantics.xml.sax.ui.wizard; import java.io.File; import java.io.IOException; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.Wizard; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.ui.IImportWizard; import org.eclipse.ui.IWorkbench; import org.simantics.xml.sax.ManualSchemaFileImport; import org.simantics.xml.sax.SchemaConverter; public class SchemaConversionWizard extends Wizard implements IImportWizard { InputSelectionPage inputSelectionPage; ImportProcessPage importProcessPage; SchemaCombinationPage schemaCombinationPage; public SchemaConversionWizard() { setWindowTitle("XML Schema conversion"); } @Override public void init(IWorkbench workbench, IStructuredSelection selection) { } @Override public boolean performFinish() { if (importProcessPage.isImporting()) return false; return true; } @Override public void addPages() { addPage(inputSelectionPage = new InputSelectionPage()); addPage(importProcessPage = new ImportProcessPage()); addPage(schemaCombinationPage = new SchemaCombinationPage()); } public void doConversion() throws Exception { File inputFile = new File(inputSelectionPage.getSchemaFilename()); File configurationFile = null; if (inputSelectionPage.getConfigurationFilename() != null) configurationFile = new File(inputSelectionPage.getConfigurationFilename()); File outputPlugin = new File(inputSelectionPage.getPluginFilename()); SchemaConverter converter = new SchemaConverter(inputFile,configurationFile,outputPlugin); converter.setCreateExporter(inputSelectionPage.createExporter); converter.setCreateImporter(inputSelectionPage.createImporter); converter.setCreatePGraph(inputSelectionPage.createPGraph); converter.setFileImport(new ManualSchemaFileImport() { String filename; @Override public File getFileForLocation(final String location) throws IOException { if (Display.getCurrent() == null) Display.getDefault().syncExec(new Runnable() { @Override public void run() { showDialog(location); } }); else { showDialog(location); } if (filename == null) return null; return new File(filename); } protected void showDialog(String location) { FileDialog dialog = new FileDialog(SchemaConversionWizard.this.getShell(), SWT.OPEN); dialog.setText("Open schema file for " + location); filename = dialog.open(); } }); converter.convert(); schemaCombinationPage.setOutputPlugin(outputPlugin); } }