# Registering action in new ui main toolbar

**URL:** https://platform.jetbrains.com/t/registering-action-in-new-ui-main-toolbar/1310
**Category:** IntelliJ Platform
**Tags:** actions
**Created:** [April 11, 2025, 9:48am UTC](https://platform.jetbrains.com/t/registering-action-in-new-ui-main-toolbar/1310 "2025-04-11T09:48:08Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![marcin.xvsg](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/marcin.xvsg/32/311_2.png) [@marcin.xvsg](https://platform.jetbrains.com/u/marcin.xvsg)
#### Post date: [April 11, 2025, 9:48am UTC](https://platform.jetbrains.com/t/registering-action-in-new-ui-main-toolbar/1310/1 "2025-04-11T09:48:08Z")

</div>

I wanted to register my action in new ui main toolbar (macos) and all of below fails:

```kotlin
val group = ActionManager.getInstance().getAction(IdeActions.GROUP_MAIN_TOOLBAR_NEW_UI) as DefaultActionGroup
group.add(DebugUsingHotSwapAgentAction.getAction())

```

and standard:

```xml
<action
   id="HotSwap.debug"
   class="com.vaadin.plugin.actions.DebugUsingHotSwapAgentAction"
   text="Debug using HotSwapAgent"
   icon="/vaadin/icons/debug.svg">
   <add-to-group group-id="RunToolbarMainActionGroup"
       relative-to-action="Run"
       anchor="after"/>
   <add-to-group group-id="MainToolbarRight" />
</action>

```

What’s interesting is that for plugin.xml it is displayed for \< 1 second and then removed. (it can be seen on screen recording in GH issue [Show debug with hotswap in toolbar by default · Issue #177 · vaadin/intellij-plugin · GitHub](https://github.com/vaadin/intellij-plugin/issues/177#issuecomment-2796385872)).

I also noticed in sources that some actions extend CustomComponentAction and define there where to be placed, but no luck in my case, implemented as below:

```kotlin
override fun createCustomComponent(presentation: Presentation, place: String): JComponent {
        presentation.text = "Debug using HotSwapAgent"
        presentation.icon = VaadinIcons.DEBUG_HOTSWAP
        return object : ActionButton(this, presentation, ActionPlaces.NEW_UI_RUN_TOOLBAR, ActionToolbar.DEFAULT_MINIMUM_BUTTON_SIZE) {
        }
    }

```

I can see it is possible because SearchEverywhere or JRebel actions are present exactly there.

---

<div class="post-metadata">

### Author: ![yuriy.artamonov](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/yuriy.artamonov/32/48_2.png) [@yuriy.artamonov](https://platform.jetbrains.com/u/yuriy.artamonov)
#### Post date: [April 11, 2025, 9:50am UTC](https://platform.jetbrains.com/t/registering-action-in-new-ui-main-toolbar/1310/2 "2025-04-11T09:50:15Z")

</div>

You definitely never should do this programmatically as it breaks user settings. But adding to a relevant group in XML must work

---

<div class="post-metadata">

### Author: ![marcin.xvsg](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/marcin.xvsg/32/311_2.png) [@marcin.xvsg](https://platform.jetbrains.com/u/marcin.xvsg)
#### Post date: [April 11, 2025, 9:55am UTC](https://platform.jetbrains.com/t/registering-action-in-new-ui-main-toolbar/1310/3 "2025-04-11T09:55:05Z")

</div>

So why it disappears?

![Screen Recording 2025-04-11 at 11.54.05](https://us1.discourse-cdn.com/flex001/uploads/jetbrains_platform/original/2X/4/44d8fe101f755e6a8281adee572373d19ab1c6b8.gif)

---

<div class="post-metadata">

### Author: ![yuriy.artamonov](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/yuriy.artamonov/32/48_2.png) [@yuriy.artamonov](https://platform.jetbrains.com/u/yuriy.artamonov)
#### Post date: [April 11, 2025, 9:58am UTC](https://platform.jetbrains.com/t/registering-action-in-new-ui-main-toolbar/1310/4 "2025-04-11T09:58:41Z")

</div>

We do it this way usually:

```xml
<action id="SendFeedback"
        class="com.jetbrains.ds.actions.DSSendFeedbackAction"
        icon="PycharmDSCustomizationIcons.Feedback">
    <add-to-group group-id="MainToolbarRight" 
                  anchor="after" relative-to-action="SearchEverywhere"/>
</action>

```

---

<div class="post-metadata">

### Author: ![yuriy.artamonov](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/yuriy.artamonov/32/48_2.png) [@yuriy.artamonov](https://platform.jetbrains.com/u/yuriy.artamonov)
#### Post date: [April 11, 2025, 10:02am UTC](https://platform.jetbrains.com/t/registering-action-in-new-ui-main-toolbar/1310/5 "2025-04-11T10:02:02Z")

</div>

Do you have any `update()` logic for it?

---

<div class="post-metadata">

### Author: ![marcin.xvsg](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/marcin.xvsg/32/311_2.png) [@marcin.xvsg](https://platform.jetbrains.com/u/marcin.xvsg)
#### Post date: [April 11, 2025, 10:02am UTC](https://platform.jetbrains.com/t/registering-action-in-new-ui-main-toolbar/1310/6 "2025-04-11T10:02:44Z")

</div>

Ok, so having action defined as:

```xml
<action
                id="HotSwap.debug"
                class="com.vaadin.plugin.actions.DebugUsingHotSwapAgentAction"
                icon="/vaadin/icons/debug.svg">
            <add-to-group group-id="MainToolbarRight"
                          anchor="after" relative-to-action="SearchEverywhere"/>
        </action>

```

I end up with disappearing magic still:  
 ![Screen Recording 2025-04-11 at 12.00.52](https://us1.discourse-cdn.com/flex001/uploads/jetbrains_platform/original/2X/d/d013b300154d595c7dd97dc632fb52e24d2b6ad3.gif)

---

<div class="post-metadata">

### Author: ![marcin.xvsg](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/marcin.xvsg/32/311_2.png) [@marcin.xvsg](https://platform.jetbrains.com/u/marcin.xvsg)
#### Post date: [April 11, 2025, 10:04am UTC](https://platform.jetbrains.com/t/registering-action-in-new-ui-main-toolbar/1310/7 "2025-04-11T10:04:43Z")

</div>

I think I’ve found issue - my action extends ExecutorAction, when replaced with classic AnAction it is fine:

 ![image](https://us1.discourse-cdn.com/flex001/uploads/jetbrains_platform/original/2X/b/b88deb7a8ebc9dc8a103b4a6346f5c3553e7dbc8.png)

---

<div class="post-metadata">

### Author: ![marcin.xvsg](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/marcin.xvsg/32/311_2.png) [@marcin.xvsg](https://platform.jetbrains.com/u/marcin.xvsg)
#### Post date: [April 11, 2025, 10:12am UTC](https://platform.jetbrains.com/t/registering-action-in-new-ui-main-toolbar/1310/8 "2025-04-11T10:12:16Z")

</div>

Real reason was that ExecutorAction has been toggling visibility in

```kotlin
presentation.setVisible(targetNodes.isNotEmpty());

```

My executor action implementation needed to be updated.
