最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Intellij IDEA插件開發(fā)入門詳解

 更新時間:2018年02月26日 16:38:35   作者:cdai  
這篇文章主要介紹了Intellij IDEA插件開發(fā)入門詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

現(xiàn)今的IDE盡管有如“洪水猛獸”般強大,但要知道再強大的IDE也沒法提供給使用者想要的一切功能,所以IDE一般都提供有API接口供開發(fā)者自行擴展。下面以Intellij IDEA 12下的插件開發(fā)為例,來看一下如何進一步增強IDE以適應(yīng)開發(fā)者的需求。

1.創(chuàng)建Plugin工程

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


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

2.讓插件Say哈嘍

2.1添加Component

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


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

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

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


Action主要工作是創(chuàng)建一個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>結(jié)點下,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.運行調(diào)試

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


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


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


4.插件配置面板

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

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


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


5.帶對話框的插件

一種常見的插件就是點擊插件對應(yīng)的菜單項后,彈出一個對話框(例如搜索工作空間里的類、提交SVN前的代碼確認等等)。其實很簡單,實現(xiàn)方法就是先創(chuàng)建一個Dialog,然后在Swing設(shè)計器中設(shè)計好Dialog中的控件布局,最后在Action中顯示出對話框。具體代碼就不列舉了,有需求可以找我索取。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Eclipse的Debug調(diào)試技巧大全(總結(jié))

    Eclipse的Debug調(diào)試技巧大全(總結(jié))

    這篇文章主要介紹了Eclipse的Debug調(diào)試技巧大全(總結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • 使用TraceId在Spring Cloud中實現(xiàn)線上問題快速定位

    使用TraceId在Spring Cloud中實現(xiàn)線上問題快速定位

    在微服務(wù)架構(gòu)中,服務(wù)間的互相調(diào)用使得問題定位變得復(fù)雜,在此背景下,TraceId為我們提供了一個在復(fù)雜環(huán)境中追蹤請求路徑和定位問題的工具,本文不僅介紹TraceId的基本概念,還將結(jié)合真實場景,為您展示如何在Spring Cloud中應(yīng)用它
    2023-09-09
  • Java中的CyclicBarrier循環(huán)柵欄詳解

    Java中的CyclicBarrier循環(huán)柵欄詳解

    這篇文章主要介紹了Java中的CyclicBarrier循環(huán)柵欄詳解,CyclicBarrier循環(huán)柵欄是用來進行線程協(xié)作,等待線程滿足某個計數(shù),構(gòu)造時設(shè)置計數(shù)個數(shù),每個線程執(zhí)行到某個需要“同步”的時刻調(diào)用 await()方法進行等待,當(dāng)?shù)却木€程數(shù)滿足計數(shù)個數(shù)時,繼續(xù)執(zhí)行,需要的朋友可以參考下
    2023-12-12
  • spring boot微服務(wù)自定義starter原理詳解

    spring boot微服務(wù)自定義starter原理詳解

    這篇文章主要介紹了spring boot微服務(wù)自定義starter原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Mybatis實現(xiàn)增刪改查

    Mybatis實現(xiàn)增刪改查

    這篇文章主要介紹了Mybatis實現(xiàn)增刪改查,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-01-01
  • 用Java編寫經(jīng)典小程序

    用Java編寫經(jīng)典小程序

    非常實用的12種基礎(chǔ)算法的經(jīng)典案例,對于初學(xué)者來說有很大的幫助,數(shù)量有限需要的朋友可以參考下
    2018-04-04
  • Intellij Mybatis連接Mysql數(shù)據(jù)庫

    Intellij Mybatis連接Mysql數(shù)據(jù)庫

    最近在搞android的項目,在開發(fā)過程中遇到了好多問題,今天小編給大家說下mybatis連接MySQL數(shù)據(jù)庫的方法,感興趣的朋友跟著小編一起學(xué)習(xí)吧
    2016-10-10
  • SpringSecurity從數(shù)據(jù)庫中獲取用戶信息進行驗證的案例詳解

    SpringSecurity從數(shù)據(jù)庫中獲取用戶信息進行驗證的案例詳解

    這篇文章主要介紹了SpringSecurity從數(shù)據(jù)庫中獲取用戶信息進行驗證的案例詳解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • SpringBoot和MybatisPlus實現(xiàn)通用Controller示例

    SpringBoot和MybatisPlus實現(xiàn)通用Controller示例

    本文主要介紹了SpringBoot和MybatisPlus實現(xiàn)通用Controller示例,只需創(chuàng)建實體類和mapper接口,就可以實現(xiàn)單表的增刪改查操作,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • Java中ArrayList和LinkedList有什么區(qū)別舉例詳解

    Java中ArrayList和LinkedList有什么區(qū)別舉例詳解

    這篇文章主要介紹了Java中ArrayList和LinkedList區(qū)別的相關(guān)資料,包括數(shù)據(jù)結(jié)構(gòu)特性、核心操作性能、內(nèi)存與GC影響、擴容機制、線程安全與并發(fā)方案,以及工程實踐場景,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-02-02

最新評論

工布江达县| 额尔古纳市| 定远县| 渝中区| 贡山| 宝鸡市| 泽库县| 吉隆县| 无为县| 刚察县| 哈尔滨市| 广丰县| 洛川县| 胶南市| 太仆寺旗| 西林县| 涞水县| 菏泽市| 新田县| 辽宁省| 岱山县| 五指山市| 霸州市| 南京市| 怀仁县| 西青区| 吐鲁番市| 涞源县| 定边县| 江孜县| 东丽区| 疏附县| 会理县| 全南县| 阜宁县| 金门县| 金坛市| 云龙县| 仙游县| 尉犁县| 四会市|