jetBrains 插件开发第一课-- 在主菜单栏新增一个菜单

环境搭建完了,接下来可以开始写代码了:

 

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>

  

好了,就这么多了。

posted @ 2018-01-14 23:36  佚名000  阅读(1474)  评论(0编辑  收藏  举报