1.創(chuàng)建Plugin工程
如果Module SDK中沒有可選的SDK,那么點(diǎn)擊New新添加一個(gè)SDK,目錄就選擇Intellij的安裝位置即可。
創(chuàng)建出的Plugin項(xiàng)目結(jié)構(gòu)很簡單,只是在META-INF下多了一個(gè)plugin.xml配置文件,后文會(huì)介紹到它的用處。
2.讓插件Say哈嘍
2.1添加Component
在src目錄上Alt+Insert,可以看到New對話框中列出有三種組件,分別對應(yīng)三種級別:Application、Project、Module Component。
這里我們選擇Application Component作為實(shí)例,在彈出框中輸入一個(gè)名字例如MyComponent,這樣一個(gè)組件就創(chuàng)建出來了。
然后在MyComponent中添加一個(gè)SayHello的方法,其他方法暫不實(shí)現(xiàn),源代碼如下所示:
<code>
packagecom.cdai.plugin.rapidg;
importcom.intellij.openapi.components.ApplicationComponent;
importcom.intellij.openapi.ui.Messages;
importorg.jetbrains.annotations.NotNull;
/**
*?My?Component
*?User:?cdai
*?Date:?13-11-4
*?Time:?上午10:08
*/
publicclassMyComponentimplementsApplicationComponent?{
publicMyComponent()?{
}
publicvoidinitComponent()?{
//?TODO:?insert?component?initialization?logic?here
}
publicvoiddisposeComponent()?{
//?TODO:?insert?component?disposal?logic?here
}
@NotNull
publicString?getComponentName()?{
return"MyComponent";
}
publicvoidsayHello()?{
//?Show?dialog?with?message
Messages.showMessageDialog(
"Hello?World!",
"Sample",
Messages.getInformationIcon()
);
}
}
</code>
## 螺絲刀積分iOS大姐夫
2.2添加Action
現(xiàn)在需要添加一個(gè)Action讓使用我們插件的用戶可以通過菜單或其他方式點(diǎn)擊到插件。
Action主要工作是創(chuàng)建一個(gè)Application和MyComponent對象,代碼如下:
packagecom.cdai.plugin.rapidg;
importcom.intellij.openapi.actionSystem.AnAction;
importcom.intellij.openapi.actionSystem.AnActionEvent;
importcom.intellij.openapi.application.Application;
importcom.intellij.openapi.application.ApplicationManager;
/**
*?Say?Hello?Action
*?User:?cdai
*?Date:?13-11-4
*?Time:?上午10:16
*/
publicclassSayHelloActionextendsAnAction?{
@Override
publicvoidactionPerformed(AnActionEvent?e)?{
Application?application?=?ApplicationManager.getApplication();
MyComponent?myComponent?=?application.getComponent(MyComponent.class);
myComponent.sayHello();
}
}
2.3配置文件
其實(shí)前面兩步新建Component和Action的同時(shí),IDEA在幫我們自動(dòng)將它們注冊到META-INF/plugin.xml中。
我們剛才添加的Application Component和Action會(huì)在結(jié)點(diǎn)下,plugin.xml最終是下面的樣子:
com.cdai.plugin.rapidg
CDai's?Rapid?Generator?Plugin
1.0
http://www.yourcompany.com">CDai
Enter?short?description?for?your?plugin?here.
most?HTML?tags?may?be?used
]]>
Add?change?notes?here.
most?HTML?tags?may?be?used
]]>
on?how?to?target?different?products?-->
com.intellij.modules.lang
-->
com.cdai.plugin.rapidg.MyComponent
3.運(yùn)行調(diào)試
打開Run/Debug配置對話框,新加一個(gè)Plugin類型的,Use classpath of module選擇剛才的示例項(xiàng)目。
運(yùn)行起來就會(huì)發(fā)現(xiàn),原來會(huì)啟動(dòng)一個(gè)新的Intellij IDEA實(shí)例,重新走一遍啟動(dòng)配置過程,可以看到插件的名字就是plugin.xml中中的值。
我們可以只選中我們剛開發(fā)的插件,忽略掉其他的?,F(xiàn)在通過Window->Say Hello!就可以觸發(fā)我們的插件了,效果就是會(huì)彈出個(gè)對話框。