您好,登錄后才能下訂單哦!
小編給大家分享一下Intellij IDEA插件開(kāi)發(fā)的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1.創(chuàng)建Plugin工程
如果Module SDK中沒(méi)有可選的SDK,那么點(diǎn)擊New新添加一個(gè)SDK,目錄就選擇Intellij的安裝位置即可。
創(chuàng)建出的Plugin項(xiàng)目結(jié)構(gòu)很簡(jiǎn)單,只是在META-INF下多了一個(gè)plugin.xml配置文件,后文會(huì)介紹到它的用處。
2.讓插件Say哈嘍
2.1添加Component
在src目錄上Alt+Insert,可以看到New對(duì)話(huà)框中列出有三種組件,分別對(duì)應(yīng)三種級(jí)別:Application、Project、Module Component。這里我們選擇Application Component作為實(shí)例,在彈出框中輸入一個(gè)名字例如MyComponent,這樣一個(gè)組件就創(chuàng)建出來(lái)了。
然后在MyComponent中添加一個(gè)SayHello的方法,其他方法暫不實(shí)現(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)在需要添加一個(gè)Action讓使用我們插件的用戶(hù)可以通過(guò)菜單或其他方式點(diǎn)擊到插件。
Action主要工作是創(chuàng)建一個(gè)Application和MyComponent對(duì)象,代碼如下:
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配置文件
其實(shí)前面兩步新建Component和Action的同時(shí),IDEA在幫我們自動(dòng)將它們注冊(cè)到META-INF/plugin.xml中。
我們剛才添加的Application Component和Action會(huì)在<application-components>結(jié)點(diǎn)下,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.運(yùn)行調(diào)試
打開(kāi)Run/Debug配置對(duì)話(huà)框,新加一個(gè)Plugin類(lèi)型的,Use classpath of module選擇剛才的示例項(xiàng)目。
運(yùn)行起來(lái)就會(huì)發(fā)現(xiàn),原來(lái)會(huì)啟動(dòng)一個(gè)新的Intellij IDEA實(shí)例,重新走一遍啟動(dòng)配置過(guò)程,可以看到插件的名字就是plugin.xml中<name>中的值。我們可以只選中我們剛開(kāi)發(fā)的插件,忽略掉其他的?,F(xiàn)在通過(guò)Window->Say Hello!就可以觸發(fā)我們的插件了,效果就是會(huì)彈出個(gè)對(duì)話(huà)框。
有趣的是,plugin.xml中其他的一些描述會(huì)在插件崩潰時(shí)顯示給用戶(hù),將問(wèn)題報(bào)告給插件作者。
4.插件配置面板
很多插件都是在Settings中有配置頁(yè)的,現(xiàn)在簡(jiǎn)單介紹一下如何為我們的插件添加一個(gè)配置頁(yè)。
首先改造一下MyComponent類(lèi),主要變化就是多實(shí)現(xiàn)了一個(gè)Configurable接口。這個(gè)接口中有一個(gè)createComponent方法,這個(gè)方法返回Swing的JComponent對(duì)象就會(huì)顯示到Settings里。另外使用IDEA提供的Swing Designer設(shè)計(jì)器還是挺方便的,自動(dòng)生成的樣式和布局代碼為了避免被修改,也不會(huì)被我們看到(與NetBeans不同),所以最終代碼很簡(jiǎn)潔。
最終效果就是這樣的了,我們?cè)谠O(shè)計(jì)器里設(shè)計(jì)的面板嵌入到了右邊。
5.帶對(duì)話(huà)框的插件
一種常見(jiàn)的插件就是點(diǎn)擊插件對(duì)應(yīng)的菜單項(xiàng)后,彈出一個(gè)對(duì)話(huà)框(例如搜索工作空間里的類(lèi)、提交SVN前的代碼確認(rèn)等等)。其實(shí)很簡(jiǎn)單,實(shí)現(xiàn)方法就是先創(chuàng)建一個(gè)Dialog,然后在Swing設(shè)計(jì)器中設(shè)計(jì)好Dialog中的控件布局,最后在Action中顯示出對(duì)話(huà)框。
以上是“Intellij IDEA插件開(kāi)發(fā)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。