FileDocCategorySizeDatePackage
SampleNewWizard.javaAPI DocExample4973Tue Dec 09 14:36:00 GMT 2003org.eclipsebook.ch12.Ch1201.wizards

SampleNewWizard

public class SampleNewWizard extends org.eclipse.jface.wizard.Wizard implements org.eclipse.ui.INewWizard
This is a sample new wizard. Its role is to create a new file resource in the provided container. If the container resource (a folder or a project) is selected in the workspace when the wizard is opened, it will accept it as the target container. The wizard creates one file with the extension "xyz". If a sample multi-page editor (also available as a template) is registered for the same extension, it will be able to open it.

Fields Summary
private SampleNewWizardPage
page
private org.eclipse.jface.viewers.ISelection
selection
Constructors Summary
public SampleNewWizard()
Constructor for SampleNewWizard.

		super();
		setNeedsProgressMonitor(true);
	
Methods Summary
public voidaddPages()
Adding the page to the wizard.

		page = new SampleNewWizardPage(selection);
		addPage(page);
	
private voiddoFinish(java.lang.String containerName, java.lang.String fileName, IProgressMonitor monitor)
The worker method. It will find the container, create the file if missing or just replace its contents, and open the editor on the newly created file.

		// create a sample file
		monitor.beginTask("Creating " + fileName, 2);
		IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
		IResource resource = root.findMember(new Path(containerName));
		if (!resource.exists() || !(resource instanceof IContainer)) {
			throwCoreException("Container \"" + containerName + "\" does not exist.");
		}
		IContainer container = (IContainer) resource;
		final IFile file = container.getFile(new Path(fileName));
		try {
			InputStream stream = openContentStream();
			if (file.exists()) {
				file.setContents(stream, true, true, monitor);
			} else {
				file.create(stream, true, monitor);
			}
			stream.close();
		} catch (IOException e) {
		}
		monitor.worked(1);
		monitor.setTaskName("Opening file for editing...");
		getShell().getDisplay().asyncExec(new Runnable() {
			public void run() {
				IWorkbenchPage page =
					PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
				try {
					page.openEditor(file);
				} catch (PartInitException e) {
				}
			}
		});
		monitor.worked(1);
	
public voidinit(org.eclipse.ui.IWorkbench workbench, org.eclipse.jface.viewers.IStructuredSelection selection)
We will accept the selection in the workbench to see if we can initialize from it.

see
IWorkbenchWizard#init(IWorkbench, IStructuredSelection)

		this.selection = selection;
	
private java.io.InputStreamopenContentStream()
We will initialize file contents with a sample text.

		String contents =
		"Here is the sample text.";
		return new ByteArrayInputStream(contents.getBytes());
	
public booleanperformFinish()
This method is called when 'Finish' button is pressed in the wizard. We will create an operation and run it using wizard as execution context.

		final String containerName = page.getContainerName();
		final String fileName = page.getFileName();
		IRunnableWithProgress op = new IRunnableWithProgress() {
			public void run(IProgressMonitor monitor) throws InvocationTargetException {
				try {
					doFinish(containerName, fileName, monitor);
				} catch (CoreException e) {
					throw new InvocationTargetException(e);
				} finally {
					monitor.done();
				}
			}
		};
		try {
			getContainer().run(true, false, op);
		} catch (InterruptedException e) {
			return false;
		} catch (InvocationTargetException e) {
			Throwable realException = e.getTargetException();
			MessageDialog.openError(getShell(), "Error", realException.getMessage());
			return false;
		}
		return true;
	
private voidthrowCoreException(java.lang.String message)

		IStatus status =
			new Status(IStatus.ERROR, "org.eclipsebook.ch12.Ch1203", IStatus.OK, message, null);
		throw new CoreException(status);