From b400f35d413507762ba6660562d89e3ab4f2e2bd Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Tue, 27 Dec 2011 14:37:46 +0400 Subject: [PATCH] additional actions for gear menu --- .../openapi/wm/impl/InternalDecorator.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/InternalDecorator.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/InternalDecorator.java index 1a9bd32106cf..24bb21a9c8fa 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/InternalDecorator.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/InternalDecorator.java @@ -74,6 +74,7 @@ public final class InternalDecorator extends JPanel implements Queryable, TypeSa private final ToggleSideModeAction myToggleSideModeAction; private final ToggleContentUiTypeAction myToggleContentUiTypeAction; + private ActionGroup myAdditionalGearActions; /** * Catches all event from tool window and modifies decorator's appearance. */ @@ -484,6 +485,10 @@ public final class InternalDecorator extends JPanel implements Queryable, TypeSa private DefaultActionGroup createGearPopupGroup() { final DefaultActionGroup group = new DefaultActionGroup(); + if (myAdditionalGearActions != null) { + addSorted(group, myAdditionalGearActions); + group.addSeparator(); + } if (myInfo.isDocked()) { group.add(myToggleAutoHideModeAction); group.add(myToggleDockModeAction); @@ -501,6 +506,26 @@ public final class InternalDecorator extends JPanel implements Queryable, TypeSa return group; } + private static void addSorted(DefaultActionGroup main, ActionGroup group) { + final AnAction[] children = group.getChildren(null); + boolean hadSecondary = false; + for (AnAction action : children) { + if (group.isPrimary(action)) { + main.add(action); + } else { + hadSecondary = true; + } + } + if (hadSecondary) { + main.addSeparator(); + for (AnAction action : children) { + if (!group.isPrimary(action)) { + main.addAction(action).setAsSecondary(true); + } + } + } + } + /** * @return tool window associated with the decorator. */ @@ -834,4 +859,8 @@ public final class InternalDecorator extends JPanel implements Queryable, TypeSa info.put("toolWindowTab", selection.getTabName()); } } + + public void setAdditionalGearActions(ActionGroup additionalGearActions) { + myAdditionalGearActions = additionalGearActions; + } }