basic_action_system.md: Cleanup

This commit is contained in:
Karol Lewandowski 2024-12-09 19:19:14 +01:00
parent 4bca0de396
commit 0df9d695a5

View File

@ -25,12 +25,7 @@ The [](grouping_action.md) tutorial demonstrates three types of groups that can
## Action Implementation ## Action Implementation
An action is a class derived from the abstract class [`AnAction`](%gh-ic%/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/AnAction.java). An action is a class derived from the abstract class [`AnAction`](%gh-ic%/platform/editor-ui-api/src/com/intellij/openapi/actionSystem/AnAction.java) (see also [](#useful-action-base-classes) below).
For actions available during [dumb mode](indexing_and_psi_stubs.md#dumb-mode), extend [`DumbAwareAction`](%gh-ic%/platform/ide-core/src/com/intellij/openapi/project/DumbAwareAction.java)
(do not override `AnAction.isDumbAware()` instead).
See also [](#useful-action-base-classes) below.
The IntelliJ Platform calls methods of actions when a user interacts with a menu item or toolbar button. The IntelliJ Platform calls methods of actions when a user interacts with a menu item or toolbar button.
> Classes based on `AnAction` must not have class fields of any kind. > Classes based on `AnAction` must not have class fields of any kind.
@ -40,6 +35,9 @@ The IntelliJ Platform calls methods of actions when a user interacts with a menu
> >
{style="warning" title="No fields allowed"} {style="warning" title="No fields allowed"}
> For actions available during [dumb mode](indexing_and_psi_stubs.md#dumb-mode), extend [`DumbAwareAction`](%gh-ic%/platform/ide-core/src/com/intellij/openapi/project/DumbAwareAction.java)
> (do not override `AnAction.isDumbAware()` instead).
### Principal Implementation Overrides ### Principal Implementation Overrides
Every IntelliJ Platform action should override `AnAction.update()` and must override `AnAction.actionPerformed()`. Every IntelliJ Platform action should override `AnAction.update()` and must override `AnAction.actionPerformed()`.
@ -188,7 +186,7 @@ Some menus like <ui-path>Tools</ui-path> have the `compact` attribute set, so th
All other combinations of `compact`, visibility, and enablement produce N/A for gray appearance because the menu item isn't visible. All other combinations of `compact`, visibility, and enablement produce N/A for gray appearance because the menu item isn't visible.
See the [Grouping Actions](grouping_action.md) tutorial for examples of creating action groups. See the [](grouping_action.md) tutorial for examples of creating action groups.
## Registering Actions ## Registering Actions
@ -219,7 +217,7 @@ An example of using `<override-text>` is demonstrated in the [Creating Actions](
#### Setting the `synonym` Element #### Setting the `synonym` Element
_2020.3_ _2020.3_<br/>
Users can locate actions via their name by invoking <ui-path>Help | Find Action</ui-path>. Users can locate actions via their name by invoking <ui-path>Help | Find Action</ui-path>.
To allow using alternative names in search, add one or more [`<synonym>`](plugin_configuration_file.md#idea-plugin__actions__action__synonym) elements inside [`<action>`](plugin_configuration_file.md#idea-plugin__actions__action) or [`<reference>`](plugin_configuration_file.md#idea-plugin__actions__group__reference): To allow using alternative names in search, add one or more [`<synonym>`](plugin_configuration_file.md#idea-plugin__actions__action__synonym) elements inside [`<action>`](plugin_configuration_file.md#idea-plugin__actions__action) or [`<reference>`](plugin_configuration_file.md#idea-plugin__actions__group__reference):
@ -239,9 +237,7 @@ To exclude a group from appearing in <ui-path>Help | Find Action</ui-path> resul
#### Localizing Actions and Groups #### Localizing Actions and Groups
> Hard-coding the presentation in the `AnAction` constructor is discouraged, use inspection <control>Plugin DevKit | Code | Eager creation of action presentation</control> (2023.3) > Hard-coding presentation in the `AnAction` constructor is discouraged, use inspection <control>Plugin DevKit | Code | Eager creation of action presentation</control> (2023.3) to highlight such problems.
> to highlight such problems.
>
Action and group localization use resource bundles containing property files named <path>\$NAME\$Bundle.properties</path>, each file consisting of `key=value` pairs. Action and group localization use resource bundles containing property files named <path>\$NAME\$Bundle.properties</path>, each file consisting of `key=value` pairs.
The [`action_basics`](%gh-sdk-samples-master%/action_basics) plugin demonstrates using a resource bundle to localize the group and action entries added to the Editor Popup Menu. The [`action_basics`](%gh-sdk-samples-master%/action_basics) plugin demonstrates using a resource bundle to localize the group and action entries added to the Editor Popup Menu.
@ -256,7 +252,7 @@ In the case of `action_basics`, only a default localization resource bundle (<pa
<resource-bundle>messages.BasicActionsBundle</resource-bundle> <resource-bundle>messages.BasicActionsBundle</resource-bundle>
``` ```
_2020.1_ _2020.1_<br/>
If necessary, a dedicated resource bundle to use for actions and groups can be defined on [`<actions>`](plugin_configuration_file.md#idea-plugin__actions): If necessary, a dedicated resource bundle to use for actions and groups can be defined on [`<actions>`](plugin_configuration_file.md#idea-plugin__actions):
```xml ```xml
@ -276,7 +272,7 @@ For Actions, the key in property files incorporates the action ID in this specif
* `action.<action-id>.text=Translated Action Text` * `action.<action-id>.text=Translated Action Text`
* `action.<action-id>.description=Translated Action Description` * `action.<action-id>.description=Translated Action Description`
_2020.1_ _2020.1_<br/>
If `<override-text>` is used for an action ID, the key includes the `place` attribute: If `<override-text>` is used for an action ID, the key includes the `place` attribute:
* `action.<action-id>.<place>.text=Place-dependent Translated Action Text` * `action.<action-id>.<place>.text=Place-dependent Translated Action Text`
@ -288,7 +284,7 @@ For Groups, the key in the property files incorporates the group ID in this spec
* `group.<group-id>.text=Translated Group Text` * `group.<group-id>.text=Translated Group Text`
* `group.<group-id>.description=Translated Group Description` * `group.<group-id>.description=Translated Group Description`
_2020.3_ _2020.3_<br/>
If `<override-text>` is used for a group ID, the key includes the `place` attribute: If `<override-text>` is used for a group ID, the key includes the `place` attribute:
* `group.<group-id>.<place>.text=Place-dependent Translated Group Text` * `group.<group-id>.<place>.text=Place-dependent Translated Group Text`
@ -426,7 +422,7 @@ To get a Swing component from such an object, call the respective `getComponent(
If an action toolbar is attached to a specific component (for example, a panel in a tool window), call `ActionToolbar.setTargetComponent()` and pass the related component's instance as a parameter. If an action toolbar is attached to a specific component (for example, a panel in a tool window), call `ActionToolbar.setTargetComponent()` and pass the related component's instance as a parameter.
Setting the target ensures that the toolbar buttons' state depends on the state of the related component, not on the current focus location within the IDE frame. Setting the target ensures that the toolbar buttons' state depends on the state of the related component, not on the current focus location within the IDE frame.
See [Toolbar](toolbar.md) in UI Guidelines for an overview. See [](toolbar.md) in UI Guidelines for an overview.
## Useful Action Base Classes ## Useful Action Base Classes