SampleNewWizardpublic class SampleNewWizard extends org.eclipse.jface.wizard.Wizard implements org.eclipse.ui.INewWizardThis 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
"new". 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 void | addPages()Adding the page to the wizard.
page = new SampleNewWizardPage(selection);
addPage(page);
| private void | doFinish(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 void | init(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.
this.selection = selection;
| private java.io.InputStream | openContentStream()We will initialize file contents with a sample text.
String contents =
"Welcome to document.new";
return new ByteArrayInputStream(contents.getBytes());
| public boolean | performFinish()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 void | throwCoreException(java.lang.String message)
IStatus status =
new Status(IStatus.ERROR, "org.cookbook.ch13.EditorPlugIn", IStatus.OK, message, null);
throw new CoreException(status);
|
|