package com.swtxml.ide.newwizard; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.internal.ui.wizards.NewElementWizard; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.IWorkbench; @SuppressWarnings("restriction") public class SwtXmlNewWizard extends NewElementWizard { private SwtXmlNewPage page; private IFile swtxmlFile; public SwtXmlNewWizard() { setWindowTitle("New SWT/XML Class"); } @Override public void addPages() { super.addPages(); page = new SwtXmlNewPage(); page.init(getSelection()); addPage(page); } @Override public void init(IWorkbench workbench, IStructuredSelection selection) { super.init(workbench, selection); } @Override protected void finishPage(IProgressMonitor monitor) throws InterruptedException, CoreException { page.createType(monitor); IPackageFragment pkg = page.getPackageFragment(); IContainer folder = (IContainer) pkg.getResource(); IJavaElement element = getCreatedElement(); swtxmlFile = folder.getFile(new Path(element.getElementName() + ".swtxml")); swtxmlFile.create(getClass().getResourceAsStream("template.swtxml"), IResource.NONE, monitor); folder.refreshLocal(1, monitor); } @Override public boolean performFinish() { boolean accepted = super.performFinish(); if (accepted && swtxmlFile != null) { openResource(swtxmlFile); selectAndReveal(swtxmlFile); } return accepted; } @Override public IJavaElement getCreatedElement() { return page.getCreatedType(); } }