use of com.intellij.openapi.fileEditor.impl.text.TextEditorPsiDataProvider in project intellij-community by JetBrains.
the class RenameTo method applyFix.
@SuppressWarnings({ "SSBasedInspection" })
public void applyFix(@NotNull final Project project, @NotNull final ProblemDescriptor descriptor) {
DictionarySuggestionProvider provider = findProvider();
if (provider != null) {
provider.setActive(true);
}
Editor editor = getEditorFromFocus();
HashMap<String, Object> map = new HashMap<>();
PsiElement psiElement = descriptor.getPsiElement();
if (psiElement == null)
return;
PsiFile containingFile = psiElement.getContainingFile();
if (editor == null) {
editor = InjectedLanguageUtil.openEditorFor(containingFile, project);
}
if (editor == null)
return;
if (editor instanceof EditorWindow) {
map.put(CommonDataKeys.EDITOR.getName(), editor);
map.put(CommonDataKeys.PSI_ELEMENT.getName(), psiElement);
} else if (ApplicationManager.getApplication().isUnitTestMode()) {
// TextEditorComponent / FiledEditorManagerImpl give away the data in real life
map.put(CommonDataKeys.PSI_ELEMENT.getName(), new TextEditorPsiDataProvider().getData(CommonDataKeys.PSI_ELEMENT.getName(), editor, editor.getCaretModel().getCurrentCaret()));
}
final Boolean selectAll = editor.getUserData(RenameHandlerRegistry.SELECT_ALL);
try {
editor.putUserData(RenameHandlerRegistry.SELECT_ALL, true);
DataContext dataContext = SimpleDataContext.getSimpleContext(map, DataManager.getInstance().getDataContext(editor.getComponent()));
AnAction action = new RenameElementAction();
AnActionEvent event = AnActionEvent.createFromAnAction(action, null, "", dataContext);
action.actionPerformed(event);
if (provider != null) {
provider.setActive(false);
}
} finally {
editor.putUserData(RenameHandlerRegistry.SELECT_ALL, selectAll);
}
}
Aggregations