/*******************************************************************************
* This file is part of the Symfony eclipse plugin.
*
* (c) Robert Gruendler <r.gruendler@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
******************************************************************************/
package com.dubture.symfony.ui.editor.template;
import org.eclipse.dltk.core.ISourceModule;
import org.eclipse.dltk.ui.templates.ScriptTemplateContext;
import org.eclipse.dltk.ui.templates.ScriptTemplateContextType;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.templates.ContextTypeRegistry;
/**
*
* Add resolvers for plugin variables in code templates.
*
*
* @author Robert Gruendler <r.gruendler@gmail.com>
*
*/
public class CodeTemplateContextType extends ScriptTemplateContextType {
private static final String CONTROLLER_CONTEXTTYPE = "php_new_file_context";
public ScriptTemplateContext createContext(IDocument document,
int completionPosition, int length, ISourceModule sourceModule, CodeTemplateVariableHolder varHolder) {
return new SymfonyTemplateContext(this, document, completionPosition, length, sourceModule, varHolder);
}
public CodeTemplateContextType(String contextName, String name) {
super(contextName, name);
//TODO: externalize Strings
addResolver(new NamespaceVariableResolver("namespace", "Symfony Namespace Resolver"));
addResolver(new ClassNameVariableResolver("class_name", "Symfony Classname Resolver"));
addResolver(new UseStatementVariableResolver("use_parent", "Symfony UseStatement Resolver"));
addResolver(new ExtendsStatementVariableResolver("extends", "Symfony ExtendsStatement Resolver"));
addResolver(new InterfaceVariableResolver("interfaces", "Symfony Interface Resolver"));
addResolver(new InterfaceMethodsVariableResolver("supermethods", "Symfony Supermethods Resolver"));
addResolver(new ClassModifierVariableResolver("class_modifiers", "Symfony classmodifier resolver"));
}
public CodeTemplateContextType(String contextName) {
this(contextName, contextName);
}
public static void registerContextTypes(ContextTypeRegistry registry) {
registry.addContextType(new CodeTemplateContextType(CodeTemplateContextType.CONTROLLER_CONTEXTTYPE));
}
@Override
public ScriptTemplateContext createContext(IDocument document,
int completionPosition, int length, ISourceModule sourceModule) {
return new SymfonyTemplateContext(this, document, completionPosition, length, sourceModule, null);
}
}