[91608] improve new jsp wizard - better support new jsp templates
diff --git a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPWizard.java b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPWizard.java
index 0fa3630..f9edb4b 100644
--- a/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPWizard.java
+++ b/bundles/org.eclipse.jst.jsp.ui/src/org/eclipse/jst/jsp/ui/internal/wizard/NewJSPWizard.java
@@ -1,5 +1,8 @@
package org.eclipse.jst.jsp.ui.internal.wizard;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -7,13 +10,19 @@
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Preferences;
+import org.eclipse.core.runtime.content.IContentType;
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.core.contenttype.ContentTypeIdForJSP;
+import org.eclipse.jst.jsp.core.internal.JSPCorePlugin;
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.osgi.util.NLS;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
@@ -21,20 +30,35 @@
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
import org.eclipse.ui.ide.IDE;
+import org.eclipse.wst.sse.core.internal.encoding.CommonEncodingPreferenceNames;
public class NewJSPWizard extends Wizard implements INewWizard {
static String PAGE_IMAGE = "/icons/full/wizban/newjspfile_wiz.gif"; //$NON-NLS-1$
private WizardNewFileCreationPage fNewFilePage;
+ private NewJSPTemplatesWizardPage fNewFileTemplatesPage;
private IStructuredSelection fSelection;
- List fValidExtensions = new ArrayList(Arrays.asList(new String[]{"jsp", "jspf"})); //$NON-NLS-1$ //$NON-NLS-2$
+ private List fValidExtensions = null;
+
+ /**
+ * Get list of valid extensions for JSP Content type
+ *
+ * @return
+ */
+ List getValidExtensions() {
+ if (fValidExtensions == null) {
+ IContentType type = Platform.getContentTypeManager().getContentType(ContentTypeIdForJSP.ContentTypeID_JSP);
+ fValidExtensions = new ArrayList(Arrays.asList(type.getFileSpecs(IContentType.FILE_EXTENSION_SPEC)));
+ }
+ return fValidExtensions;
+ }
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);
+ if (extension == null || !getValidExtensions().contains(extension)) {
+ setErrorMessage(NLS.bind(JSPUIMessages._ERROR_FILENAME_MUST_END_JSP, getValidExtensions().toString()));
return false;
}
setErrorMessage(null);
@@ -45,6 +69,9 @@
fNewFilePage.setDescription(JSPUIMessages._UI_WIZARD_NEW_DESCRIPTION);
addPage(fNewFilePage);
+
+ fNewFileTemplatesPage = new NewJSPTemplatesWizardPage();
+ addPage(fNewFileTemplatesPage);
}
public void init(IWorkbench aWorkbench, IStructuredSelection aSelection) {
@@ -77,7 +104,41 @@
}
public boolean performFinish() {
+ // save user options for next use
+ fNewFileTemplatesPage.saveLastSavedPreferences();
+
+ // create a new empty file
IFile file = fNewFilePage.createNewFile();
+
+ // put template contents into file
+ String templateString = fNewFileTemplatesPage.getTemplateString();
+ if (templateString != null) {
+ // determine the encoding for the new file
+ Preferences preference = JSPCorePlugin.getDefault().getPluginPreferences();
+ String charSet = preference.getString(CommonEncodingPreferenceNames.OUTPUT_CODESET);
+
+ try {
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ OutputStreamWriter outputStreamWriter = null;
+ if (charSet == null || charSet.trim().equals("")) { //$NON-NLS-1$
+ // just use default encoding
+ outputStreamWriter = new OutputStreamWriter(outputStream);
+ } else {
+ outputStreamWriter = new OutputStreamWriter(outputStream, charSet);
+ }
+ outputStreamWriter.write(templateString);
+ outputStreamWriter.flush();
+ outputStreamWriter.close();
+ ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
+ file.setContents(inputStream, true, false, null);
+ inputStream.close();
+ }
+ catch (Exception e) {
+ Logger.log(Logger.WARNING_DEBUG, "Could not create contents for new JSP file", e); //$NON-NLS-1$
+ }
+ }
+
+ // open the file in editor
openEditor(file);
return true;
}