[platform] Make scroll-to-end presentation behave like a button

It already behaved like a button, the presentation just made it look like a toggleable. #IDEA-199277

GitOrigin-RevId: c6b314786c0cfe24d32d48b495c7b7743f9b7ff8
This commit is contained in:
Bart van Helvert
2024-03-29 21:00:49 +00:00
committed by intellij-monorepo-bot
parent fce6b1d969
commit d82fc55b38
2 changed files with 6 additions and 25 deletions
@@ -286,10 +286,7 @@ public class DuplexConsoleView<S extends ConsoleView, T extends ConsoleView> ext
if (action2 instanceof ToggleUseSoftWrapsToolbarAction) {
return new MergedWrapTextAction(((ToggleUseSoftWrapsToolbarAction)action1), (ToggleUseSoftWrapsToolbarAction)action2);
}
else if (action2 instanceof ScrollToTheEndToolbarAction) {
return new MergedToggleAction(((ToggleAction)action1), (ToggleAction)action2);
}
else if (action2 instanceof ClearConsoleAction) {
else if (action2 instanceof ClearConsoleAction || action2 instanceof ScrollToTheEndToolbarAction) {
return new MergedAction(action1, action2);
}
else {
@@ -5,17 +5,15 @@ import com.intellij.codeWithMe.ClientId;
import com.intellij.icons.AllIcons;
import com.intellij.idea.ActionsBundle;
import com.intellij.openapi.actionSystem.ActionUpdateThread;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.ToggleAction;
import com.intellij.openapi.editor.ClientEditorManager;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.LogicalPosition;
import com.intellij.openapi.editor.ex.util.EditorUtil;
import com.intellij.openapi.project.DumbAware;
import org.jetbrains.annotations.NotNull;
public class ScrollToTheEndToolbarAction extends ToggleAction implements DumbAware {
public class ScrollToTheEndToolbarAction extends AnAction implements DumbAware {
private final Editor myEditor;
public ScrollToTheEndToolbarAction(final @NotNull Editor editor) {
@@ -27,28 +25,14 @@ public class ScrollToTheEndToolbarAction extends ToggleAction implements DumbAwa
getTemplatePresentation().setIcon(AllIcons.RunConfigurations.Scroll_down);
}
@Override
public boolean isSelected(@NotNull AnActionEvent e) {
var editor = ClientEditorManager.getClientEditor(myEditor, ClientId.getCurrentOrNull());
Document document = editor.getDocument();
return document.getLineCount() == 0 || document.getLineNumber(editor.getCaretModel().getOffset()) == document.getLineCount() - 1;
}
@Override
public @NotNull ActionUpdateThread getActionUpdateThread() {
return ActionUpdateThread.EDT;
}
@Override
public void setSelected(@NotNull AnActionEvent e, boolean state) {
var editor = ClientEditorManager.getClientEditor(myEditor, ClientId.getCurrentOrNull());
if (state) {
EditorUtil.scrollToTheEnd(editor);
} else {
int lastLine = Math.max(0, editor.getDocument().getLineCount() - 1);
LogicalPosition currentPosition = editor.getCaretModel().getLogicalPosition();
LogicalPosition position = new LogicalPosition(Math.max(0, Math.min(currentPosition.line, lastLine - 1)), currentPosition.column);
editor.getCaretModel().moveToLogicalPosition(position);
}
public void actionPerformed(@NotNull AnActionEvent e) {
Editor editor = ClientEditorManager.getClientEditor(myEditor, ClientId.getCurrentOrNull());
EditorUtil.scrollToTheEnd(editor);
}
}