diff --git a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarActionBase.java b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarActionBase.java index 466a12b62467..98936520fba9 100644 --- a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarActionBase.java +++ b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarActionBase.java @@ -17,6 +17,7 @@ import com.intellij.ui.components.JBOptionButton; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.messages.MessageBus; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.awt.*; import java.util.List; @@ -60,28 +61,30 @@ public class TouchBarActionBase extends TouchBarProjectBase implements Execution public void onHide() { ActionManager.getInstance().removeTransparentTimerListener(myTimerListener); } TBItemAnActionButton addAnActionButton(String actId) { - return addAnActionButton(ActionManager.getInstance().getAction(actId), true, TBItemAnActionButton.SHOWMODE_IMAGE_ONLY, myComponent, null); + final AnAction act = _getActionById(actId); + if (act == null) + return null; + + return _addAnActionButton(act, true, TBItemAnActionButton.SHOWMODE_IMAGE_ONLY, myComponent, null); } TBItemAnActionButton addAnActionButton(String actId, boolean hiddenWhenDisabled) { - final AnAction act = ActionManager.getInstance().getAction(actId); - if (act == null) { - LOG.error("can't find action by id: " + actId); + final AnAction act = _getActionById(actId); + if (act == null) return null; - } - return addAnActionButton(act, hiddenWhenDisabled, TBItemAnActionButton.SHOWMODE_IMAGE_ONLY, myComponent, null); + + return _addAnActionButton(act, hiddenWhenDisabled, TBItemAnActionButton.SHOWMODE_IMAGE_ONLY, myComponent, null); } - TBItemAnActionButton addAnActionButton(AnAction act, boolean hiddenWhenDisabled, int showMode) { - return addAnActionButton(act, hiddenWhenDisabled, showMode, myComponent, null); + TBItemAnActionButton addAnActionButton(String actId, boolean hiddenWhenDisabled, int showMode) { + final AnAction act = _getActionById(actId); + if (act == null) + return null; + + return _addAnActionButton(act, hiddenWhenDisabled, showMode, myComponent, null); } - TBItemAnActionButton addAnActionButton(AnAction act, boolean hiddenWhenDisabled, int showMode, Component component, ModalityState modality) { - if (act == null) { - LOG.error("can't create action-button with null action"); - return null; - } - + private TBItemAnActionButton _addAnActionButton(@NotNull AnAction act, boolean hiddenWhenDisabled, int showMode, Component component, ModalityState modality) { final String uid = String.format("%s.anActionButton.%d.%s", myName, myCounter++, ActionManager.getInstance().getId(act)); final TBItemAnActionButton butt = new TBItemAnActionButton(uid, act, hiddenWhenDisabled, showMode, component, modality); myItems.add(butt); @@ -93,10 +96,10 @@ public class TouchBarActionBase extends TouchBarProjectBase implements Execution List visibleActions = ContainerUtil.newArrayListWithCapacity(10); Utils.expandActionGroup(false, actionGroup, visibleActions, myPresentationFactory, dctx, ActionPlaces.UNKNOWN, ActionManager.getInstance()); for (AnAction act: visibleActions) { - if (act instanceof Separator) + if (act == null || act instanceof Separator) continue; - addAnActionButton(act, false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY, forCtx, modality); + _addAnActionButton(act, false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY, forCtx, modality); } } @@ -134,4 +137,12 @@ public class TouchBarActionBase extends TouchBarProjectBase implements Execution if (layoutChanged) selectVisibleItemsToShow(); } + + private static @Nullable AnAction _getActionById(String actId) { + final AnAction act = ActionManager.getInstance().getAction(actId); + if (act == null) + LOG.error("can't find action by id: " + actId); + + return act; + } } diff --git a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarEditorAlt.java b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarEditorAlt.java index aa5472ea397d..7eae0c502a20 100644 --- a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarEditorAlt.java +++ b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarEditorAlt.java @@ -1,7 +1,6 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ui.mac.touchbar; -import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; @@ -12,6 +11,6 @@ public class TouchBarEditorAlt extends TouchBarActionBase { super("editor_alt", project, component); addFlexibleSpacing(); - addAnActionButton(ActionManager.getInstance().getAction("Terminal.OpenInTerminal"), false, TBItemAnActionButton.SHOWMODE_IMAGE_TEXT); + addAnActionButton("Terminal.OpenInTerminal", false, TBItemAnActionButton.SHOWMODE_IMAGE_TEXT); } } diff --git a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarEditorCmd.java b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarEditorCmd.java index 546b492907ca..a9504b5f20b6 100644 --- a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarEditorCmd.java +++ b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarEditorCmd.java @@ -1,7 +1,6 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ui.mac.touchbar; -import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; @@ -17,10 +16,10 @@ public class TouchBarEditorCmd extends TouchBarActionBase { addAnActionButton("Forward", false); addSpacing(true); - addAnActionButton(ActionManager.getInstance().getAction("ToggleBookmark"), false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); // TODO: make with custom icon (doesn't defined in template presentation) - addAnActionButton(ActionManager.getInstance().getAction("ToggleLineBreakpoint"), false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); // TODO: make with custom icon (doesn't defined in template presentation) + addAnActionButton("ToggleBookmark", false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); // TODO: make with custom icon (doesn't defined in template presentation) + addAnActionButton("ToggleLineBreakpoint", false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); // TODO: make with custom icon (doesn't defined in template presentation) addFlexibleSpacing(); - addAnActionButton(ActionManager.getInstance().getAction("FindUsages"), false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); + addAnActionButton("FindUsages", false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); } } diff --git a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarEditorCmdAlt.java b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarEditorCmdAlt.java index 89049bc13caa..7207e4e9f19d 100644 --- a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarEditorCmdAlt.java +++ b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarEditorCmdAlt.java @@ -1,7 +1,6 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ui.mac.touchbar; -import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; @@ -12,8 +11,8 @@ public class TouchBarEditorCmdAlt extends TouchBarActionBase { super("editor_cmd_alt", project, component); addFlexibleSpacing(); - addAnActionButton(ActionManager.getInstance().getAction("SwitchCoverage"), false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); + addAnActionButton("SwitchCoverage", false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); addSpacing(true); - addAnActionButton(ActionManager.getInstance().getAction("FindUsages"), false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); + addAnActionButton("FindUsages", false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); } } diff --git a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarEditorShift.java b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarEditorShift.java index 4afc3e252030..209ac7745045 100644 --- a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarEditorShift.java +++ b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarEditorShift.java @@ -1,7 +1,6 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ui.mac.touchbar; -import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; @@ -12,12 +11,12 @@ public class TouchBarEditorShift extends TouchBarActionBase { super("editor_shift", project, component); // Use Shift to show Refactor actions - addAnActionButton(ActionManager.getInstance().getAction("RenameElement"), false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); - addAnActionButton(ActionManager.getInstance().getAction("ChangeSignature"), false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); - addAnActionButton(ActionManager.getInstance().getAction("ChangeTypeSignature"), false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); + addAnActionButton("RenameElement", false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); + addAnActionButton("ChangeSignature", false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); + addAnActionButton("ChangeTypeSignature", false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); addFlexibleSpacing(); - addAnActionButton(ActionManager.getInstance().getAction("CopyElement"), false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); - addAnActionButton(ActionManager.getInstance().getAction("Move"), false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); + addAnActionButton("CopyElement", false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); + addAnActionButton("Move", false, TBItemAnActionButton.SHOWMODE_TEXT_ONLY); } }