package com.siberika.idea.pascal.ide.actions; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.Nullable; /** * Author: George Bakhtadze * Date: 26/11/2015 */ public abstract class PascalAction extends AnAction { private static final Logger LOG = Logger.getInstance(PascalAction.class); @Nullable protected static PsiElement getElement(AnActionEvent e) { PsiFile file = getFile(e); Editor editor = getEditor(e); if ((null == file) || (null == editor)) { return null; } return file.findElementAt(editor.getCaretModel().getOffset()); } @Override public void actionPerformed(AnActionEvent e) { try { doActionPerformed(e); } catch (Exception e1) { LOG.info("Action error", e1); } } protected abstract void doActionPerformed(AnActionEvent e); protected static Editor getEditor(AnActionEvent e) { return e.getData(PlatformDataKeys.EDITOR); } protected static PsiFile getFile(AnActionEvent e) { return e.getData(LangDataKeys.PSI_FILE); } }