Android Studio Plugin开发小记(二)
前言
系列文档:点这里
添加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文件中,入下代码所示。
1 2 3 4 5 6 7 8 |
<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的选项了。
之所以在这里是因为我们使用了 <add-to-group group-id="$LRU" anchor="first"/>,表示添加到最近打开项目列表 位置在最前面,其他常用的如下
1 2 3 4 5 6 7 8 9 10 11 12 |
<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。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<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写入下面代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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即可看到效果
参考链接:
发表评论