diff: allow to pass additional actions via action group

This commit is contained in:
Aleksey Pivovarov
2015-08-27 17:02:38 +03:00
parent 4e5faa4c7b
commit 5dbe3518bf
9 changed files with 53 additions and 16 deletions
@@ -33,6 +33,8 @@ public class FocusOppositePaneAction extends AnAction implements DumbAware {
public FocusOppositePaneAction(boolean scrollToPosition) {
myScrollToPosition = scrollToPosition;
setEnabledInModalContext(true);
EmptyAction.setupAction(this, getActionId(), null);
}
@Override
@@ -41,7 +43,11 @@ public class FocusOppositePaneAction extends AnAction implements DumbAware {
}
public void setupAction(@NotNull JComponent component) {
String action = myScrollToPosition ? "Diff.FocusOppositePaneAndScroll" : "Diff.FocusOppositePane";
EmptyAction.setupAction(this, action, component);
registerCustomShortcutSet(getShortcutSet(), component);
}
@NotNull
private String getActionId() {
return myScrollToPosition ? "Diff.FocusOppositePaneAndScroll" : "Diff.FocusOppositePane";
}
}
@@ -30,6 +30,7 @@ import com.intellij.diff.requests.SimpleDiffRequest;
import com.intellij.diff.tools.simple.ThreesideTextDiffViewerEx;
import com.intellij.diff.tools.util.DiffNotifications;
import com.intellij.diff.tools.util.KeyboardModifierListener;
import com.intellij.diff.tools.util.base.TextDiffViewerUtil;
import com.intellij.diff.util.*;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.actionSystem.*;
@@ -273,9 +274,9 @@ public class TextMergeTool implements MergeTool {
group.add(new ApplySelectedChangesAction(Side.RIGHT, false));
group.add(new IgnoreSelectedChangesAction(Side.LEFT, false));
group.add(new IgnoreSelectedChangesAction(Side.RIGHT, false));
group.add(Separator.getInstance());
group.addAll(super.createEditorPopupActions());
group.add(Separator.getInstance());
group.addAll(TextDiffViewerUtil.createEditorPopupActions());
return group;
}
@@ -191,6 +191,9 @@ public class UnifiedDiffViewer extends ListenerDiffViewerBase {
group.add(new MyReadOnlyLockAction());
group.add(myEditorSettingsAction);
group.add(Separator.getInstance());
group.addAll(super.createToolbarActions());
return group;
}
@@ -206,6 +209,9 @@ public class UnifiedDiffViewer extends ListenerDiffViewerBase {
group.add(Separator.getInstance());
group.add(new MyToggleExpandByDefaultAction());
group.add(Separator.getInstance());
group.addAll(super.createPopupActions());
return group;
}
@@ -219,8 +225,8 @@ public class UnifiedDiffViewer extends ListenerDiffViewerBase {
group.add(new AppendSelectedChangesAction(Side.RIGHT, false));
group.add(new RevertSelectedChangesAction(Side.LEFT));
group.add(new RevertSelectedChangesAction(Side.RIGHT));
group.add(Separator.getInstance());
group.add(Separator.getInstance());
group.addAll(TextDiffViewerUtil.createEditorPopupActions());
return group;
@@ -115,10 +115,13 @@ public class SimpleDiffViewer extends TwosideTextDiffViewer {
group.add(new MyReadOnlyLockAction());
group.add(myEditorSettingsAction);
group.add(Separator.getInstance());
group.addAll(super.createToolbarActions());
return group;
}
@Nullable
@NotNull
@Override
protected List<AnAction> createPopupActions() {
List<AnAction> group = new ArrayList<AnAction>();
@@ -131,6 +134,9 @@ public class SimpleDiffViewer extends TwosideTextDiffViewer {
group.add(new MyToggleAutoScrollAction());
group.add(new MyToggleExpandByDefaultAction());
group.add(Separator.getInstance());
group.addAll(super.createPopupActions());
return group;
}
@@ -145,8 +151,8 @@ public class SimpleDiffViewer extends TwosideTextDiffViewer {
group.add(new AppendSelectedChangesAction(Side.RIGHT, false));
group.add(new RevertSelectedChangesAction(Side.LEFT));
group.add(new RevertSelectedChangesAction(Side.RIGHT));
group.add(Separator.getInstance());
group.add(Separator.getInstance());
group.addAll(super.createEditorPopupActions());
return group;
@@ -80,10 +80,13 @@ public class SimpleOnesideDiffViewer extends OnesideTextDiffViewer {
group.add(new MyReadOnlyLockAction());
group.add(myEditorSettingsAction);
group.add(Separator.getInstance());
group.addAll(super.createToolbarActions());
return group;
}
@Nullable
@NotNull
@Override
protected List<AnAction> createPopupActions() {
List<AnAction> group = new ArrayList<AnAction>();
@@ -93,6 +96,9 @@ public class SimpleOnesideDiffViewer extends OnesideTextDiffViewer {
group.add(Separator.getInstance());
group.add(new MyHighlightPolicySettingAction().getPopupGroup());
group.add(Separator.getInstance());
group.addAll(super.createPopupActions());
return group;
}
@@ -78,10 +78,13 @@ public class SimpleThreesideDiffViewer extends ThreesideTextDiffViewerEx {
group.add(new ShowBaseRightPartialDiffAction());
group.add(new ShowLeftRightPartialDiffAction());
group.add(Separator.getInstance());
group.addAll(super.createToolbarActions());
return group;
}
@Nullable
@NotNull
@Override
protected List<AnAction> createPopupActions() {
List<AnAction> group = new ArrayList<AnAction>();
@@ -94,6 +97,9 @@ public class SimpleThreesideDiffViewer extends ThreesideTextDiffViewerEx {
group.add(new MyToggleAutoScrollAction());
group.add(new MyToggleExpandByDefaultAction());
group.add(Separator.getInstance());
group.addAll(super.createPopupActions());
return group;
}
@@ -21,9 +21,7 @@ import com.intellij.diff.FrameDiffTool.DiffViewer;
import com.intellij.diff.requests.ContentDiffRequest;
import com.intellij.diff.tools.util.DiffDataKeys;
import com.intellij.diff.util.DiffTaskQueue;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
@@ -33,10 +31,12 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import com.intellij.util.Alarm;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.*;
import javax.swing.*;
import java.util.ArrayList;
import java.util.List;
public abstract class DiffViewerBase implements DiffViewer, DataProvider {
@@ -186,14 +186,16 @@ public abstract class DiffViewerBase implements DiffViewer, DataProvider {
return myContext.isWindowFocused();
}
@Nullable
protected List<AnAction> createToolbarActions() {
return null;
List<AnAction> group = new ArrayList<AnAction>();
ContainerUtil.addAll(group, ((ActionGroup)ActionManager.getInstance().getAction(IdeActions.DIFF_VIEWER_TOOLBAR)).getChildren(null));
return group;
}
@Nullable
protected List<AnAction> createPopupActions() {
return null;
List<AnAction> group = new ArrayList<AnAction>();
ContainerUtil.addAll(group, ((ActionGroup)ActionManager.getInstance().getAction(IdeActions.DIFF_VIEWER_POPUP)).getChildren(null));
return group;
}
@Nullable
@@ -167,6 +167,8 @@ public interface IdeActions {
@NonNls String ACTION_PREVIOUS_DIFF = "PreviousDiff";
@NonNls String ACTION_NEXT_DIFF = "NextDiff";
@NonNls String GROUP_DIFF_EDITOR_POPUP = "Diff.EditorPopupMenu";
@NonNls String DIFF_VIEWER_POPUP = "Diff.ViewerPopupMenu";
@NonNls String DIFF_VIEWER_TOOLBAR = "Diff.ViewerToolbar";
@NonNls String ACTION_EXPAND_ALL = "ExpandAll";
@NonNls String ACTION_COLLAPSE_ALL = "CollapseAll";
@@ -191,6 +191,8 @@
<add-to-group group-id="Vcs.KeymapGroup"/>
</group>
<group id="Diff.EditorPopupMenu"/>
<group id="Diff.ViewerPopupMenu"/>
<group id="Diff.ViewerToolbar"/>
<action id="ScrollTreeToCenter" text="Scroll to Center" class="com.intellij.ide.actions.ScrollTreeToCenterAction" use-shortcut-of="EditorScrollToCenter"/>