X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/template/php/CompilationUnitContextType.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/template/php/CompilationUnitContextType.java index 5c95992..085d382 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/template/php/CompilationUnitContextType.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/template/php/CompilationUnitContextType.java @@ -1,42 +1,43 @@ -/* - * (c) Copyright IBM Corp. 2000, 2001. - * All Rights Reserved. - */ +/******************************************************************************* + * 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.internal.corext.template.php; +import net.sourceforge.phpdt.core.ICompilationUnit; +import net.sourceforge.phpdt.core.IJavaElement; +import net.sourceforge.phpdt.core.IMethod; +import net.sourceforge.phpdt.core.JavaModelException; +import net.sourceforge.phpdt.core.Signature; + import org.eclipse.jface.text.IDocument; -/* -import org.eclipse.jdt.core.ICompilationUnit; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IMethod; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jdt.core.Signature; -*/ -import net.sourceforge.phpdt.internal.corext.template.ContextType; -import net.sourceforge.phpdt.internal.corext.template.TemplateContext; -import net.sourceforge.phpdt.internal.corext.template.TemplateVariable; +import org.eclipse.jface.text.templates.GlobalTemplateVariables; +import org.eclipse.jface.text.templates.TemplateContext; +import org.eclipse.jface.text.templates.TemplateContextType; +import org.eclipse.jface.text.templates.TemplateException; +import org.eclipse.jface.text.templates.TemplateVariable; +import org.eclipse.jface.text.templates.TemplateVariableResolver; /** * Compilation unit context type. */ -public abstract class CompilationUnitContextType extends ContextType { - - /** the document */ - protected IDocument fDocument; - - /** the completion position within the document string */ - protected int fPosition; - - /** the associated compilation unit, may be null */ - //protected ICompilationUnit fCompilationUnit; -/* - protected static class ReturnType extends TemplateVariable { - public ReturnType() { - super(JavaTemplateMessages.getString("CompilationUnitContextType.variable.name.return.type"), JavaTemplateMessages.getString("CompilationUnitContextType.variable.description.return.type")); //$NON-NLS-1$ //$NON-NLS-2$ - } - - public String evaluate(TemplateContext context) { - IJavaElement element= ((CompilationUnitContext) context).findEnclosingElement(IJavaElement.METHOD); +public abstract class CompilationUnitContextType extends TemplateContextType { + + protected static class ReturnType extends TemplateVariableResolver { + public ReturnType() { + super( + "return_type", JavaTemplateMessages.getString("CompilationUnitContextType.variable.description.return.type")); //$NON-NLS-1$ //$NON-NLS-2$ + } + + protected String resolve(TemplateContext context) { + IJavaElement element = ((CompilationUnitContext) context) + .findEnclosingElement(IJavaElement.METHOD); if (element == null) return null; @@ -46,89 +47,143 @@ public abstract class CompilationUnitContextType extends ContextType { return null; } } - - public boolean isResolved(TemplateContext context) { - return evaluate(context) != null; - } } - protected static class File extends TemplateVariable { + protected static class File extends TemplateVariableResolver { public File() { - super(JavaTemplateMessages.getString("CompilationUnitContextType.variable.name.file"), JavaTemplateMessages.getString("CompilationUnitContextType.variable.description.file")); //$NON-NLS-1$ //$NON-NLS-2$ + super( + "file", JavaTemplateMessages.getString("CompilationUnitContextType.variable.description.file")); //$NON-NLS-1$ //$NON-NLS-2$ } - public String evaluate(TemplateContext context) { - ICompilationUnit unit= ((CompilationUnitContext) context).getCompilationUnit(); - + + protected String resolve(TemplateContext context) { + ICompilationUnit unit = ((CompilationUnitContext) context) + .getCompilationUnit(); + return (unit == null) ? null : unit.getElementName(); - return null; } - public boolean isResolved(TemplateContext context) { - return evaluate(context) != null; - } + + /* + * @see org.eclipse.jface.text.templates.TemplateVariableResolver#isUnambiguous(org.eclipse.jface.text.templates.TemplateContext) + */ + protected boolean isUnambiguous(TemplateContext context) { + return resolve(context) != null; + } } - protected static class EnclosingJavaElement extends TemplateVariable { + protected static class PrimaryTypeName extends TemplateVariableResolver { + public PrimaryTypeName() { + super( + "primary_type_name", JavaTemplateMessages.getString("CompilationUnitContextType.variable.description.primary.type.name")); //$NON-NLS-1$ //$NON-NLS-2$ + + } + + protected String resolve(TemplateContext context) { + ICompilationUnit unit = ((CompilationUnitContext) context) + .getCompilationUnit(); + if (unit == null) + return null; + String elementName = unit.getElementName(); + return elementName.substring(0, elementName.lastIndexOf('.')); + } + + /* + * @see org.eclipse.jface.text.templates.TemplateVariableResolver#isUnambiguous(org.eclipse.jface.text.templates.TemplateContext) + */ + protected boolean isUnambiguous(TemplateContext context) { + return resolve(context) != null; + } + } + + protected static class EnclosingJavaElement extends + TemplateVariableResolver { protected final int fElementType; - - public EnclosingJavaElement(String name, String description, int elementType) { + + public EnclosingJavaElement(String name, String description, + int elementType) { super(name, description); - fElementType= elementType; + fElementType = elementType; } - public String evaluate(TemplateContext context) { - IJavaElement element= ((CompilationUnitContext) context).findEnclosingElement(fElementType); - return (element == null) ? null : element.getElementName(); + + protected String resolve(TemplateContext context) { + IJavaElement element = ((CompilationUnitContext) context) + .findEnclosingElement(fElementType); + return (element == null) ? null : element.getElementName(); } - public boolean isResolved(TemplateContext context) { - return evaluate(context) != null; + + /* + * @see org.eclipse.jface.text.templates.TemplateVariableResolver#isUnambiguous(org.eclipse.jface.text.templates.TemplateContext) + */ + protected boolean isUnambiguous(TemplateContext context) { + return resolve(context) != null; } } - + protected static class Method extends EnclosingJavaElement { public Method() { - super(JavaTemplateMessages.getString("CompilationUnitContextType.variable.name.enclosing.method"), JavaTemplateMessages.getString("CompilationUnitContextType.variable.description.enclosing.method"), IJavaElement.METHOD); //$NON-NLS-1$ //$NON-NLS-2$ + super( + "enclosing_method", JavaTemplateMessages.getString("CompilationUnitContextType.variable.description.enclosing.method"), IJavaElement.METHOD); //$NON-NLS-1$ //$NON-NLS-2$ } } protected static class Type extends EnclosingJavaElement { public Type() { - super(JavaTemplateMessages.getString("CompilationUnitContextType.variable.name.enclosing.type"), JavaTemplateMessages.getString("CompilationUnitContextType.variable.description.enclosing.type"), IJavaElement.TYPE); //$NON-NLS-1$ //$NON-NLS-2$ + super( + "enclosing_type", JavaTemplateMessages.getString("CompilationUnitContextType.variable.description.enclosing.type"), IJavaElement.TYPE); //$NON-NLS-1$ //$NON-NLS-2$ } } + /* + * protected static class SuperClass extends EnclosingJavaElement { public + * Type() { super("super_class", + * TemplateMessages.getString("JavaContextType.variable.description.type"), + * IJavaElement.TYPE); } } + */ protected static class Package extends EnclosingJavaElement { public Package() { - super(JavaTemplateMessages.getString("CompilationUnitContextType.variable.name.enclosing.package"), JavaTemplateMessages.getString("CompilationUnitContextType.variable.description.enclosing.package"), IJavaElement.PACKAGE_FRAGMENT); //$NON-NLS-1$ //$NON-NLS-2$ + super( + "enclosing_package", JavaTemplateMessages.getString("CompilationUnitContextType.variable.description.enclosing.package"), IJavaElement.PACKAGE_FRAGMENT); //$NON-NLS-1$ //$NON-NLS-2$ } - } + } protected static class Project extends EnclosingJavaElement { public Project() { - super(JavaTemplateMessages.getString("CompilationUnitContextType.variable.name.enclosing.project"), JavaTemplateMessages.getString("CompilationUnitContextType.variable.description.enclosing.project"), IJavaElement.JAVA_PROJECT); //$NON-NLS-1$ //$NON-NLS-2$ + super( + "enclosing_project", JavaTemplateMessages.getString("CompilationUnitContextType.variable.description.enclosing.project"), IJavaElement.JAVA_PROJECT); //$NON-NLS-1$ //$NON-NLS-2$ } - } - + } - protected static class Arguments extends TemplateVariable { + /* + * protected static class Project2 extends TemplateVariableResolver { public + * Project2() { super("project", + * TemplateMessages.getString("JavaContextType.variable.description.project")); } + * public String evaluate(TemplateContext context) { ICompilationUnit unit= + * ((JavaContext) context).getUnit(); return (unit == null) ? null : + * unit.getJavaProject().getElementName(); } } + */ + protected static class Arguments extends TemplateVariableResolver { public Arguments() { - super(JavaTemplateMessages.getString("CompilationUnitContextType.variable.name.enclosing.method.arguments"), JavaTemplateMessages.getString("CompilationUnitContextType.variable.description.enclosing.method.arguments")); //$NON-NLS-1$ //$NON-NLS-2$ + super( + "enclosing_method_arguments", JavaTemplateMessages.getString("CompilationUnitContextType.variable.description.enclosing.method.arguments")); //$NON-NLS-1$ //$NON-NLS-2$ } - public String evaluate(TemplateContext context) { - IJavaElement element= ((CompilationUnitContext) context).findEnclosingElement(IJavaElement.METHOD); + + protected String resolve(TemplateContext context) { + IJavaElement element = ((CompilationUnitContext) context) + .findEnclosingElement(IJavaElement.METHOD); if (element == null) return null; - - IMethod method= (IMethod) element; - + + IMethod method = (IMethod) element; + try { - String[] arguments= method.getParameterNames(); - StringBuffer buffer= new StringBuffer(); - - for (int i= 0; i < arguments.length; i++) { + String[] arguments = method.getParameterNames(); + StringBuffer buffer = new StringBuffer(); + + for (int i = 0; i < arguments.length; i++) { if (i > 0) buffer.append(", "); //$NON-NLS-1$ - buffer.append(arguments[i]); + buffer.append(arguments[i]); } - + return buffer.toString(); } catch (JavaModelException e) { @@ -136,22 +191,43 @@ public abstract class CompilationUnitContextType extends ContextType { } } } -*/ + + /* + * protected static class Line extends TemplateVariableResolver { public + * Line() { super("line", + * TemplateMessages.getString("CompilationUnitContextType.variable.description.line")); } + * public String evaluate(TemplateContext context) { return + * ((JavaTemplateContext) context).guessLineNumber(); } } + */ /* * @see ContextType#ContextType(String) */ public CompilationUnitContextType(String name) { - super(name); + super(name); } - /** - * Sets context parameters. Needs to be called before createContext(). + public abstract CompilationUnitContext createContext(IDocument document, + int completionPosition, int length, ICompilationUnit compilationUnit); + + /* + * (non-Javadoc) + * + * @see net.sourceforge.phpdt.internal.corext.template.ContextType#validateVariables(net.sourceforge.phpdt.internal.corext.template.TemplateVariable[]) */ - public void setContextParameters(IDocument document, int position) {//, ICompilationUnit compilationUnit) { - fDocument= document; - fPosition= position; -// fCompilationUnit= compilationUnit; + protected void validateVariables(TemplateVariable[] variables) + throws TemplateException { + // check for multiple cursor variables + for (int i = 0; i < variables.length; i++) { + TemplateVariable var = variables[i]; + if (var.getType().equals(GlobalTemplateVariables.Cursor.NAME)) { + if (var.getOffsets().length > 1) { + throw new TemplateException( + JavaTemplateMessages + .getString("ContextType.error.multiple.cursor.variables")); //$NON-NLS-1$ + } + } + } } }