前言
系列文档:点这里
添加Action
Action表示一个动作,这个动作需要被插件使用者手动触发,比如输入快捷键或者直接点击,添加Action的方法如下。我们在java文件夹上面右击弹出菜单中即可新建Action
新建Action界面如下
Action ID: 动作ID,推荐用“插件名.XXAction”的格式
Class Name:响应Action被激活的时候的实现类。如果类不存在会自动生成
Name:动作在菜单选项中展示的名字
Description:动作描述,当光标在上面的时候,底部显示的图片文字
Groups:定义这个动作选项所属的组,比如EditMenu就对应IDE菜单栏上的Edit,CodeMenu就对应菜单栏上的Code
Actions:是当前选中Groups下已有的Action动作,比如上图示如果我们选择CodeMenu就会展示Code中已有的几个选项
Anchor:用来指定动作选项在Groups中的位置,Frist就是最上面、Last是最下面,也可以设在某个选项的上/下方
Keyboard Shortcuts:调用插件Action的快捷键,可以不填,要注意热键冲突,当此选项右焦点的时候,按下对应的按键即可自动填入。
当我们点击OK以后,则会自动帮我们创建对应的类以及帮我们将Action注册到plugin.xml文件中,入下代码所示。
<idea-plugin>
<actions>
<action id="FirstPlug.Action1" class="com.test.T1" text="Action1" description="this is action1">
<add-to-group group-id="$LRU" anchor="first"/>
<keyboard-shortcut keymap="$default" first-keystroke="shift ctrl alt E" second-keystroke="ctrl G"/>
</action>
</actions>
</idea-plugin>
这里面的每一个属性则对应我们新建Action的时候在窗口里面填入的值,这时我们运行插件,则在File->Open Recent下就可以看到一个名称为Action1的选项了。
之所以在这里是因为我们使用了
<action id="AutoCreate.Action" class="TTT" text="tttt" description="这是描述">
<!--New-> ttt-->
<add-to-group group-id="NewGroup" anchor="before" relative-to-action="NewFile"/>
<!--在文件编辑窗口右键-->
<add-to-group group-id="EditorPopupMenu" anchor="first"/>
<!--最近打开列表-->
<add-to-group group-id="$LRU" anchor="first"/>
<!--顶部菜单栏-->
<add-to-group group-id="MainMenu" anchor="last"/>
<keyboard-shortcut keymap="$default" first-keystroke="ctrl shift V"/>
</action>
我们还可以使用group标签来定义一组Action,如下所示,这里为了明显,使用anchor=”first”表示放在最前面,可选first last after before。
<idea-plugin>
<actions>
<group id="BoredreamPlugin.PluginSet" text="GroupAction" description="the plugin set by boredream">
<add-to-group group-id="MainMenu" anchor="first"/>
<!-- Add your actions here -->
<action id="AutoCreate.Action" class="TTT" text="Action1" description="这是描述">
<keyboard-shortcut keymap="$default" first-keystroke="ctrl shift V"/>
</action>
<action id="FirstPlug.Action1" class="com.test.T1" text="Action2" description="this is action1">
<add-to-group group-id="$LRU" anchor="first"/>
<keyboard-shortcut keymap="$default" first-keystroke="shift ctrl alt E" second-keystroke="ctrl G"/>
</action>
</group>
</actions>
</idea-plugin>
其实我们也可以直接去查看系统的配置以及实现,在add-to-group group-id=”MainMenu“的红色标红的地方按住ctrl点击即可跳转到源码中,然后我们就可以看系统的配置了。甚至我们也可以查看对应功能的实现,直接ctrl点击class属性对应的类即可。
编写Action的响应
我们在最开始新建Action的时候就指定了一个类用来响应Action,如果类不存在系统会自动帮我们生成对应的类。然后我们仿造官方Demo写入下面代码
public class T1 extends AnAction {
@Override
public void actionPerformed(AnActionEvent e) {
Project project = e.getData(PlatformDataKeys.PROJECT);
String txt = Messages.showInputDialog(project,
"What is your name?",
"Input your name",
Messages.getQuestionIcon());
Messages.showMessageDialog(project,
"Hello, " + txt + "!\n I am glad to see you.",
"Information",
Messages.getInformationIcon());
}
}
然后我们点击对应的Action即可看到效果
\
参考链接: