Android Studio Plugin开发小记(二)

/ 0评 / 0

前言

系列文档:点这里

添加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的选项了。

之所以在这里是因为我们使用了 <add-to-group group-id="$LRU" anchor="first"/>,表示添加到最近打开项目列表  位置在最前面,其他常用的如下

<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即可看到效果

参考链接:

官方文档

掘金

发表评论

您的电子邮箱地址不会被公开。