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