/*
* This software is Copyright 2005,2006,2007,2008 Langdale Consultants.
* Langdale Consultants can be contacted at: http://www.langdale.com.au
*/
package au.com.langdale.cimtoole.wizards;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspaceRunnable;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.IExportWizard;
import org.eclipse.ui.IWorkbench;
import au.com.langdale.cimtoole.builder.SchemaBuildlet;
import au.com.langdale.cimtoole.project.Info;
import au.com.langdale.cimtoole.project.Task;
import au.com.langdale.util.Jobs;
public class ExportSchema extends Wizard implements IExportWizard {
public static final String SCHEMA = "schema.merged-owl";
private SchemaExportPage main = new SchemaExportPage();
public void init(IWorkbench workbench, IStructuredSelection selection) {
setWindowTitle("Export Schema");
setNeedsProgressMonitor(true);
main.setTitle(getWindowTitle());
main.setDescription("Export the merged schema as OWL.");
main.setSelected(selection);
}
@Override
public void addPages() {
addPage(main);
}
class InternalSchemaTask extends SchemaBuildlet implements IWorkspaceRunnable {
IProject project = main.getProject();
public void run(IProgressMonitor monitor) throws CoreException {
Info.putProperty( project, Info.MERGED_SCHEMA_PATH, SCHEMA);
build(project.getFile(SCHEMA), monitor);
}
}
@Override
public boolean performFinish() {
if( main.isInternal())
return Jobs.runInteractive(new InternalSchemaTask(), main.getProject(), getContainer(), getShell());
else
return Jobs.runInteractive(Task.exportSchema(main.getProject(), main.getPathname()), null, getContainer(), getShell());
}
}