环境搭建完了,接下来可以开始写代码了:
1、新建 plugin 项目
2、编辑 plugin.xml,修改一下里面的插件名那些信息,该文件的配置项可以看这里:plugin.xml
其中比较关键的有一个是 <depends>com.intellij.modules.platform</depends>,如果不加这个,你点击运行的时候插件可以正常运作,但是打包之后安装却会用不了。
<idea-plugin> <id>com.eleven24.helloWorld</id> <name>HelloWorld</name> <version>1.0</version> <vendor email="rubymay21s@gmail.com" url="http://www.cnblogs.com/eleven24">YourCompany</vendor> <description><![CDATA[ Hello World Plugin. ]]></description> <change-notes><![CDATA[ first version. ]]> </change-notes> <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description --> <idea-version since-build="145.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> --> <depends>com.intellij.modules.platform</depends> <extensions defaultExtensionNs="com.intellij"> <!-- Add your extensions here --> </extensions> <actions> <!-- Add your actions here --> </actions> </idea-plugin>
基本的信息如上,下面会添加一些菜单项的配置以及注册插件的配置
3、初始化的方法
package com.eleven24; import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.components.ApplicationComponent; import org.jetbrains.annotations.NotNull; public class HelloWorldRegistration implements ApplicationComponent { @NotNull public String getComponentName() { return "HelloWorldPlugin"; } public void initComponent() { ActionManager am = ActionManager.getInstance(); MenuAction menuAction = new MenuAction(); am.registerAction("menuAction", menuAction); DefaultActionGroup windowsM = (DefaultActionGroup) am.getAction("WindowMenu"); windowsM.addSeparator(); windowsM.add(menuAction); } // Disposes system resources. public void disposeComponent() { } }
4、添加应用组件的配置到 plugin.xml 中,这样 ide 才会知道我们这个插件要做什么
<application-components> <component> <implementation-class>com.eleven24.HelloWorldRegistration</implementation-class> </component> </application-components>
5、添加一个点击菜单之后的处理方法,需要继承 AnAction 类
package com.eleven24; import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.ui.Messages; public class MenuAction extends AnAction { @Override public void actionPerformed(AnActionEvent anActionEvent) { Messages.showInfoMessage("Hello World!", "First Plugin"); } }
5、添加菜单,这个的话在 plugin.xml 中配置,同时也要指定该菜单点击之后对应的处理类(上面的menuAction)
我们添加一个组名叫 "HelloWorld" 的菜单组,添加到主菜单栏末尾,然后在其下添加一个名为 "menu action" 的菜单。具体配置如下:
<actions> <!-- Add your actions here --> <group id="HelloWorld" text="_HelloWorld"> <add-to-group group-id="MainMenu" anchor="last" /> </group> <action class="com.eleven24.MenuAction" id="menuAction" text="menu action"> <add-to-group group-id="HelloWorld" anchor="first" /> </action> </actions>
6、到此为止,我们已经完成了菜单的添加,点击右上角的运行按钮可以查看效果,运行的时候会再打开一个 ide,会有点慢。
7、效果图
8、下面是最终的配置文件
<idea-plugin> <id>com.eleven24.helloWorld</id> <name>HelloWorld</name> <version>1.0</version> <vendor email="rubymay21s@gmail.com" url="http://www.cnblogs.com/eleven24">YourCompany</vendor> <description><![CDATA[ Hello World Plugin. ]]></description> <change-notes><![CDATA[ first version. ]]> </change-notes> <!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description --> <idea-version since-build="145.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> --> <depends>com.intellij.modules.platform</depends> <extensions defaultExtensionNs="com.intellij"> <!-- Add your extensions here --> </extensions> <actions> <!-- Add your actions here --> <group id="HelloWorld" text="_HelloWorld" description="menu group"> <add-to-group group-id="MainMenu" anchor="last" /> <action class="com.eleven24.MenuAction" id="helloWorld.menuAction" text="menu action" /> </group> </actions> <application-components> <component> <implementation-class>com.eleven24.HelloWorldRegistration</implementation-class> </component> </application-components> </idea-plugin>
好了,就这么多了。