X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/PHPFileWizard.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/PHPFileWizard.java index a0e659d..9f4a0e6 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/PHPFileWizard.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/PHPFileWizard.java @@ -12,19 +12,39 @@ Contributors: Klaus Hartlage - www.eclipseproject.de **********************************************************************/ +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.InvocationTargetException; + +import net.sourceforge.phpdt.internal.corext.codemanipulation.StubUtility; +import net.sourceforge.phpdt.internal.corext.template.php.CodeTemplateContext; +import net.sourceforge.phpdt.internal.corext.template.php.CodeTemplateContextType; +import net.sourceforge.phpeclipse.PHPeclipsePlugin; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.text.templates.Template; +import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.Wizard; import org.eclipse.ui.INewWizard; import org.eclipse.ui.IWorkbench; -import org.eclipse.core.runtime.*; -import org.eclipse.jface.operation.*; -import java.lang.reflect.InvocationTargetException; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.core.resources.*; -import org.eclipse.core.runtime.CoreException; -import java.io.*; -import org.eclipse.ui.*; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchWizard; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.ide.IDE; /** * This wizard creates one file with the extension @@ -99,8 +119,15 @@ public class PHPFileWizard extends Wizard implements INewWizard { } IContainer container = (IContainer) resource; final IFile file = container.getFile(new Path(fileName)); + String className = getClassName(fileName); + try { - InputStream stream = openContentStream(); + InputStream stream; + if (className == null) { + stream = openContentStream(); + } else { + stream = openContentStreamClass(className); + } if (file.exists()) { file.setContents(stream, true, true, monitor); } else { @@ -115,7 +142,7 @@ public class PHPFileWizard extends Wizard implements INewWizard { public void run() { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); try { - page.openEditor(file); + IDE.openEditor(page,file,true); } catch (PartInitException e) { } } @@ -124,26 +151,69 @@ public class PHPFileWizard extends Wizard implements INewWizard { } /** - * We will initialize file contents with a sample text. + * Check if the filename is like this anyname.class.php + * @param fileName the filename + * @return the anyname or null */ - private InputStream openContentStream() { - String className = fileName.substring(0, fileName.length() - 3); + private static final String getClassName(final String fileName) { + final int lastDot = fileName.lastIndexOf('.'); + if (lastDot == -1) return null; + final int precLastDot = fileName.lastIndexOf('.',lastDot-1); + if (precLastDot == -1) return null; + if (!fileName.substring(precLastDot+1,lastDot).toUpperCase().equals("CLASS")) return null; + return fileName.substring(0,precLastDot); + } + + /** + * We will initialize file contents for a class + * @param className the classname + */ + private InputStream openContentStreamClass(final String className) { StringBuffer contents = new StringBuffer(""); + contents.append("class "); + contents.append(className); + contents.append(" {\n\n"); + contents.append(" function "); + contents.append(className); + contents.append("() {\n"); + contents.append(" }\n}\n?>"); return new ByteArrayInputStream(contents.toString().getBytes()); } + /** + * We will initialize file contents with a sample text. + */ + private InputStream openContentStream() { + try { + Template template= PHPeclipsePlugin.getDefault().getCodeTemplateStore().findTemplate(CodeTemplateContextType.NEWTYPE); + if (template == null) { + return null; + } + String lineDelimiter = System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$ + CodeTemplateContext context= new CodeTemplateContext(template.getContextTypeId(), null, lineDelimiter); +// context.setCompilationUnitVariables(cu); + return new ByteArrayInputStream(StubUtility.evaluateTemplate(context, template).getBytes()); + } catch (CoreException e) { + e.printStackTrace(); + return null; + } + +// StringBuffer contents = new StringBuffer(""); +// return new ByteArrayInputStream(contents.toString().getBytes()); + } + private void throwCoreException(String message) throws CoreException { IStatus status = new Status(IStatus.ERROR, "net.sourceforge.phpeclipse.wizards", IStatus.OK, message, null); throw new CoreException(status);