blob: 0fa363066416fa35be8313def71baa308fd98a31 [file] [log] [blame]
package org.eclipse.jst.jsp.ui.internal.wizard;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jst.jsp.ui.internal.JSPUIMessages;
import org.eclipse.jst.jsp.ui.internal.JSPUIPlugin;
import org.eclipse.jst.jsp.ui.internal.Logger;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
import org.eclipse.ui.ide.IDE;
public class NewJSPWizard extends Wizard implements INewWizard {
static String PAGE_IMAGE = "/icons/full/wizban/newjspfile_wiz.gif"; //$NON-NLS-1$
private WizardNewFileCreationPage fNewFilePage;
private IStructuredSelection fSelection;
List fValidExtensions = new ArrayList(Arrays.asList(new String[]{"jsp", "jspf"})); //$NON-NLS-1$ //$NON-NLS-2$
public void addPages() {
fNewFilePage = new WizardNewFileCreationPage("JSPWizardNewFileCreationPage", new StructuredSelection(IDE.computeSelectedResources(fSelection))) { //$NON-NLS-1$
protected boolean validatePage() {
IPath handlePath = new Path(getFileName());
String extension = handlePath.getFileExtension();
if (extension == null || !fValidExtensions.contains(extension)) {
setErrorMessage(JSPUIMessages._ERROR_FILENAME_MUST_END_JSP);
return false;
}
setErrorMessage(null);
return super.validatePage();
}
};
fNewFilePage.setTitle(JSPUIMessages._UI_WIZARD_NEW_HEADING);
fNewFilePage.setDescription(JSPUIMessages._UI_WIZARD_NEW_DESCRIPTION);
addPage(fNewFilePage);
}
public void init(IWorkbench aWorkbench, IStructuredSelection aSelection) {
fSelection = aSelection;
setWindowTitle(JSPUIMessages._UI_WIZARD_NEW_TITLE);
if (PAGE_IMAGE != null) {
ImageDescriptor descriptor = JSPUIPlugin.getDefault().getImageRegistry().getDescriptor(PAGE_IMAGE);
if (descriptor == null) {
descriptor = ImageDescriptor.createFromURL(JSPUIPlugin.getDefault().getBundle().getEntry(PAGE_IMAGE));
JSPUIPlugin.getDefault().getImageRegistry().put(PAGE_IMAGE, descriptor);
}
setDefaultPageImageDescriptor(descriptor);
}
}
private void openEditor(final IFile file) {
if (file != null) {
getShell().getDisplay().asyncExec(new Runnable() {
public void run() {
try {
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IDE.openEditor(page, file, true);
}
catch (PartInitException e) {
Logger.log(Logger.WARNING_DEBUG, e.getMessage(), e);
}
}
});
}
}
public boolean performFinish() {
IFile file = fNewFilePage.createNewFile();
openEditor(file);
return true;
}
}