From 06da957994df7fb5d186fe422c3551e1f271cbb3 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Wed, 7 Sep 2022 14:39:49 +0200 Subject: [PATCH] actions update thread - diff GitOrigin-RevId: 07c7fb9b2bde1f962c458fc4bc2e9a21562c8cd2 --- .../diff/actions/ProxyUndoRedoAction.java | 6 +++ .../actions/impl/SetEditorSettingsAction.java | 15 +++++++ .../diff/impl/DiffRequestProcessor.java | 41 +++++++++++++++++++ .../intellij/diff/impl/ui/DiffToolChooser.kt | 10 +++-- .../diff/merge/MergeRequestProcessor.java | 10 +++++ .../TransferableFileEditorStateSupport.java | 6 +++ .../tools/util/base/TextDiffViewerUtil.java | 25 +++++++++++ .../dir/actions/ChangeCompareModeAction.java | 6 +++ .../dir/actions/ChangeCompareModeGroup.java | 5 +++ .../diff/impl/dir/actions/DirDiffAction.java | 10 +++-- .../vcs/ex/LineStatusMarkerPopupRenderer.java | 5 +++ 11 files changed, 131 insertions(+), 8 deletions(-) diff --git a/platform/diff-impl/src/com/intellij/diff/actions/ProxyUndoRedoAction.java b/platform/diff-impl/src/com/intellij/diff/actions/ProxyUndoRedoAction.java index 56e2cd369e69..fefd300654a4 100644 --- a/platform/diff-impl/src/com/intellij/diff/actions/ProxyUndoRedoAction.java +++ b/platform/diff-impl/src/com/intellij/diff/actions/ProxyUndoRedoAction.java @@ -2,6 +2,7 @@ package com.intellij.diff.actions; import com.intellij.diff.util.DiffUtil; +import com.intellij.openapi.actionSystem.ActionUpdateThread; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.IdeActions; import com.intellij.openapi.actionSystem.ex.ActionUtil; @@ -37,6 +38,11 @@ public final class ProxyUndoRedoAction extends DumbAwareAction { } } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public void update(@NotNull AnActionEvent e) { e.getPresentation().setEnabled(myUndo ? myUndoManager.isUndoAvailable(myEditor) : myUndoManager.isRedoAvailable(myEditor)); diff --git a/platform/diff-impl/src/com/intellij/diff/actions/impl/SetEditorSettingsAction.java b/platform/diff-impl/src/com/intellij/diff/actions/impl/SetEditorSettingsAction.java index f057a090dc37..e312760950e2 100644 --- a/platform/diff-impl/src/com/intellij/diff/actions/impl/SetEditorSettingsAction.java +++ b/platform/diff-impl/src/com/intellij/diff/actions/impl/SetEditorSettingsAction.java @@ -193,6 +193,11 @@ public class SetEditorSettingsAction extends ActionGroup implements DumbAware { getTemplatePresentation().setIcon(null); } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public boolean isSelected(@NotNull AnActionEvent e) { return isSelected(); @@ -252,6 +257,11 @@ public class SetEditorSettingsAction extends ActionGroup implements DumbAware { myLayer = layer; } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public boolean isSelected(@NotNull AnActionEvent e) { return myTextSettings.getHighlightingLevel() == myLayer; @@ -291,6 +301,11 @@ public class SetEditorSettingsAction extends ActionGroup implements DumbAware { myOption = option; } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public boolean isSelected(@NotNull AnActionEvent e) { return myTextSettings.getBreadcrumbsPlacement() == myOption; diff --git a/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java b/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java index 719f493ab070..1ad7d11ef13d 100644 --- a/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java +++ b/platform/diff-impl/src/com/intellij/diff/impl/DiffRequestProcessor.java @@ -714,6 +714,11 @@ public abstract class DiffRequestProcessor implements CheckedDisposable { ActionUtil.copyFrom(this, "Diff.ShowInExternalTool"); } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public void actionPerformed(@NotNull AnActionEvent e) { getShowActions().get(0).actionPerformed(e); @@ -787,12 +792,17 @@ public abstract class DiffRequestProcessor implements CheckedDisposable { private class MyChangeDiffToolAction extends ComboBoxAction implements DumbAware { // TODO: add icons for diff tools, show only icon in toolbar - to reduce jumping on change ? + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } @Override public void update(@NotNull AnActionEvent e) { Presentation presentation = e.getPresentation(); DiffTool activeTool = myState.getActiveTool(); + //noinspection DialogTitleCapitalization presentation.setText(activeTool.getName()); if (myForcedDiffTool != null) { @@ -826,10 +836,16 @@ public abstract class DiffRequestProcessor implements CheckedDisposable { @NotNull private final DiffTool myDiffTool; private DiffToolToggleAction(@NotNull DiffTool tool) { + //noinspection DialogTitleCapitalization super(tool.getName()); myDiffTool = tool; } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public void update(@NotNull AnActionEvent e) { e.getPresentation().setEnabledAndVisible(myForcedDiffTool == null); @@ -851,6 +867,11 @@ public abstract class DiffRequestProcessor implements CheckedDisposable { ActionUtil.copyFrom(this, "Diff.ShowSettingsPopup"); } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public void update(@NotNull AnActionEvent e) { e.getPresentation().setEnabled(myPopupActionGroup.getChildrenCount() > 0); @@ -901,6 +922,11 @@ public abstract class DiffRequestProcessor implements CheckedDisposable { public MyNextDifferenceAction() { } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public void update(@NotNull AnActionEvent e) { if (DiffUtil.isFromShortcut(e)) { @@ -949,6 +975,11 @@ public abstract class DiffRequestProcessor implements CheckedDisposable { public MyPrevDifferenceAction() { } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public void update(@NotNull AnActionEvent e) { if (DiffUtil.isFromShortcut(e)) { @@ -1054,6 +1085,11 @@ public abstract class DiffRequestProcessor implements CheckedDisposable { protected class MyNextChangeAction extends NextChangeAction { public MyNextChangeAction() { } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public void update(@NotNull AnActionEvent e) { if (DiffUtil.isFromShortcut(e)) { @@ -1081,6 +1117,11 @@ public abstract class DiffRequestProcessor implements CheckedDisposable { protected class MyPrevChangeAction extends PrevChangeAction { public MyPrevChangeAction() { } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public void update(@NotNull AnActionEvent e) { if (DiffUtil.isFromShortcut(e)) { diff --git a/platform/diff-impl/src/com/intellij/diff/impl/ui/DiffToolChooser.kt b/platform/diff-impl/src/com/intellij/diff/impl/ui/DiffToolChooser.kt index 26ed549ab3a2..c36f1fe8bf3f 100644 --- a/platform/diff-impl/src/com/intellij/diff/impl/ui/DiffToolChooser.kt +++ b/platform/diff-impl/src/com/intellij/diff/impl/ui/DiffToolChooser.kt @@ -3,10 +3,7 @@ package com.intellij.diff.impl.ui import com.intellij.diff.DiffTool import com.intellij.diff.FrameDiffTool -import com.intellij.openapi.actionSystem.AnActionEvent -import com.intellij.openapi.actionSystem.DefaultActionGroup -import com.intellij.openapi.actionSystem.Presentation -import com.intellij.openapi.actionSystem.ToggleAction +import com.intellij.openapi.actionSystem.* import com.intellij.openapi.actionSystem.ex.CustomComponentAction import com.intellij.openapi.project.DumbAware import com.intellij.openapi.project.DumbAwareAction @@ -14,10 +11,13 @@ import com.intellij.ui.dsl.builder.IntelliJSpacingConfiguration import com.intellij.ui.dsl.builder.components.SegmentedButtonToolbar import javax.swing.JComponent +@Suppress("DialogTitleCapitalization") abstract class DiffToolChooser(private val targetComponent: JComponent? = null) : DumbAwareAction(), CustomComponentAction { private val actions = arrayListOf() + override fun getActionUpdateThread(): ActionUpdateThread = ActionUpdateThread.EDT + override fun update(e: AnActionEvent) { val presentation = e.presentation @@ -62,6 +62,8 @@ abstract class DiffToolChooser(private val targetComponent: JComponent? = null) private inner class MyDiffToolAction(private val diffTool: DiffTool, private var state: Boolean) : ToggleAction(diffTool.name), DumbAware { + override fun getActionUpdateThread(): ActionUpdateThread = ActionUpdateThread.EDT + override fun isSelected(e: AnActionEvent): Boolean = state override fun setSelected(e: AnActionEvent, state: Boolean) { diff --git a/platform/diff-impl/src/com/intellij/diff/merge/MergeRequestProcessor.java b/platform/diff-impl/src/com/intellij/diff/merge/MergeRequestProcessor.java index ce472fb16ccf..cef3af630c54 100644 --- a/platform/diff-impl/src/com/intellij/diff/merge/MergeRequestProcessor.java +++ b/platform/diff-impl/src/com/intellij/diff/merge/MergeRequestProcessor.java @@ -467,6 +467,11 @@ public abstract class MergeRequestProcessor implements Disposable { // private static class MyNextDifferenceAction extends NextDifferenceAction { + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public void update(@NotNull AnActionEvent e) { if (!ActionPlaces.DIFF_TOOLBAR.equals(e.getPlace())) { @@ -493,6 +498,11 @@ public abstract class MergeRequestProcessor implements Disposable { } private static class MyPrevDifferenceAction extends PrevDifferenceAction { + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public void update(@NotNull AnActionEvent e) { if (!ActionPlaces.DIFF_TOOLBAR.equals(e.getPlace())) { diff --git a/platform/diff-impl/src/com/intellij/diff/tools/util/TransferableFileEditorStateSupport.java b/platform/diff-impl/src/com/intellij/diff/tools/util/TransferableFileEditorStateSupport.java index 04204a636bff..4ac0bfdc0161 100644 --- a/platform/diff-impl/src/com/intellij/diff/tools/util/TransferableFileEditorStateSupport.java +++ b/platform/diff-impl/src/com/intellij/diff/tools/util/TransferableFileEditorStateSupport.java @@ -21,6 +21,7 @@ import com.intellij.diff.requests.DiffRequest; import com.intellij.diff.tools.holders.BinaryEditorHolder; import com.intellij.icons.AllIcons; import com.intellij.openapi.Disposable; +import com.intellij.openapi.actionSystem.ActionUpdateThread; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.diff.DiffBundle; @@ -212,6 +213,11 @@ public class TransferableFileEditorStateSupport { mySupport = support; } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public boolean isVisible() { return mySupport.isSupported(); diff --git a/platform/diff-impl/src/com/intellij/diff/tools/util/base/TextDiffViewerUtil.java b/platform/diff-impl/src/com/intellij/diff/tools/util/base/TextDiffViewerUtil.java index 060068f2568a..09049e7dd822 100644 --- a/platform/diff-impl/src/com/intellij/diff/tools/util/base/TextDiffViewerUtil.java +++ b/platform/diff-impl/src/com/intellij/diff/tools/util/base/TextDiffViewerUtil.java @@ -191,6 +191,11 @@ public final class TextDiffViewerUtil { public static abstract class ComboBoxSettingAction extends ComboBoxAction implements DumbAware { private DefaultActionGroup myActions; + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public void update(@NotNull AnActionEvent e) { Presentation presentation = e.getPresentation(); @@ -228,6 +233,11 @@ public final class TextDiffViewerUtil { private class MyAction extends AnAction implements Toggleable, DumbAware { @NotNull private final T myOption; + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public void update(@NotNull AnActionEvent e) { Toggleable.setSelected(e.getPresentation(), getValue() == myOption); @@ -385,6 +395,11 @@ public final class TextDiffViewerUtil { mySettings = settings; } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public boolean isSelected(AnActionEvent e) { return mySettings.isEnableSyncScroll(); @@ -406,6 +421,11 @@ public final class TextDiffViewerUtil { myFoldingSupport = foldingSupport; } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public boolean isVisible() { return mySettings.getContextRange() != -1; @@ -445,6 +465,11 @@ public final class TextDiffViewerUtil { } } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public void update(@NotNull AnActionEvent e) { if (!isVisible()) { diff --git a/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/actions/ChangeCompareModeAction.java b/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/actions/ChangeCompareModeAction.java index f34551831266..44c3ffad6899 100644 --- a/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/actions/ChangeCompareModeAction.java +++ b/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/actions/ChangeCompareModeAction.java @@ -16,6 +16,7 @@ package com.intellij.openapi.diff.impl.dir.actions; import com.intellij.ide.diff.DirDiffSettings; +import com.intellij.openapi.actionSystem.ActionUpdateThread; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.diff.impl.dir.DirDiffTableModel; import com.intellij.openapi.project.DumbAwareAction; @@ -55,4 +56,9 @@ class ChangeCompareModeAction extends DumbAwareAction { e.getPresentation().setIcon(on ? ON : OFF); e.getPresentation().setSelectedIcon(on ? ON_SELECTED : OFF); } + + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } } diff --git a/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/actions/ChangeCompareModeGroup.java b/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/actions/ChangeCompareModeGroup.java index 2dc07c4f8f30..a7da526824a2 100644 --- a/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/actions/ChangeCompareModeGroup.java +++ b/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/actions/ChangeCompareModeGroup.java @@ -46,6 +46,11 @@ public class ChangeCompareModeGroup extends ComboBoxAction implements ShortcutPr e.getPresentation().setEnabledAndVisible(mySettings.showCompareModes); } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @NotNull @Override public JComponent createCustomComponent(@NotNull Presentation presentation, @NotNull String place) { diff --git a/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/actions/DirDiffAction.java b/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/actions/DirDiffAction.java index 2140fc07f703..dd25288f5682 100644 --- a/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/actions/DirDiffAction.java +++ b/platform/diff-impl/src/com/intellij/openapi/diff/impl/dir/actions/DirDiffAction.java @@ -15,10 +15,7 @@ */ package com.intellij.openapi.diff.impl.dir.actions; -import com.intellij.openapi.actionSystem.AnActionEvent; -import com.intellij.openapi.actionSystem.ShortcutProvider; -import com.intellij.openapi.actionSystem.ShortcutSet; -import com.intellij.openapi.actionSystem.ToggleAction; +import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.diff.impl.dir.DirDiffTableModel; import com.intellij.openapi.project.DumbAware; import org.jetbrains.annotations.NotNull; @@ -76,4 +73,9 @@ public abstract class DirDiffAction extends ToggleAction implements ShortcutProv public ShortcutSet getShortcut() { return getShortcutSet(); } + + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } } diff --git a/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusMarkerPopupRenderer.java b/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusMarkerPopupRenderer.java index 212819c3d182..3fc09ec06a75 100644 --- a/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusMarkerPopupRenderer.java +++ b/platform/diff-impl/src/com/intellij/openapi/vcs/ex/LineStatusMarkerPopupRenderer.java @@ -288,6 +288,11 @@ public abstract class LineStatusMarkerPopupRenderer extends LineStatusMarkerRend myMousePosition = position; } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.EDT; + } + @Override public boolean isSelected(@NotNull AnActionEvent e) { return DiffApplicationSettings.getInstance().SHOW_LST_WORD_DIFFERENCES;