RefactoringActionHandler (@NotNull DataContext dataContext) { PsiElement element = null; Editor editor = CommonDataKeys.EDITOR.getData(dataContext); PsiFile file = CommonDataKeys.PSI_FILE.getData(dataContext); if (editor != null && file != null) { element = getElementAtCaret(editor, file); if (element != null) { RefactoringActionHandler handler = getHandler(element.getLanguage(), element); if (handler != null) { return handler; } } } PsiElement referenced = CommonDataKeys.PSI_ELEMENT.getData(dataContext); if (referenced != null) { RefactoringActionHandler handler = getHandler(referenced.getLanguage(), referenced); if (handler != null) { return handler; } } PsiElement[] psiElements = LangDataKeys.PSI_ELEMENT_ARRAY.getData(dataContext); if (psiElements != null && psiElements.length > 1) { RefactoringActionHandler handler = getHandler(psiElements[0].getLanguage(), psiElements[0]); if (handler != null && isEnabledOnElements(psiElements)) { return handler; } } if (element == null) { element = referenced; } final Language[] languages = LangDataKeys.CONTEXT_LANGUAGES.getData(dataContext); if (languages != null) { for (Language language : languages) { RefactoringActionHandler handler = getHandler(language, element); if (handler != null) { return handler; } } } return null; }