Eclipse插件開發快速入門(一)

轉自:http://blog.csai.cn/user1/413/archives/2005/1786.html

Eclipse插件開發快速入門(一)

剛纔我在修理自己的汽車,我需要擰下一個螺絲。於是我打開自己的扳手工具包,試圖找到合適的扳手。但是那些扳手的型號都不對,因爲那個螺絲都屬於公制標準的。我只能使用與理想尺寸最相近的扳手。這是一個不好的想法;結果我把那個螺絲弄裂了,只好去買一個專用的工具來下掉它。這個故事的精髓是:實現特定的事務永遠需要使用恰當的工具

  Eclipse是一個非常流行的Java集成開發環境(IDE),它是NetBeans/SunOne Studio、Jbuilder、和IntelliJ IDEA的強有力的競爭者。Java程序員羣體正在迅速地遷移到Eclipse上,因爲它是免費的、開放源代碼的、質量很好,而且非常容易定製。

  本文的內容是如何在Eclipse中編寫插件(plugin)。本文的目標讀者是哪些人呢?很多Eclipse用戶簡單地使用IDE而不需要進行定製;很多人會使用他人建立的插件,這些人不是本文的目標讀者。有些用戶希望定製Eclipse;有些人將爲他們公司的僱員開發工具;有些人希望銷售與自己的產品相關的工具;還有一些人希望使用其它名稱轉售預安裝了某些工具的Eclipse。這些人組成了本文的目標受衆。開始編寫Eclipse插件的前提條件是瞭解如何使用Eclipse和編寫Java程序,並且對標準Widget工具包(SWT)有很好的理解。

  安裝Eclipse

  如果你已經使用了Eclipse 3,那麼可以跳過這一段落。如果沒有安裝該軟件,你首先需要下載和安裝它。你可以簡單地從
Eclipse下載頁面下載最新的穩定版本,接着把下載的文件解壓到一個文件夾中(例如c:/dev)。在寫作本文的時候,這個文件是eclipse-SDK-3.0.1-win32.zip(85MB)。這個過程會建立c:/dev/eclipse文件夾。

  請注意,在這個文件夾下已經有一個叫做plugins的文件夾了。你可以快速瀏覽一下,會發現很多的已經安裝好的插件。這是怎麼回事呢?因爲Eclipse的核心相對較小,幾乎每個部分都是一個插件。

  架構

  Eclipse由一個很小的核心和核心之上的大量插件組成。有些插件僅僅是供其它插件使用的庫。其中存在很多你可以利用的工具。所有插件使用的基礎庫是:

  · 標準Widget工具包(SWT):Eclipse中處處使用的圖形化組件:按鈕,圖像、光標、標籤等等。佈局管理類。通常這個庫被用於代替Swing。

  · JFace:菜單、工具條、對話框、參數選擇、字體、圖像、文本文件的類和嚮導基類。

  · 插件開發環境(PDE):輔助數據操作、擴展、建立過程和嚮導的類。

  · Java開發者工具包(JDT):用於編程操作Java代碼的類。

  上面的每一個類都有自己專有的功能,其中一些還可以單獨使用(儘管它們內在地依賴於其它類)。例如,SWT不僅僅只用於插件;它還可以被用於建立非Eclipse的、獨立的應用程序。還有一些其它的庫沒有被列舉出來。

  圖1顯示了Eclipse不同層次之間的關係。


圖1:分層的類庫


  安裝GEF和Draw2D運行時

  在默認情況下,這兩個面向對象的庫(圖形化編輯器框架組件GEF和Draw2D)是沒有被安裝的。在本文中我們需要利用它們,因此首先需要安裝它們。你可以在GEF主頁面下載GEF和Draw2D,下載3.0.1或以後版本,把文件保存爲GEF-SDK-3.0.1.zip(5.5MB)。把這個文件解壓到Eclipse文件夾下(這是包含plugins子文件夾的文件夾)。這兩個庫自身也是作爲插件加進來的。

  這些庫提供了什麼樣的功能?它們構成了建立圖形化插件的基礎。圖形化插件通常顯示一些對象(例如方框和標籤,用線和箭頭鏈接在一起)。這些對象和連接器的繪製都是由Draw2D來處理的。但是繪製過程僅僅是圖形化編輯器實現的一半功能。另一半--編輯器命令、工具條、拖放功能、打印--由GEF來完成。

  配置PDE選項

  安裝上述的各種部件之後,下一步就是定製或至少是熟悉插件配置選項。這些選項在菜單窗體 -> 選項的"插件開發"類別下選擇。瀏覽一下插件用到的數以十計的配置選項。你可以特地看一下Target Environment(目標環境)類別。它允許我們選擇默認的操作系統、視窗(windowing)系統、CPU架構和語言。

  我們感興趣的還有Plug-in Development(插件開發)透視圖(透視圖是一組視圖參數選擇,包括面板、視圖、工具條等等,根據不同的事務發生改變,可以把它看出Eclipse中的"模式")。通過選擇菜單中的窗口-> 打開透視圖 -> 其它,然後在列表中選擇"插件開發"就可以看到它了。它與Java透視圖相似,但是擁有一個插件視圖,可以顯示所有檢測到的插件。圖2顯示瞭如何激活這個透視圖,並顯示了該透視圖。


圖2:插件開發透視圖
建立一個簡單插件

  建立插件最簡單的辦法是使用文件-> 新建->插件項目嚮導所提供的模板。接着輸入一個項目名稱(例如"Invokatron")。這是什麼意思呢?我們將建立的插件是Invokatron,它是一個供Java代碼使用的代碼生成圖形化編輯器。本文刪除了Invokatron的路徑,但是很明顯這個雄心勃勃的項目直到下次安裝時纔會完成。

  在"下一步"頁面上,除了類名之外其它的選項都不變,類名輸入invokatron.InvokatronPlugin。在"插件內容"頁面上,輸入你認爲適合的任何信息。在"模板"頁面上,選中檢查框以激活模板。我們可以在多個模板中進行選擇:

  · Hello, World

  · 簡單的XML編輯器

  · 多頁面編輯器和嚮導

  · 透視圖擴展

  · 彈出菜單

  · 屬性頁面

  · 視圖

  · 擁有前面的一個或多個數據項的自定義插件

  對於本文的示例,我們使用自定義插件模板。選擇"多頁面編輯器"-"新建文件嚮導"-"屬性"頁面。在"下一步"頁面輸入下面一些值:
"多頁面編輯器"頁面(圖3所示):

  · Java程序包名稱:invokatron.editor

  · 編輯器類名稱:InvokatronEditor

  · 編輯器輔助類名稱:InvokatronEditorContributor

  · 編輯器名稱:Invokatron Editor

  · 文件擴展名:invokatron


圖3:"多頁面編輯器"設置

  "新建嚮導"頁面(圖4所示):

  · Java程序包名稱:invokatron.wizard

  · 嚮導類別ID:Invokatron

  · 嚮導類別名稱:Invokatron Wizard

  · 嚮導類名稱: InvokatronWizard

  · 嚮導頁面類名稱:InvokatronWizardPage

  · 嚮導名稱:Invokatron Wizard

  · 文件擴展名: invokatron

  · 初始文件名: MyClass.invokatron


圖4:"新建嚮導"設置

  "屬性"頁面(圖5所示):

  · Java程序包名稱:invokatron.properties

  · 屬性頁面類: InvokatronPropertyPage

  · 屬性頁面名稱:Invokatron Properties

  · 目標類:org.eclipse.core.resources.IFile

  · 文件名過濾器:*.*


圖5:"屬性"頁面設置

  這個時候Eclipse生成了大量的文件:

  · plugin.xml:描述該插件的主文件。它包含了輔助代碼生成、庫、插件依賴關係和擴展指向的一些信息。

  · build.properties:用於描述建立(build)過程的文件。它主要用於指定需要的庫。

  · invokatron/*.java:插件類。

  · sample.gif:菜單項顯示的圖標。

  plugin.xml文件和build.properties一起被顯示在多頁面編輯器中。第一個頁面("預覽")允許你在測試環境中導出和運行該插件。"導出"的意思是通過生成一些代碼、接着編譯和打包來完善該插件。

  查看一下類,你會發現它實際上沒有做什麼操作。添加菜單選項的代碼在哪兒呢?框架組件從plugin.xml文件包含的信息中簡單地生成了必要的代碼。你可以查看一下這個文件。它的最後一部分包含了一個擴展列表,這是這些類可以插入Eclipse的地方。
(未完)
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章