1) Moved net.sourceforge.phpeclipse.ui\src\net\sourceforge\phpdt back to net.sourcefo...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / ui / CodeGeneration.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/CodeGeneration.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/CodeGeneration.java
new file mode 100644 (file)
index 0000000..274f574
--- /dev/null
@@ -0,0 +1,410 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package net.sourceforge.phpdt.ui;
+
+import net.sourceforge.phpdt.core.ICompilationUnit;
+import net.sourceforge.phpdt.core.IMethod;
+import net.sourceforge.phpdt.internal.corext.codemanipulation.StubUtility;
+
+import org.eclipse.core.runtime.CoreException;
+
+/**
+ * Class that offers access to the templates contained in the 'code templates'
+ * preference page.
+ * 
+ * @since 2.1
+ */
+public class CodeGeneration {
+
+       private CodeGeneration() {
+       }
+
+       /**
+        * Returns the content for a new compilation unit using the 'new Java file'
+        * code template.
+        * 
+        * @param cu
+        *            The compilation to create the source for. The compilation unit
+        *            does not need to exist.
+        * @param typeComment
+        *            The comment for the type to be created. Used when the code
+        *            template contains a <i>${typecomment}</i> variable. Can be
+        *            <code>null</code> if no comment should be added.
+        * @param typeContent
+        *            The code of the type, including type declaration and body.
+        * @param lineDelimiter
+        *            The line delimiter to be used.
+        * @return Returns the new content or <code>null</code> if the template is
+        *         undefined or empty.
+        * @throws CoreException
+        *             Thrown when the evaluation of the code template fails.
+        */
+//     public static String getCompilationUnitContent(ICompilationUnit cu,
+//                     String typeComment, String typeContent, String lineDelimiter)
+//                     throws CoreException {
+//             return StubUtility.getCompilationUnitContent(cu, typeComment,
+//                             typeContent, lineDelimiter);
+//     }
+
+       /**
+        * Returns the content for a new type comment using the 'type comment' code
+        * template. The returned content is unformatted and is not indented.
+        * 
+        * @param cu
+        *            The compilation where the type is contained. The compilation
+        *            unit does not need to exist.
+        * @param typeQualifiedName
+        *            The name of the type to which the comment is added. For inner
+        *            types the name must be qualified and include the outer types
+        *            names (dot separated). See
+        *            {@link net.sourceforge.phpdt.core.IType#getTypeQualifiedName(char)}.
+        * @param lineDelimiter
+        *            The line delimiter to be used.
+        * @return Returns the new content or <code>null</code> if the code
+        *         template is undefined or empty. The returned content is
+        *         unformatted and is not indented.
+        * @throws CoreException
+        *             Thrown when the evaluation of the code template fails.
+        */
+       public static String getTypeComment(ICompilationUnit cu,
+                       String typeQualifiedName, String lineDelimiter)
+                       throws CoreException {
+               return StubUtility.getTypeComment(cu, typeQualifiedName, lineDelimiter);
+       }
+
+       /**
+        * Returns the content for a new field comment using the 'field comment'
+        * code template. The returned content is unformatted and is not indented.
+        * 
+        * @param cu
+        *            The compilation where the field is contained. The compilation
+        *            unit does not need to exist.
+        * @param typeName
+        *            The name of the field declared type.
+        * @param fieldName
+        *            The name of the field to which the comment is added.
+        * @param lineDelimiter
+        *            The line delimiter to be used.
+        * @return Returns the new content or <code>null</code> if the code
+        *         template is undefined or empty. The returned content is
+        *         unformatted and is not indented.
+        * @throws CoreException
+        *             Thrown when the evaluation of the code template fails.
+        * @since 3.0
+        */
+//     public static String getFieldComment(ICompilationUnit cu, String typeName,
+//                     String fieldName, String lineDelimiter) throws CoreException {
+//             return StubUtility.getFieldComment(cu, typeName, fieldName,
+//                             lineDelimiter);
+//     }
+
+       /**
+        * Returns the comment for a method or constructor using the comment code
+        * templates (constructor / method / overriding method). <code>null</code>
+        * is returned if the template is empty.
+        * 
+        * @param cu
+        *            The compilation unit to which the method belongs. The
+        *            compilation unit does not need to exist.
+        * @param declaringTypeName
+        *            Name of the type to which the method belongs. For inner types
+        *            the name must be qualified and include the outer types names
+        *            (dot separated). See
+        *            {@link net.sourceforge.phpdt.core.IType#getTypeQualifiedName(char)}.
+        * @param decl
+        *            The MethodDeclaration AST node that will be added as new
+        *            method. The node does not need to exist in an AST (no parent
+        *            needed) and does not need to resolve. See
+        *            {@link net.sourceforge.phpdt.core.dom.AST#newMethodDeclaration()}
+        *            for how to create such a node.
+        * @param overridden
+        *            The binding of the method that will be overridden by the
+        *            created method or <code>null</code> if no method is
+        *            overridden.
+        * @param lineDelimiter
+        *            The line delimiter to be used.
+        * @return Returns the generated method comment or <code>null</code> if
+        *         the code template is empty. The returned content is unformatted
+        *         and not indented (formatting required).
+        * @throws CoreException
+        *             Thrown when the evaluation of the code template fails.
+        */
+       // public static String getMethodComment(ICompilationUnit cu, String
+       // declaringTypeName, MethodDeclaration decl, IMethodBinding overridden,
+       // String lineDelimiter) throws CoreException {
+       // return StubUtility.getMethodComment(cu, declaringTypeName, decl,
+       // overridden, lineDelimiter);
+       // }
+       /**
+        * Returns the comment for a method or constructor using the comment code
+        * templates (constructor / method / overriding method). <code>null</code>
+        * is returned if the template is empty.
+        * <p>
+        * The returned string is unformatted and not indented.
+        * <p>
+        * Exception types and return type are in signature notation. e.g. a source
+        * method declared as <code>public void foo(String text, int length)</code>
+        * would return the array <code>{"QString;","I"}</code> as parameter
+        * types. See {@link net.sourceforge.phpdt.core.Signature}.
+        * 
+        * @param cu
+        *            The compilation unit to which the method belongs. The
+        *            compilation unit does not need to exist.
+        * @param declaringTypeName
+        *            Name of the type to which the method belongs. For inner types
+        *            the name must be qualified and include the outer types names
+        *            (dot separated). See
+        *            {@link net.sourceforge.phpdt.core.IType#getTypeQualifiedName(char)}.
+        * @param methodName
+        *            Name of the method.
+        * @param paramNames
+        *            Names of the parameters for the method.
+        * @param excTypeSig
+        *            Thrown exceptions (Signature notation).
+        * @param retTypeSig
+        *            Return type (Signature notation) or <code>null</code> for
+        *            constructors.
+        * @param overridden
+        *            The method that will be overridden by the created method or
+        *            <code>null</code> for non-overriding methods. If not
+        *            <code>null</code>, the method must exist.
+        * @param lineDelimiter
+        *            The line delimiter to be used.
+        * @return Returns the constructed comment or <code>null</code> if the
+        *         comment code template is empty. The returned content is
+        *         unformatted and not indented (formatting required).
+        * @throws CoreException
+        *             Thrown when the evaluation of the code template fails.
+        */
+       public static String getMethodComment(ICompilationUnit cu,
+                       String declaringTypeName, String methodName, String[] paramNames,
+                       String[] excTypeSig, String retTypeSig, IMethod overridden,
+                       String lineDelimiter) throws CoreException {
+               return StubUtility.getMethodComment(cu, declaringTypeName, methodName,
+                               paramNames, excTypeSig, retTypeSig, overridden, lineDelimiter);
+       }
+
+       /**
+        * Returns the comment for a method or constructor using the comment code
+        * templates (constructor / method / overriding method). <code>null</code>
+        * is returned if the template is empty.
+        * <p>
+        * The returned string is unformatted and not indented.
+        * 
+        * @param method
+        *            The method to be documented. The method must exist.
+        * @param overridden
+        *            The method that will be overridden by the created method or
+        *            <code>null</code> for non-overriding methods. If not
+        *            <code>null</code>, the method must exist.
+        * @param lineDelimiter
+        *            The line delimiter to be used.
+        * @return Returns the constructed comment or <code>null</code> if the
+        *         comment code template is empty. The returned string is
+        *         unformatted and and has no indent (formatting required).
+        * @throws CoreException
+        *             Thrown when the evaluation of the code template fails.
+        */
+       public static String getMethodComment(IMethod method, IMethod overridden,
+                       String lineDelimiter) throws CoreException {
+               return StubUtility.getMethodComment(method, overridden, lineDelimiter);
+       }
+
+       /**
+        * Returns the content of the body for a method or constructor using the
+        * method body templates. <code>null</code> is returned if the template is
+        * empty.
+        * <p>
+        * The returned string is unformatted and not indented.
+        * 
+        * @param cu
+        *            The compilation unit to which the method belongs. The
+        *            compilation unit does not need to exist.
+        * @param declaringTypeName
+        *            Name of the type to which the method belongs. For inner types
+        *            the name must be qualified and include the outer types names
+        *            (dot separated). See
+        *            {@link net.sourceforge.phpdt.core.IType#getTypeQualifiedName(char)}.
+        * @param methodName
+        *            Name of the method.
+        * @param isConstructor
+        *            Defines if the created body is for a constructor.
+        * @param bodyStatement
+        *            The code to be entered at the place of the variable
+        *            ${body_statement}.
+        * @param lineDelimiter
+        *            The line delimiter to be used.
+        * @return Returns the constructed body content or <code>null</code> if
+        *         the comment code template is empty. The returned string is
+        *         unformatted and and has no indent (formatting required).
+        * @throws CoreException
+        *             Thrown when the evaluation of the code template fails.
+        */
+//     public static String getMethodBodyContent(ICompilationUnit cu,
+//                     String declaringTypeName, String methodName, boolean isConstructor,
+//                     String bodyStatement, String lineDelimiter) throws CoreException {
+//             return StubUtility.getMethodBodyContent(isConstructor, cu
+//                             .getJavaProject(), declaringTypeName, methodName,
+//                             bodyStatement, lineDelimiter);
+//     }
+
+       /**
+        * Returns the content of body for a getter method using the getter method
+        * body template. <code>null</code> is returned if the template is empty.
+        * <p>
+        * The returned string is unformatted and not indented.
+        * 
+        * @param cu
+        *            The compilation unit to which the method belongs. The
+        *            compilation unit does not need to exist.
+        * @param declaringTypeName
+        *            Name of the type to which the method belongs. For inner types
+        *            the name must be qualified and include the outer types names
+        *            (dot separated). See
+        *            {@link net.sourceforge.phpdt.core.IType#getTypeQualifiedName(char)}.
+        * @param methodName
+        *            The name of the getter method.
+        * @param fieldName
+        *            The name of the field to get in the getter method,
+        *            corresponding to the template variable for ${field}.
+        * @param lineDelimiter
+        *            The line delimiter to be used.
+        * @return Returns the constructed body content or <code>null</code> if
+        *         the comment code template is empty. The returned string is
+        *         unformatted and and has no indent (formatting required).
+        * @throws CoreException
+        *             Thrown when the evaluation of the code template fails.
+        * @since 3.0
+        */
+//     public static String getGetterMethodBodyContent(ICompilationUnit cu,
+//                     String declaringTypeName, String methodName, String fieldName,
+//                     String lineDelimiter) throws CoreException {
+//             return StubUtility.getGetterMethodBodyContent(cu.getJavaProject(),
+//                             declaringTypeName, methodName, fieldName, lineDelimiter);
+//     }
+
+       /**
+        * Returns the content of body for a setter method using the setter method
+        * body template. <code>null</code> is returned if the template is empty.
+        * <p>
+        * The returned string is unformatted and not indented.
+        * 
+        * @param cu
+        *            The compilation unit to which the method belongs. The
+        *            compilation unit does not need to exist.
+        * @param declaringTypeName
+        *            Name of the type to which the method belongs. For inner types
+        *            the name must be qualified and include the outer types names
+        *            (dot separated). See
+        *            {@link net.sourceforge.phpdt.core.IType#getTypeQualifiedName(char)}.
+        * @param methodName
+        *            The name of the setter method.
+        * @param fieldName
+        *            The name of the field to be set in the setter method,
+        *            corresponding to the template variable for ${field}.
+        * @param paramName
+        *            The name of the parameter passed to the setter method,
+        *            corresponding to the template variable for $(param).
+        * @param lineDelimiter
+        *            The line delimiter to be used.
+        * @return Returns the constructed body content or <code>null</code> if
+        *         the comment code template is empty. The returned string is
+        *         unformatted and and has no indent (formatting required).
+        * @throws CoreException
+        *             Thrown when the evaluation of the code template fails.
+        * @since 3.0
+        */
+//     public static String getSetterMethodBodyContent(ICompilationUnit cu,
+//                     String declaringTypeName, String methodName, String fieldName,
+//                     String paramName, String lineDelimiter) throws CoreException {
+//             return StubUtility.getSetterMethodBodyContent(cu.getJavaProject(),
+//                             declaringTypeName, methodName, fieldName, paramName,
+//                             lineDelimiter);
+//     }
+
+       /**
+        * Returns the comment for a getter method using the getter comment
+        * template. <code>null</code> is returned if the template is empty.
+        * <p>
+        * The returned string is unformatted and not indented.
+        * 
+        * @param cu
+        *            The compilation unit to which the method belongs. The
+        *            compilation unit does not need to exist.
+        * @param declaringTypeName
+        *            Name of the type to which the method belongs. For inner types
+        *            the name must be qualified and include the outer types names
+        *            (dot separated). See
+        *            {@link net.sourceforge.phpdt.core.IType#getTypeQualifiedName(char)}.
+        * @param methodName
+        *            Name of the method.
+        * @param fieldName
+        *            Name of the field to get.
+        * @param fieldType
+        *            The type of the field to get.
+        * @param bareFieldName
+        *            The field name without prefix or suffix.
+        * @param lineDelimiter
+        *            The line delimiter to be used.
+        * @return Returns the generated getter comment or <code>null</code> if
+        *         the code template is empty. The returned content is not indented.
+        * @throws CoreException
+        *             Thrown when the evaluation of the code template fails.
+        * @since 3.0
+        */
+       public static String getGetterComment(ICompilationUnit cu,
+                       String declaringTypeName, String methodName, String fieldName,
+                       String fieldType, String bareFieldName, String lineDelimiter)
+                       throws CoreException {
+               return StubUtility.getGetterComment(cu, declaringTypeName, methodName,
+                               fieldName, fieldType, bareFieldName, lineDelimiter);
+       }
+
+       /**
+        * Returns the comment for a setter method using the setter method body
+        * template. <code>null</code> is returned if the template is empty.
+        * <p>
+        * The returned string is unformatted and not indented.
+        * 
+        * @param cu
+        *            The compilation unit to which the method belongs. The
+        *            compilation unit does not need to exist.
+        * @param declaringTypeName
+        *            Name of the type to which the method belongs. For inner types
+        *            the name must be qualified and include the outer types names
+        *            (dot separated). See
+        *            {@link net.sourceforge.phpdt.core.IType#getTypeQualifiedName(char)}.
+        * @param methodName
+        *            Name of the method.
+        * @param fieldName
+        *            Name of the field that is set.
+        * @param fieldType
+        *            The type of the field that is to set.
+        * @param paramName
+        *            The name of the parameter that used to set.
+        * @param bareFieldName
+        *            The field name without prefix or suffix.
+        * @param lineDelimiter
+        *            The line delimiter to be used.
+        * @return Returns the generated setter comment or <code>null</code> if
+        *         the code template is empty. The returned comment is not indented.
+        * @throws CoreException
+        *             Thrown when the evaluation of the code template fails.
+        * @since 3.0
+        */
+       public static String getSetterComment(ICompilationUnit cu,
+                       String declaringTypeName, String methodName, String fieldName,
+                       String fieldType, String paramName, String bareFieldName,
+                       String lineDelimiter) throws CoreException {
+               return StubUtility.getSetterComment(cu, declaringTypeName, methodName,
+                               fieldName, fieldType, paramName, bareFieldName, lineDelimiter);
+       }
+}