package org.cloudsmith.geppetto.ui.wizard; import org.cloudsmith.geppetto.ui.UIPlugin; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.IPath; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.INewWizard; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PartInitException; import org.eclipse.ui.dialogs.WizardNewFileCreationPage; import org.eclipse.ui.ide.IDE; import org.eclipse.ui.internal.ide.DialogUtil; import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; import org.eclipse.ui.internal.wizards.newresource.ResourceMessages; import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard; /** * 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 * "pp". If a sample multi-page editor (also available * as a template) is registered for the same extension, it will * be able to open it. */ public class NewManifestWizard extends BasicNewResourceWizard implements INewWizard { public static class NewManifestWizardPage extends WizardNewFileCreationPage { public NewManifestWizardPage(IStructuredSelection selection) { super("newPuppetManifestPage", selection); setTitle("Puppet Manifest File"); setFileExtension("pp"); setDescription("This wizard creates a new file with *.pp extension that can be opened by the Puppet Manifest Editor."); } @Override protected IFile createFileHandle(IPath filePath) { if(!"pp".equals(filePath.getFileExtension())) { filePath = filePath.addFileExtension("pp"); } return super.createFileHandle(filePath); } } // private ISelection selection; private NewManifestWizardPage page; // /** // * 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. // */ // // private void doFinish(String containerName, String fileName, IProgressMonitor monitor) throws CoreException { // // 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 { // IDE.openEditor(page, file, true); // } // catch(PartInitException e) { // } // } // }); // monitor.worked(1); // } // /** // * We will accept the selection in the workbench to see if // * we can initialize from it. // * // * @see IWorkbenchWizard#init(IWorkbench, IStructuredSelection) // */ // @Override // public void init(IWorkbench workbench, IStructuredSelection selection) { // this.selection = selection; // } /** * Constructor for NewManifestWizard. */ public NewManifestWizard() { super(); setNeedsProgressMonitor(true); } /** * Adding the page to the wizard. */ @Override public void addPages() { page = new NewManifestWizardPage(selection); addPage(page); } /* * (non-Javadoc) * Method declared on BasicNewResourceWizard. */ @Override protected void initializeDefaultPageImageDescriptor() { ImageDescriptor desc = UIPlugin.getImageDesc("full/wizban/NewPuppetManifest.png"); if(desc == null) desc = IDEWorkbenchPlugin.getIDEImageDescriptor("wizban/newfile_wiz.png");//$NON-NLS-1$ setDefaultPageImageDescriptor(desc); } /* * (non-Javadoc) * Method declared on IWizard. */ @Override public boolean performFinish() { IFile file = page.createNewFile(); if(file == null) { return false; } selectAndReveal(file); // Open editor on new file. IWorkbenchWindow dw = getWorkbench().getActiveWorkbenchWindow(); try { if(dw != null) { IWorkbenchPage page = dw.getActivePage(); if(page != null) { IDE.openEditor(page, file, true); } } } catch(PartInitException e) { DialogUtil.openError(dw.getShell(), ResourceMessages.FileResource_errorMessage, e.getMessage(), e); } return true; } }