mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-58417 vcs: enable "annotate previous revision" action for localy modified files
This commit is contained in:
+15
@@ -1,10 +1,12 @@
|
||||
package com.intellij.openapi.vcs.actions;
|
||||
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.vcs.AbstractVcs;
|
||||
import com.intellij.openapi.vcs.annotate.FileAnnotation;
|
||||
import com.intellij.openapi.vcs.history.VcsFileRevision;
|
||||
import com.intellij.openapi.vcs.history.VcsRevisionNumber;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -15,6 +17,7 @@ import java.util.Map;
|
||||
|
||||
class AnnotatePreviousRevisionAction extends AnnotateRevisionAction {
|
||||
@Nullable private final List<VcsFileRevision> myRevisions;
|
||||
@Nullable private final VcsFileRevision myLastRevision;
|
||||
|
||||
public AnnotatePreviousRevisionAction(@NotNull FileAnnotation annotation, @NotNull AbstractVcs vcs) {
|
||||
super("Annotate Previous Revision", "Annotate successor of selected revision in new tab", AllIcons.Actions.Annotate,
|
||||
@@ -22,6 +25,7 @@ class AnnotatePreviousRevisionAction extends AnnotateRevisionAction {
|
||||
List<VcsFileRevision> revisions = annotation.getRevisions();
|
||||
if (revisions == null) {
|
||||
myRevisions = null;
|
||||
myLastRevision = null;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -36,6 +40,8 @@ class AnnotatePreviousRevisionAction extends AnnotateRevisionAction {
|
||||
for (int i = 0; i < annotation.getLineCount(); i++) {
|
||||
myRevisions.add(map.get(annotation.getLineRevisionNumber(i)));
|
||||
}
|
||||
|
||||
myLastRevision = ContainerUtil.getFirstItem(revisions);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -43,4 +49,13 @@ class AnnotatePreviousRevisionAction extends AnnotateRevisionAction {
|
||||
public List<VcsFileRevision> getRevisions() {
|
||||
return myRevisions;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected VcsFileRevision getFileRevision(@NotNull AnActionEvent e) {
|
||||
if (getCurrentLine() == -1) {
|
||||
return myLastRevision;
|
||||
}
|
||||
return super.getFileRevision(e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,4 +98,8 @@ abstract class AnnotateRevisionAction extends AnnotateRevisionActionBase impleme
|
||||
public void consume(Integer integer) {
|
||||
currentLine = integer;
|
||||
}
|
||||
|
||||
public int getCurrentLine() {
|
||||
return currentLine;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user