IDEA-58417 vcs: enable "annotate previous revision" action for localy modified files

This commit is contained in:
Aleksey Pivovarov
2016-01-11 13:50:38 +03:00
parent 8caa54c0e3
commit 74c4f7dd0c
2 changed files with 19 additions and 0 deletions
@@ -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;
}
}