目前,本人仅了解action插件的使用,就用action插件说"hello world"吧,其他插件读一下文档应该很快能了解到的。
本系列文章是本人的一个插件工程做demo,所有代码片段都是该插件工程的代码。
1.在plugin.xml中添加配置。
以下添加文件中展示了一个action组的添加。添加了一个id=KivensAction.rightFileGroup的action组,这个action组中添加了3个action。注意代码终端注释哦。
<idea-plugin>
<id>com.sckiven.svgtool</id>
<name>Kiven's 工具集</name>
<version>1.0</version>
<vendor email="xxx@163.com" url="https://github.com/xxx">银河系太阳集团</vendor>
<description><![CDATA[
Enter short description for your plugin here.<br>
<em>most HTML tags may be used</em>
]]></description>
<change-notes><![CDATA[
Add change notes here.<br>
<em>most HTML tags may be used</em>
]]>
</change-notes>
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
<idea-version since-build="141.0"/>
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
on how to target different products -->
<!-- uncomment to enable plugin in all products
<depends>com.intellij.modules.lang</depends>
-->
<extensions defaultExtensionNs="com.intellij">
<!-- Add your extensions here -->
</extensions>
<actions>
<!-- todo group和action的id的前缀如'KivensAction'必须一样,否则action出现的位置不在同一个group中 -->
<group id="KivensAction.rightFileGroup" text="Kiven的右键工具" popup="true">
<!-- 将组添加到右键菜单 -->
<add-to-group
group-id="ProjectViewPopupMenu"
anchor="after"
relative-to-action="ReplaceInPath"/>
<action
id="KivensAction.SVGAction"
class="com.sckiven.svgtool.svg.SVGAction"
text="SVGTool"
description="右键SVG Action">
<!-- 快捷键 -->
<!--<keyboard-shortcut keymap="$default" first-keystroke="ctrl alt Q"/>-->
</action>
<action
class="com.sckiven.svgtool.code.CodeAction"
id="KivensAction.CodeAction"
text="代码检测工具"
description="检测代码行数"/>
<action
class="com.sckiven.svgtool.protobuf.ProtobufAction"
id="KivensAction.ProtobufAction"
text="proto 代码生成工具"
description="检测代码行数"/>
</group>
</actions>
</idea-plugin>
2.代码编写。
以protobuf为例。在src文件夹下,添加代码。以弹窗显示“hello world!"。
Messages:用于显示一些提示信息。
package com.sckiven.svgtool.protobuf;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
public class ProtobufAction extends AnAction {
@Override
public void actionPerformed(AnActionEvent anActionEvent) {
Project project = anActionEvent.getData(PlatformDataKeys.PROJECT);
Messages.showMessageDialog(project, "Hello world!", "提示", Messages.getInformationIcon());
}
}