Eclipse插件開發初遇

1、漲姿式java

   在介紹Eclipse插件開發以前先介紹一點有趣的小知識,剛剛開始的時候知道EclipseJava寫的我很驚訝,我比較奇怪爲何Eclipse使用Java寫出來的界面那麼精緻,而我本身寫的Java窗體程序簡直沒有辦法見人。git

   說來真的很是慚愧,知道今天我才知道Eclipse不是使用的SunAWTSwing技術,而是本身弄了一個底層圖形技術SWTStandard Widgit Toolkit,標準圖形工具箱),這裏先說一說這3中技術。shell

   首先是AWT,這個是Java中最先弄的一個底層圖形技術,由於Java要跨平臺,因此AWT是對所用圖形系統的支持的圖形的一個交集,從名字就能夠看出來AWTAbstract Widgit Toolkit,抽象圖形工具箱),它是對支持的圖形系統的一個抽象,就是提取公有的作成抽象圖形工具箱。這樣作的缺點也是很明顯的嘛?交集嘛,支持的圖形組件固然少了,作出來的東西簡陋也就理所固然了。架構

      Swing的思想是,基本圖形系統都支持手繪(本身寫函數畫)圖形界面。Swing的組件就都是手繪出來的。這樣用戶須要什麼就徹底能夠本身手繪就能夠了,它的缺點是要本身實現消息處理,性能不是很好。框架

      EclipseSWT技術的思想就是結合了AWTSwing的技術,它是判斷若是系統有要使用的圖形組件就使用系統提供的,若是沒有就使用手繪的方式。eclipse

   偷偷的思考了一下AWT的界面看起來不怎麼樣應該並不只僅是可用圖形少的緣由。對比一下JDeveloperEclipse就知道了,JDeveloper是使用Swing作的,Eclipse是使用SWT作的,一對比感受徹底不在一個檔次上啊。ide

   還有一個聽的比較多原來一直不清楚具體是個什麼鬼的JFace,簡單的說JFace就是對SWT進行了封裝,至關於一個開發框架避免你們都作不少重複的工做。函數

   使用Eclipse這一套技術及相關的技術來開發基於Java的圖形界面應用逼格馬上就感受高多了。想xmind就是使用Java基於Eclipse RCP架構的軟件。若是感興趣能夠了解一下RCP,EMF,GEF等相關的知識就會發現Eclipse真的很好很強大。工具

2、Eclipse插件小實例性能

   言歸正傳,咱們仍是來了解一下Eclipse的插件開發的東西,由於開發Eclipse插件涉及的相關知識比較多,因此下面的介紹感受比較朦朧,這裏主要的目的是漲一點見識,若是感興趣能夠查閱相關的詳細資料。

   首先開發Eclipse插件可使用Eclipse,以下圖所示,選擇File->New->Plug-in Project

               

圖1 新建Eclipse插件項目

   出現以下圖所示的對話框,在Project name中輸入一個項目名字單擊next

              

圖2 插件名稱肯定

   出現以下圖所示的對話框,直接單擊next

                

圖3 插件相關內容配置

   出現以下圖所示的對話框,咱們能夠選擇HelloWorld Command而後單擊finish

            

圖4 選擇插件模板

   以下圖所示是Eclipse爲咱們生成的目錄和代碼。

圖5 Eclipse插件項目工程結構圖

   這裏主要是爲了漲姿式,因此不介紹具體的代碼了,等下面運行一下程序就知道插件的做用了。不過既然是寫Eclipse插件老是要實現一點功能的,咱們就來實現一下記錄Eclipse啓動時間的功能好了。爲了區分咱們仍是先建一個新的包startup,而後新建一個類LaunchTime實現IStartup接口。新的工程結構圖以下:

圖6 Eclipse插件新的工程結構圖

LaunchTime類的代碼以下:

import org.eclipse.jface.dialogs.MessageDialog;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Shell;

import org.eclipse.ui.IStartup;


public class LaunchTime implements IStartup {


     @Override

     public void earlyStartup() {


            //獲取當前線程的Display,而且同步執行Runnable接口的run方法

            Display.getDefault().syncExec(new Runnable(){


                   @Override

                   public void run() {

                          //獲取eclipse的啓動時間

                          long start = Long.parseLong(System.getProperty("eclipse.startTime"));

                          long launchTime = System.currentTimeMillis() - start;

                          String message = "Eclipse launch cost:" + launchTime + "ms";

                          //經過Display得到一個窗口(Shell對象)

                          Shell shell = Display.getDefault().getActiveShell();

                          //使用獲得的shell,使用MessageDialog打開一個信息對話框

                          MessageDialog.openInformation(shell, "LaunchTime", message);

                         

                   }

                  

            });

     }


}

   而後以下圖所示,選擇plugin.xml文件選擇Extentions選項,單擊Add按鈕。

              

圖7 添加擴展點

   出現以下圖所示的對話框,在Extension Point filter中輸入startup,而後選擇org.eclipse.startup,而後單擊finish

             

圖8 添加starup擴展點

   而後入下圖所示,仍是選擇plugin.xml文件,選擇plugin.xml選項,而後像在圖中3所示的位置添加<startup class="plugin.startup.LaunchTime" />把咱們寫的類配置進去。

 

             

圖9 配置咱們的擴展類

   而後入下圖所示,依然選擇plugin.xml文件,而後選擇Overview選項,而後選擇途中3所表示位置的Launch或者Launch in Debug

              

圖10 插件測試

   以下圖所示,是Eclipse啓動成功以後咱們的插件的效果:

             

圖11 Eclipse啓動時間插件測試

   以下圖所示,是咱們配置生成的Eclipse插件

             

圖12 生成的Hello World插件

   當咱們單擊如上圖所示的圖標的時候,出現以下圖所示的效果:

              

圖13 生成的Hello World插件測試

 

3、插件的導出與安裝

   以下圖所示選擇File->Export選項,

             

圖14 導出插件項目

   出現以下圖所示對話框,選擇Deployable plug-ins and fragments單擊next

            

圖15 選擇要導出的項目類型

   出現以下圖所示的對話框,選擇要導出的插件項目,選擇目標文件夾,單擊finish就能夠了。

             

圖16 選擇要導出插件和導出位置

   在導出的目錄下有一個plugins文件夾下面就是導出的插件,把這個插件拷貝到Eclipse目錄下的plugins目錄下,重啓EclipseOK了。

相關文章
相關標籤/搜索