ensure the focused editor in getData

This commit is contained in:
Gregory.Shrago
2016-09-12 16:49:16 +03:00
parent abf0b20643
commit aa25113286
@@ -27,6 +27,7 @@ import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.EmptyAction;
import com.intellij.openapi.actionSystem.IdeActions;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.command.undo.UndoUtil;
import com.intellij.openapi.editor.*;
import com.intellij.openapi.editor.colors.EditorColorsManager;
@@ -45,7 +46,6 @@ import com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl;
import com.intellij.openapi.fileTypes.SyntaxHighlighter;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.util.registry.Registry;
@@ -262,12 +262,9 @@ public class LanguageConsoleImpl extends ConsoleViewImpl implements LanguageCons
}
private void setPromptInner(@Nullable final String prompt) {
UIUtil.invokeAndWaitIfNeeded(new Runnable() {
@Override
public void run() {
if (!myConsoleEditor.isDisposed()) {
myConsoleEditor.setPrefixTextAndAttributes(prompt, myPromptAttributes.getAttributes());
}
UIUtil.invokeAndWaitIfNeeded((Runnable)() -> {
if (!myConsoleEditor.isDisposed()) {
myConsoleEditor.setPrefixTextAndAttributes(prompt, myPromptAttributes.getAttributes());
}
});
}
@@ -453,18 +450,7 @@ public class LanguageConsoleImpl extends ConsoleViewImpl implements LanguageCons
@Nullable
@Override
public Object getData(@NonNls String dataId) {
Object data = super.getData(dataId);
if (data != null) {
return data;
}
else if (OpenFileDescriptor.NAVIGATE_IN_EDITOR.is(dataId)) {
return myConsoleEditor;
}
else if (getProject().isInitialized()) {
Caret caret = myConsoleEditor.getCaretModel().getCurrentCaret();
return FileEditorManagerEx.getInstanceEx(getProject()).getData(dataId, myConsoleEditor, caret);
}
return null;
return super.getData(dataId);
}
private void installEditorFactoryListener() {
@@ -555,12 +541,7 @@ public class LanguageConsoleImpl extends ConsoleViewImpl implements LanguageCons
@NotNull
public PsiFile getFile() {
return ApplicationManager.getApplication().runReadAction(new Computable<PsiFile>() {
@Override
public PsiFile compute() {
return PsiUtilCore.getPsiFile(project, virtualFile);
}
});
return ReadAction.compute(() -> PsiUtilCore.getPsiFile(project, virtualFile));
}
@NotNull
@@ -591,12 +572,26 @@ public class LanguageConsoleImpl extends ConsoleViewImpl implements LanguageCons
EditorSettings editorSettings = editor.getSettings();
editorSettings.setAdditionalLinesCount(1);
editorSettings.setAdditionalColumnsCount(1);
DataManager.registerDataProvider(editor.getComponent(), (dataId) -> getEditorData(editor, dataId));
}
@NotNull
PsiFile getFileSafe() {
return file == null || !file.isValid() ? file = getFile() : file;
}
@Nullable
protected Object getEditorData(@NotNull EditorEx editor, String dataId) {
if (OpenFileDescriptor.NAVIGATE_IN_EDITOR.is(dataId)) {
return editor;
}
else if (project.isInitialized()) {
Caret caret = editor.getCaretModel().getCurrentCaret();
return FileEditorManagerEx.getInstanceEx(project).getData(dataId, editor, caret);
}
return null;
}
}
private class MyLayout extends AbstractLayoutManager {