mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-151671 vcs: scroll annotated content to relevant place if called from FileHistory toolwindow
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
package com.intellij.openapi.vcs.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.PlainTextFileType;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
@@ -94,6 +96,12 @@ abstract class AnnotateRevisionAction extends AnnotateRevisionActionBase impleme
|
||||
return revisions.get(currentLine);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected Editor getEditor(@NotNull AnActionEvent e) {
|
||||
return e.getData(CommonDataKeys.EDITOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void consume(Integer integer) {
|
||||
currentLine = integer;
|
||||
|
||||
+6
-1
@@ -37,6 +37,11 @@ public abstract class AnnotateRevisionActionBase extends AnAction {
|
||||
@Nullable
|
||||
protected abstract VcsFileRevision getFileRevision(@NotNull AnActionEvent e);
|
||||
|
||||
@Nullable
|
||||
protected Editor getEditor(@NotNull AnActionEvent e) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void update(@NotNull AnActionEvent e) {
|
||||
e.getPresentation().setEnabled(isEnabled(e));
|
||||
}
|
||||
@@ -70,7 +75,7 @@ public abstract class AnnotateRevisionActionBase extends AnAction {
|
||||
assert file != null;
|
||||
assert fileRevision != null;
|
||||
|
||||
final Editor editor = e.getData(CommonDataKeys.EDITOR);
|
||||
final Editor editor = getEditor(e);
|
||||
final CharSequence oldContent = editor == null ? null : editor.getDocument().getImmutableCharSequence();
|
||||
final int oldLine = editor == null ? 0 : editor.getCaretModel().getLogicalPosition().line;
|
||||
|
||||
|
||||
@@ -27,8 +27,8 @@ import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.command.WriteCommandAction;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.fileEditor.*;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
@@ -1064,6 +1064,25 @@ public class FileHistoryPanelImpl extends PanelWithActionsAndCloseButton {
|
||||
setShortcutSet(ActionManager.getInstance().getAction("Annotate").getShortcutSet());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected Editor getEditor(@NotNull AnActionEvent e) {
|
||||
VirtualFile virtualFile = getVirtualFile();
|
||||
if (virtualFile == null) return null;
|
||||
|
||||
Editor editor = e.getData(CommonDataKeys.EDITOR);
|
||||
if (editor != null) {
|
||||
VirtualFile editorFile = FileDocumentManager.getInstance().getFile(editor.getDocument());
|
||||
if (Comparing.equal(editorFile, virtualFile)) return editor;
|
||||
}
|
||||
|
||||
FileEditor fileEditor = FileEditorManager.getInstance(myProject).getSelectedEditor(virtualFile);
|
||||
if (fileEditor instanceof TextEditor) {
|
||||
return ((TextEditor)fileEditor).getEditor();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected AbstractVcs getVcs(@NotNull AnActionEvent e) {
|
||||
|
||||
Reference in New Issue
Block a user