Actions

动作系统允许插件将它们的项目添加到基于 IntelliJ 平台的 IDE 菜单和工具栏。

例如,其中一个操作类负责 File 打开文件…菜单项和打开…工具栏按钮。

IntelliJ 平台中的操作需要代码实现并且必须注册。 操作实现确定操作可用的上下文,以及在 UI 中选择时的功能。

注册确定操作在 IDE 用户界面中的显示位置。 一旦实现并注册,动作就会从 IntelliJ 平台接收回调以响应用户手势。

创建动作教程描述了将自定义动作添加到插件的过程。

分组操作教程演示了三种可以包含操作的组。

详细介绍下 idea 插件 Actions

在 IntelliJ IDEA 插件开发中,Actions 是非常重要的组件,它定义了插件的功能和用户界面上的操作。

Actions 定义了用户可以执行的操作,例如菜单项、工具栏按钮、快捷键等。

以下是关于 IntelliJ IDEA 插件中的 Actions 的详细介绍:

  1. 动作层次结构:Actions 在 IntelliJ IDEA 中以层次结构的形式组织。根节点是插件的主要 Action,可以通过插件的插件描述符(plugin.xml)文件中的 <actions> 元素定义。子节点可以表示子菜单、分组或具体的操作。

  2. AnAction 类:Actions 在插件开发中通常通过扩展 com.intellij.openapi.actionSystem.AnAction 类来创建。AnAction 类提供了一系列方法来定义和处理操作的行为,例如 actionPerformed 方法用于处理操作的主要逻辑。

  3. 动作属性:每个 Action 都可以具有各种属性,例如名称、描述、图标、快捷键等。这些属性可以在插件的插件描述符文件中进行配置,也可以在代码中动态设置。

  4. 菜单和工具栏:Actions 可以被添加到 IntelliJ IDEA 的菜单栏、工具栏、上下文菜单等位置。可以通过 plugin.xml 文件中的 <actions> 元素来定义菜单和工具栏的结构,并通过指定 groupIdactionId 将 Action 添加到相应的位置。

  5. 动态 Actions:Actions 还可以是动态的,这意味着它们的状态和可用性可以根据上下文动态改变。通过实现 com.intellij.openapi.actionSystem.DynamicAction 接口,可以创建动态 Action,并在特定条件下启用或禁用该 Action。

  6. 快捷键绑定:Actions 可以与快捷键进行绑定,以便用户可以通过键盘快速触发操作。可以通过 plugin.xml 文件中的 <keyboard-shortcut> 元素来配置快捷键。

  7. 动作事件和监听器:在执行 Action 时,可以触发相应的事件。可以通过实现 com.intellij.openapi.actionSystem.AnActionListener 接口来监听 Action 事件,并在事件发生时执行相应的操作。

通过定义和使用 Actions,插件开发人员可以轻松创建各种功能和操作,使插件的功能在 IntelliJ IDEA 用户界面上可见和可操作。

插件可以提供自定义的菜单项、工具栏按钮、上下文菜单等,以便用户可以方便地访问插件的功能。

如何使用 Action,给一个入门例子

当使用 IntelliJ IDEA 的插件开发时,可以通过以下步骤使用 Action。

  1. 创建一个新的 Java 类,扩展 com.intellij.openapi.actionSystem.AnAction 类。

例如,创建一个名为 HelloAction 的类。

  [java]
1
2
3
4
5
6
7
8
9
10
11
12
import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.ui.Messages; public class HelloAction extends AnAction { @Override public void actionPerformed(AnActionEvent e) { // 在这里定义操作的逻辑 Messages.showMessageDialog("Hello, World!", "Greeting", Messages.getInformationIcon()); } }
  1. 在插件的 plugin.xml 文件中声明 Action。在 <actions> 元素下添加一个 <action> 元素。
  [xml]
1
2
3
4
5
6
7
8
<actions> <action id="myPlugin.HelloAction" class="HelloAction" text="Say Hello" description="A sample action that displays a greeting message" icon="icons/hello.png"> </action> </actions>

在上述代码中,id 属性指定了 Action 的唯一标识符,class 属性指定了 Action 类的完全限定名,text 属性定义了 Action 在菜单项中的显示文本,description 属性是对 Action 的描述,icon 属性指定了 Action 的图标。

  1. 在插件的 plugin.xml 文件中声明菜单项。在 <menus> 元素下添加一个 <menu> 元素,并将 Action 添加到菜单项中。
  [xml]
1
2
3
4
5
6
<menus> <menu id="MyPluginMenu" text="My Plugin" description="My Plugin Menu"> <add-to-group group-id="EditorPopupMenu" anchor="first" /> <action id="myPlugin.HelloAction" /> </menu> </menus>

在上述代码中,id 属性指定了菜单项的唯一标识符,text 属性定义了菜单项的显示文本,description 属性是对菜单项的描述。

<add-to-group> 元素用于将菜单项添加到特定的菜单组中,这里示例将菜单项添加到 EditorPopupMenu 菜单组中的第一个位置。

  1. 构建和运行插件。将插件打包为 .jar 文件,并将其安装到 IntelliJ IDEA 中。然后在菜单中找到 My Plugin 菜单,并点击 Say Hello 菜单项,将显示一个对话框显示 “Hello, World!”。

通过这个简单的例子,您可以了解如何创建和使用 Action,在菜单中添加自定义操作,并定义操作的逻辑。

您可以根据需求扩展和定制 Action 的行为,并与其他插件组件进行交互。

参考资料

https://plugins.jetbrains.com/docs/intellij/basic-action-system.html