中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Intellij IDEA插件開發的示例分析

發布時間:2021-08-23 12:26:56 來源:億速云 閱讀:203 作者:小新 欄目:編程語言

小編給大家分享一下Intellij IDEA插件開發的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1.創建Plugin工程

如果Module SDK中沒有可選的SDK,那么點擊New新添加一個SDK,目錄就選擇Intellij的安裝位置即可。

Intellij IDEA插件開發的示例分析

創建出的Plugin項目結構很簡單,只是在META-INF下多了一個plugin.xml配置文件,后文會介紹到它的用處。

Intellij IDEA插件開發的示例分析

2.讓插件Say哈嘍

2.1添加Component

在src目錄上Alt+Insert,可以看到New對話框中列出有三種組件,分別對應三種級別:Application、Project、Module Component。這里我們選擇Application Component作為實例,在彈出框中輸入一個名字例如MyComponent,這樣一個組件就創建出來了。

Intellij IDEA插件開發的示例分析

然后在MyComponent中添加一個SayHello的方法,其他方法暫不實現,源代碼如下所示:

package com.cdai.plugin.rapidg;
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.openapi.ui.Messages;
import org.jetbrains.annotations.NotNull;
/**
 * My Component
 * User: cdai
 * Date: 13-11-4
 * Time: 上午10:08
 */
public class MyComponent implements ApplicationComponent {
  public MyComponent() {
  }

  public void initComponent() {
    // TODO: insert component initialization logic here
  }

  public void disposeComponent() {
    // TODO: insert component disposal logic here
  }

  @NotNull
  public String getComponentName() {
    return "MyComponent";
  }

  public void sayHello() {
    // Show dialog with message
    Messages.showMessageDialog(
        "Hello World!",
        "Sample",
        Messages.getInformationIcon()
    );
  }
}

2.2添加Action

現在需要添加一個Action讓使用我們插件的用戶可以通過菜單或其他方式點擊到插件。

Intellij IDEA插件開發的示例分析

Action主要工作是創建一個Application和MyComponent對象,代碼如下:

package com.cdai.plugin.rapidg;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.application.Application;
import com.intellij.openapi.application.ApplicationManager;

/**
 * Say Hello Action
 * User: cdai
 * Date: 13-11-4
 * Time: 上午10:16
 */
public class SayHelloAction extends AnAction {
  @Override
  public void actionPerformed(AnActionEvent e) {
    Application application = ApplicationManager.getApplication();
    MyComponent myComponent = application.getComponent(MyComponent.class);
    myComponent.sayHello();

  }
}

2.3配置文件

其實前面兩步新建Component和Action的同時,IDEA在幫我們自動將它們注冊到META-INF/plugin.xml中。

我們剛才添加的Application Component和Action會在<application-components>結點下,plugin.xml最終是下面的樣子:

<idea-plugin version="2">
 <id>com.cdai.plugin.rapidg</id>
 <name>CDai's Rapid Generator Plugin</name>
 <version>1.0</version>
 <vendor email="dc_726@163.com" url="http://www.yourcompany.com">CDai</vendor> 

 <description><![CDATA[
   Enter short description for your plugin here.<br>
   <small>most HTML tags may be used</small>
   ]]></description> 

 <change-notes><![CDATA[
   Add change notes here.<br>
   <small>most HTML tags may be used</small>
   ]]>

 </change-notes>

 <!-- please see http://confluence.jetbrains.net/display/IDEADEV/Build+Number+Ranges for description -->
 <idea-version since-build="107.105"/>

 <!-- please see http://confluence.jetbrains.net/display/IDEADEV/Plugin+Compatibility+with+IntelliJ+Platform+Products

    on how to target different products -->
 <!-- uncomment to enable plugin in all products
 <depends>com.intellij.modules.lang</depends>
 -->

 <application-components>
  <!-- Add your application components here -->
   <component>
     <implementation-class>com.cdai.plugin.rapidg.MyComponent</implementation-class>
   </component>
 </application-components>

 <project-components>
  <!-- Add your project components here -->
 </project-components>

 <actions>
  <!-- Add your actions here -->
   <action id="SayHello" class="com.cdai.plugin.rapidg.SayHelloAction" text="Say Hello!">
     <add-to-group group-id="WindowMenu" anchor="first"/>
   </action>
 </actions>

 <extensions defaultExtensionNs="com.intellij">
  <!-- Add your extensions here -->
 </extensions>
</idea-plugin>

3.運行調試

打開Run/Debug配置對話框,新加一個Plugin類型的,Use classpath of module選擇剛才的示例項目。

Intellij IDEA插件開發的示例分析

運行起來就會發現,原來會啟動一個新的Intellij IDEA實例,重新走一遍啟動配置過程,可以看到插件的名字就是plugin.xml中<name>中的值。我們可以只選中我們剛開發的插件,忽略掉其他的。現在通過Window->Say Hello!就可以觸發我們的插件了,效果就是會彈出個對話框。

Intellij IDEA插件開發的示例分析Intellij IDEA插件開發的示例分析

Intellij IDEA插件開發的示例分析

有趣的是,plugin.xml中其他的一些描述會在插件崩潰時顯示給用戶,將問題報告給插件作者。

Intellij IDEA插件開發的示例分析

4.插件配置面板

很多插件都是在Settings中有配置頁的,現在簡單介紹一下如何為我們的插件添加一個配置頁。

首先改造一下MyComponent類,主要變化就是多實現了一個Configurable接口。這個接口中有一個createComponent方法,這個方法返回Swing的JComponent對象就會顯示到Settings里。另外使用IDEA提供的Swing Designer設計器還是挺方便的,自動生成的樣式和布局代碼為了避免被修改,也不會被我們看到(與NetBeans不同),所以最終代碼很簡潔。

Intellij IDEA插件開發的示例分析

最終效果就是這樣的了,我們在設計器里設計的面板嵌入到了右邊。

Intellij IDEA插件開發的示例分析

5.帶對話框的插件

一種常見的插件就是點擊插件對應的菜單項后,彈出一個對話框(例如搜索工作空間里的類、提交SVN前的代碼確認等等)。其實很簡單,實現方法就是先創建一個Dialog,然后在Swing設計器中設計好Dialog中的控件布局,最后在Action中顯示出對話框。

以上是“Intellij IDEA插件開發的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石渠县| 安化县| 迭部县| 修武县| 儋州市| 临武县| 大化| 武穴市| 古交市| 临泉县| 秦安县| 古丈县| 巴里| 遵义县| 额济纳旗| 开阳县| 美姑县| 奇台县| 韶关市| 汉中市| 晋州市| 承德市| 临江市| 五大连池市| 光泽县| 宁津县| 宜春市| 开封市| 桐城市| 秦皇岛市| 威宁| 河池市| 通河县| 台南县| 武功县| 罗定市| 克山县| 富源县| 辽阳市| 汕头市| 乌兰察布市|