package com.google.jstestdriver.idea.assertFramework.codeInsight; import com.intellij.codeInsight.completion.InsertionContext; import com.intellij.codeInsight.lookup.LookupElementPresentation; import com.intellij.codeInsight.lookup.LookupItem; import com.intellij.codeInsight.template.Template; import com.intellij.codeInsight.template.TemplateManager; import org.jetbrains.annotations.NotNull; public abstract class MethodTemplateLookupElement extends LookupItem<String> { private final Template myTemplate; protected MethodTemplateLookupElement( @NotNull String lookupString, @NotNull Template template ) { super(lookupString, lookupString); myTemplate = template; setPriority(4.0); // to outweigh LookupElements from JSCompletionContributor } public abstract void renderElement(LookupElementPresentation presentation); @Override public void handleInsert(final InsertionContext context) { context.getDocument().deleteString(context.getStartOffset(), context.getTailOffset()); context.setAddCompletionChar(false); TemplateManager templateManager = TemplateManager.getInstance(context.getProject()); templateManager.startTemplate(context.getEditor(), "", myTemplate); } }