package com.google.jstestdriver.idea.assertFramework.codeInsight; import com.intellij.codeInsight.template.Template; import com.intellij.codeInsight.template.TemplateManager; import com.intellij.lang.javascript.psi.JSFile; import com.intellij.openapi.editor.CaretModel; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class GenerateActionContext { private final JSFile myJsFile; private final Editor myEditor; private final int myDocumentCaretOffset; GenerateActionContext(@NotNull JSFile jsFile, @NotNull Editor editor) { myJsFile = jsFile; myEditor = editor; myDocumentCaretOffset = myEditor.getCaretModel().getOffset(); } @NotNull public JSFile getJsFile() { return myJsFile; } public int getDocumentCaretOffset() { return myDocumentCaretOffset; } @NotNull public Editor getEditor() { return myEditor; } @NotNull public Document getDocument() { return myEditor.getDocument(); } @NotNull public Project getProject() { return myJsFile.getProject(); } @NotNull public CaretModel getCaretModel() { return myEditor.getCaretModel(); } @Nullable public PsiElement getPsiElementUnderCaret() { PsiElement element = myJsFile.findElementAt(getDocumentCaretOffset()); if (element == null) { element = myJsFile.getLastChild(); } return element; } public void startTemplate(@NotNull Template template) { TemplateManager templateManager = TemplateManager.getInstance(getProject()); templateManager.startTemplate(getEditor(), "", template); } }