IDEA-130874 diff: show "Revert dialog" if no line markers selected by caret

This commit is contained in:
Aleksey Pivovarov
2014-10-07 16:08:36 +04:00
parent 5063b3b57f
commit 07fe06ea7c
@@ -44,6 +44,11 @@ public class RollbackLineStatusAction extends DumbAwareAction {
e.getPresentation().setEnabledAndVisible(false);
return;
}
if (!isSomeChangeSelected(editor, tracker)) {
e.getPresentation().setVisible(true);
e.getPresentation().setEnabled(false);
return;
}
e.getPresentation().setEnabledAndVisible(true);
}
@@ -57,6 +62,14 @@ public class RollbackLineStatusAction extends DumbAwareAction {
rollback(tracker, editor, null);
}
protected static boolean isSomeChangeSelected(@NotNull Editor editor, @NotNull LineStatusTracker tracker) {
List<Caret> carets = editor.getCaretModel().getAllCarets();
if (carets.size() != 1) return true;
Caret caret = carets.get(0);
if (caret.hasSelection()) return true;
return tracker.getRangeForLine(caret.getLogicalPosition().line) != null;
}
protected static void rollback(@NotNull LineStatusTracker tracker, @Nullable Editor editor, @Nullable Range range) {
assert editor != null || range != null;