X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/corext/template/php/JavaContextType.java b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/corext/template/php/JavaContextType.java new file mode 100644 index 0000000..f121bdf --- /dev/null +++ b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/corext/template/php/JavaContextType.java @@ -0,0 +1,261 @@ +/******************************************************************************* + * Copyright (c) 2000, orporation 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 + * Sebastian Davids: sdavids@gmx.de - see bug 25376 + *******************************************************************************/ +package net.sourceforge.phpdt.internal.corext.template.php; + +import net.sourceforge.phpdt.core.ICompilationUnit; +import net.sourceforge.phpdt.core.IJavaProject; +import net.sourceforge.phpdt.internal.corext.codemanipulation.StubUtility; + +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.templates.GlobalTemplateVariables; +import org.eclipse.jface.text.templates.TemplateContext; +import org.eclipse.jface.text.templates.TemplateVariableResolver; + +/** + * A context type for java code. + */ +public class JavaContextType extends CompilationUnitContextType { + + public static final String NAME = "php"; //$NON-NLS-1$ + + // protected static class Array extends TemplateVariableResolver { + // public Array() { + // super("array", + // TemplateMessages.getString("JavaContextType.variable.description.array")); + // //$NON-NLS-1$ //$NON-NLS-2$ + // } + // protected String[] resolveAll(TemplateContext context) { + // return ((JavaContext) context).guessArrays(); + // } + // /* + // * @see + // org.eclipse.jface.text.templates.TemplateVariableResolver#resolve(org.eclipse.jface.text.templates.TemplateVariable, + // org.eclipse.jface.text.templates.TemplateContext) + // */ + // public void resolve(TemplateVariable variable, TemplateContext context) { + // if (variable instanceof MultiVariable) { + // JavaContext jc= (JavaContext) context; + // MultiVariable mv= (MultiVariable) variable; + // String[] bindings= resolveAll(context); + // if (bindings.length > 0) { + // mv.setValues(bindings); + // MultiVariableGuess guess= jc.getMultiVariableGuess(); + // if (guess == null) { + // guess= new MultiVariableGuess(mv); + // jc.setMultiVariableGuess(guess); + // } + // } + // if (bindings.length > 1) + // variable.setUnambiguous(false); + // else + // variable.setUnambiguous(isUnambiguous(context)); + // } else + // super.resolve(variable, context); + // } + // } + // + // protected static class ArrayType extends TemplateVariableResolver { + // public ArrayType() { + // super("array_type", + // TemplateMessages.getString("JavaContextType.variable.description.array.type")); + // //$NON-NLS-1$ //$NON-NLS-2$ + // } + // protected String[] resolveAll(TemplateContext context) { + // + // String[] arrayTypes= ((JavaContext) context).guessArrayTypes(); + // if (arrayTypes != null) + // return arrayTypes; + // else + // return super.resolveAll(context); + // } + // + // /* + // * @see + // org.eclipse.jface.text.templates.TemplateVariableResolver#resolve(org.eclipse.jface.text.templates.TemplateVariable, + // org.eclipse.jface.text.templates.TemplateContext) + // */ + // public void resolve(TemplateVariable variable, TemplateContext context) { + // if (variable instanceof MultiVariable) { + // MultiVariable mv= (MultiVariable) variable; + // String[] arrays= ((JavaContext) context).guessArrays(); + // String[][] types= ((JavaContext) context).guessGroupedArrayTypes(); + // + // for (int i= 0; i < arrays.length; i++) { + // mv.setValues(arrays[i], types[i]); + // } + // + // if (arrays.length > 1 || types.length == 1 && types[0].length > 1) + // variable.setUnambiguous(false); + // else + // variable.setUnambiguous(isUnambiguous(context)); + // + // } else + // super.resolve(variable, context); + // } + // } + // + // protected static class ArrayElement extends TemplateVariableResolver { + // public ArrayElement() { + // super("array_element", + // TemplateMessages.getString("JavaContextType.variable.description.array.element")); + // //$NON-NLS-1$ //$NON-NLS-2$ + // } + // protected String[] resolveAll(TemplateContext context) { + // return ((JavaContext) context).guessArrayElements(); + // } + // + // /* + // * @see + // org.eclipse.jface.text.templates.TemplateVariableResolver#resolve(org.eclipse.jface.text.templates.TemplateVariable, + // org.eclipse.jface.text.templates.TemplateContext) + // */ + // public void resolve(TemplateVariable variable, TemplateContext context) { + // if (variable instanceof MultiVariable) { + // MultiVariable mv= (MultiVariable) variable; + // String[] arrays= ((JavaContext) context).guessArrays(); + // String[][] elems= ((JavaContext) context).guessGroupedArrayElements(); + // + // for (int i= 0; i < arrays.length; i++) { + // mv.setValues(arrays[i], elems[i]); + // } + // + // if (arrays.length > 1 || elems.length == 1 && elems[0].length > 1) + // variable.setUnambiguous(false); + // else + // variable.setUnambiguous(isUnambiguous(context)); + // + // } else + // super.resolve(variable, context); + // } + // } + // + // protected static class Index extends TemplateVariableResolver { + // public Index() { + // super("index", + // TemplateMessages.getString("JavaContextType.variable.description.index")); + // //$NON-NLS-1$ //$NON-NLS-2$ + // } + // protected String resolve(TemplateContext context) { + // return ((JavaContext) context).getIndex(); + // } + // } + // + // protected static class Collection extends TemplateVariableResolver { + // public Collection() { + // super("collection", + // TemplateMessages.getString("JavaContextType.variable.description.collection")); + // //$NON-NLS-1$ //$NON-NLS-2$ + // } + // + // protected String[] resolveAll(TemplateContext context) { + // String[] collections= ((JavaContext) context).guessCollections(); + // if (collections.length > 0) + // return collections; + // else + // return super.resolveAll(context); + // } + // } + // + // protected static class Iterator extends TemplateVariableResolver { + // + // public Iterator() { + // super("iterator", + // TemplateMessages.getString("JavaContextType.variable.description.iterator")); + // //$NON-NLS-1$ //$NON-NLS-2$ + // } + // protected String resolve(TemplateContext context) { + // JavaContext javaContext= (JavaContext) context; + // + // if (!context.isReadOnly()) + // javaContext.addIteratorImport(); + // + // return javaContext.getIterator(); + // } + // } + // + protected static class Todo extends TemplateVariableResolver { + + public Todo() { + super( + "todo", JavaTemplateMessages.getString("JavaContextType.variable.description.todo")); //$NON-NLS-1$ //$NON-NLS-2$ + } + + protected String resolve(TemplateContext context) { + JavaContext javaContext = (JavaContext) context; + ICompilationUnit compilationUnit = javaContext.getCompilationUnit(); + if (compilationUnit == null) + return "XXX"; //$NON-NLS-1$ + + IJavaProject javaProject = compilationUnit.getJavaProject(); + String todoTaskTag = StubUtility.getTodoTaskTag(javaProject); + if (todoTaskTag == null) + return "XXX"; //$NON-NLS-1$ + + return todoTaskTag; + } + } + + /* + * protected static class Arguments extends SimpleVariableResolver { public + * Arguments() { super("arguments", + * TemplateMessages.getString("JavaContextType.variable.description.arguments"), + * ""); } } + */ + + /** + * Creates a java context type. + */ + public JavaContextType() { + super(NAME); + + // global + addResolver(new GlobalTemplateVariables.Cursor()); + addResolver(new GlobalTemplateVariables.WordSelection()); + addResolver(new GlobalTemplateVariables.LineSelection()); + addResolver(new GlobalTemplateVariables.Dollar()); + addResolver(new GlobalTemplateVariables.Date()); + addResolver(new GlobalTemplateVariables.Year()); + addResolver(new GlobalTemplateVariables.Time()); + addResolver(new GlobalTemplateVariables.User()); + + // compilation unit + addResolver(new File()); + addResolver(new PrimaryTypeName()); + addResolver(new ReturnType()); + addResolver(new Method()); + addResolver(new Type()); + addResolver(new Package()); + addResolver(new Project()); + addResolver(new Arguments()); + + // java + // addResolver(new Array()); + // addResolver(new ArrayType()); + // addResolver(new ArrayElement()); + // addResolver(new Index()); + // addResolver(new Iterator()); + // addResolver(new Collection()); + addResolver(new Todo()); + } + + /* + * (non-Javadoc) + * + * @see net.sourceforge.phpdt.internal.corext.template.java.CompilationUnitContextType#createContext(org.eclipse.jface.text.IDocument, + * int, int, net.sourceforge.phpdt.core.ICompilationUnit) + */ + public CompilationUnitContext createContext(IDocument document, int offset, + int length, ICompilationUnit compilationUnit) { + return new JavaContext(this, document, offset, length, compilationUnit); + } + +}