<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    weidagang2046的專欄

    物格而后知致
    隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0
    數據加載中……

    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的地方。

      上面過程中產生的項目是示例代碼的一部分,你可以下載。

      運行和調試

      你可以在一個特殊的沙盒(sandbox)--運行時工作臺(runtime workbench)中測試自己的插件。使用這種方式的時候,即使運行時工作臺崩潰了,Eclipse仍然能夠工作。通過點擊"預覽"頁面上的"載入運行時工作臺"或"在調試模式中載入運行時工作臺"鏈接。第一次運行運行時工作臺的時候,會建立eclipse\runtime-workbench-workspace文件夾。它會啟動一個新的Eclipse實例,該實例與正常的Eclipse窗口非常相似(除了你的插件可以使用了之外)。

      但是你還是首先選擇文件 -> 新建 -> 項目菜單和Java項目來建立一個Java項目。這個項目的名稱叫做Test。圖6顯示了帶有我們建立的向導和編輯器的運行時工作臺。


    圖6:運行該插件

      現在我們看一下Invokatron向導。從菜單文件->新建 -> 其它 可以看到它。查看類別Invokatron向導。選擇Invokatron向導,接著點擊"下一步"。這個向導會建立一個空的Invokatron文檔。在Container(容器)字段中選擇Test項目并點擊"完成"。一個新的Invokatron編輯器顯示出來了。這個編輯器有三個頁面:一個文本編輯頁面、一個屬性頁面(字體選擇)和一個預覽頁面(排序的、用選擇的字體繪制的)。

      支持文件

      你可以在很多位置指定自己的插件在編譯和運行時所需要的文件。這使我們這些Eclipse用戶感到很困惑。我們試圖澄清這些問題。

      支持文件分為三類:

      1、來自插件代碼自身的類和資源。它們在建立過程中就會被打包為一個或多個.jar文件。

      2、編譯和運行插件所需要的類和資源。它們都應該被包含在類路徑中,并且我們必須指明在導出的時候需要復制這些文件。

      3、與插件一起包含進來的文件(例如readme.txt文件)。它們不在類路徑中。

      在插件編輯器的"建立(Build)"頁面中可以設置編譯環境。此外,這些設置會映射為build.properties文件。在第一次看到這個頁面的時候我們可能會感到困惑,因為它有四個分開的部分:

      · 運行時信息:列出了生成的庫文件(第1類文件)。通常,在一個庫文件中包含了插件所需要的所有類,但是你可能希望把它分割成更小的塊。

      · Source Build:列出應該被包含到.jar文件中的類文件(第1類文件的輸入)

      · Binary Build:列出應該被復制到導出的插件文件夾或檔案文件中的文件(第3類文件)。上面的選擇框被選中的時候,生成的文件會被自動地包含進來。

      · 精確的類路徑項:列出了在編譯時刻你的應用程序所需要的.jar文件(第2類文件)。這些文件會被自動地添加到你的項目庫中。我們通常容易犯的一個錯誤是在"屬性"頁面中的"Java建立路徑"中和這個列表中同時包含了某個.jar文件。

      如果你的插件使用了某個特殊的庫,就必須確保把這個庫添加到項目中。接著把它添加到Source Build和精確的類路徑項中。

      插件編輯器的其它一些重要的屬性頁面有:

      · 依賴關系(Dependencies):如果你的插件依賴于其它的插件,你就必須在這兒指定。

      · 運行時(Runtime):在這個屬性頁面中你可以為插件指定特殊行為。
      導出

      插件編碼完成了,并且在工作臺中測試過之后,就該準備部署到"真實的" Eclipse環境中了。要實現這個步驟,需要返回"預覽"頁面并點擊"導出向導"鏈接。"導出選項"對話框允許你從三種部署類型中選擇一個:

      · 目錄結構:把文件部署到一個目錄中供Eclipse立即使用。接著你可以把目標位置(Destination)設置為本地的Eclipse文件夾(例如c:\dev\eclipse),直接地使用插件。

      · 單個.zip文件:相同的文件夾會被壓縮為一個.zip文件,準備好發布給客戶。接下來,你必須把這個文件解壓到Eclipse最上層的文件夾來安裝插件。你必須在文件名字段中指定.zip文件名。

      · 更新站點使用的獨立.jar文檔文件:產生一個與Eclipse用于自動更新系統相兼容的.jar文件。

      你點擊"完成"之后,會生成我們選中的輸出。如果你把輸出作為目錄結構,就必須重新啟動Eclipse以激活該插件。

      查看示例和源代碼

      關于如何編寫Eclipse插件的最好信息來源是Eclipse所提供的插件示例集。如果我只能選擇一個輔助自己編寫插件的信息來源,我一定選擇它。

      如果你要下載這些插件,只需要訪問Eclipse下載頁面并選擇最新的版本。接著看這個頁面的中間,有一個"示例插件",請下載這些.zip文件(小于2MB)。把這些文件解壓到Eclipse所在的文件夾(例如c:\dev)中。這個步驟會在eclipse/features和eclipse/plugins下建立很多文件夾。這些示例的源代碼在C:\dev\eclipse\plugins文件夾的大量.zip文件中,如下所示:

    示例 代碼位置
    SWT示例 在org.eclipse.sdk.examples.source_3.0.1\src...文件夾下
    獨立的  
    · 地址薄
    · 剪貼板
    · 文件查看器
    · Hello World
    · 懸浮幫助
    · 圖像分析器
    · Java語法查看器
    · 文本編輯器
    ...\org.eclipse.swt.examples_3.0.0\swtexamplessrc.zip 與工作臺集成的
    · 瀏覽器 ...\org.eclipse.swt.examples.browser_3.0.0\ browserexamplesrc.zip
    · 控件 ...\org.eclipse.swt.examples.controls_3.0.0\controlssrc.zip
    · SWT載入程序 ...\org.eclipse.swt.examples.launcher_3.0.0\launchersrc.zip
    · 布局 ...\org.eclipse.swt.examples.layouts_3.0.0\layoutssrc.zip
    · 繪圖 ...\org.eclipse.swt.examples.paint_3.0.0\paintsrc.zip
    · OLE 特殊文件夾:
    org.eclipse.sdk.examples.source.win32.win32.x86_3.0.1\ src\org.eclipse.swt.examples.ole.win32_3.0.0\ olewin32src.zip
    工作臺示例  
    · Java編輯器 ...\org.eclipse.ui.examples.javaeditor_3.0.0\ javaeditorexamplesrc.zip
    · 模板編輯器 ...\org.eclipse.ui.examples.javaeditor_3.0.0\ templateeditorexamplesrc.zip
    · 多頁面編輯器 ...\org.eclipse.ui.examples.multipageeditor_2.1.0<\ multipageeditorsrc.zip
    · 屬性表 ...\org.eclipse.ui.examples.propertysheet_2.1.0\ propertysheetsrc.zip
    · Readme工具 ...\org.eclipse.ui.examples.readmetool_2.1.0\readmetoolsrc.zip
    幫助示例 特殊文件夾:
    org.eclipse.help.examples.ex1_3.0.0(沒有Java文件;HTML在doc.zip之中)
    Team示例  
    · 知識庫提供程序
    · 同步共享
    ...\org.eclipse.team.examples.filesystem_3.0.0\ teamfilesystemsrc.zip
    文件比較示例  
    · 結構比較 ...\org.eclipse.compare.examples_3.0.0\ compareexamplessrc.zip
    · XML比較 ...\org.eclipse.compare.examples.xml_3.0.0\ xmlcompareexamplessrc.zip
      
      還存在一些GEF和Draw2D插件的有用示例。你可以訪問GEF頁面并下載最新版本。在版本發布頁面中間有"GEF示例",請下載該.zip文件。在寫作本文的時候,該文件是GEF-examples-3.0.1.zip(0.5MB)。把這個文件解壓到Eclipse所在的文件夾中。你將看到下面兩個示例:

    示例 代碼位置
    · 邏輯圖表示例 org.eclipse.gef.examples.source_3.0.1\src\ org.eclipse.gef.examples.logic_3.0.0\logicsrc.zip
    · 流圖表示例 org.eclipse.gef.examples.source_3.0.1\src\ org.eclipse.gef.examples.flow_3.0.1\flowsrc.zip

      查找插件開發的信息

      你首先查看的位置應該是本文前面部分中的示例。其次還有幫助系統,它的質量也非常高。相關的內容還有:

      · 平臺插件開發

      · JTD插件開發

      · PDE指導

      · Draw2D開發者指導

      · GEF開發者指導

      結論

      現在你已經有了建立Eclipse圖形化插件的足夠信息了。有了這么多類庫的幫助,只有你的想象力會限制你的作為了。其秘訣在于你要知道自己能夠使用那些工具,并且使用正確的工具完成適當的工作。

    posted on 2005-05-24 19:23 weidagang2046 閱讀(721) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 亚洲视频手机在线| 国产午夜亚洲不卡| 91亚洲国产成人久久精品网址| 国产特黄一级一片免费 | 成在人线AV无码免费| 亚洲国产电影在线观看| 精品福利一区二区三区免费视频 | 麻豆成人久久精品二区三区免费| 国产成人A亚洲精V品无码| jizz免费在线观看| 亚洲综合无码精品一区二区三区| 一个人看的hd免费视频| 久久亚洲中文字幕精品一区四| 精品免费久久久久国产一区| 亚洲精品无码mv在线观看网站| 青青青国产手机频在线免费观看| 亚洲精品天天影视综合网| 99久久精品免费视频| 亚洲an日韩专区在线| 免费网站看v片在线香蕉| 日韩精品无码永久免费网站| 国产亚洲日韩一区二区三区| 久9热免费精品视频在线观看| 亚洲三级视频在线| 日本黄色免费观看| 精品乱子伦一区二区三区高清免费播放| 九九九精品成人免费视频| 亚洲AV无码一区二区三区电影| 亚洲AV无码一区二区三区国产| 中文字幕免费观看视频| 久久亚洲sm情趣捆绑调教| 在线jyzzjyzz免费视频| 成年网在线观看免费观看网址| 久久久久久亚洲精品中文字幕| AV大片在线无码永久免费| 亚洲欧洲无码一区二区三区| 中文字幕亚洲一区| 国产精品爱啪在线线免费观看| 香蕉视频亚洲一级| 久久亚洲精品国产精品黑人| 日韩黄色免费观看|