mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
diff: allow to pass additional actions via action group
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+7
-1
@@ -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"/>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user