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

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

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

    解決之道

    個人日記
    posts - 33, comments - 1, trackbacks - 0, articles - 7
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    [導入]Eclipse插件開發

    Posted on 2008-07-31 14:53 閱讀(1493) 評論(0)  編輯  收藏

    一、新建項目。?
      按照上一篇的新建插件項目的方法,新建一個名為myplugin2的插件項目,注意:在最后一步選擇“建立白空插件項目”,除此,其它都一樣。截圖如下:


    ???
    ???????附注:發現又有上一篇的錯誤,中文版的Eclipse在新建項目時,比較容易有“由于類路徑錯誤(不完整或涉及循環),所以未構建項目。”這類的錯誤。好辦,因為中文包只是一些文本文件,對開發沒用,用前面一篇所說的方法刪除那些對中文包的引用(前面字符為ECLIPSE_HOME_LANGUAGE_LINK…….),如下圖:??

    ??
    二、插件開發的幾個關注點。?
      a)?庫引用。如上附注所說庫引用是在建立插件初期要設置好的地方,不過一經設置基本不需要再改變。功能類似于JDK的classpath或者Jbuilder里的庫引用。?
      b)?插件JAVA源代碼。今后主要的工作,狂寫代碼吧。主要都是一些*.JAVA文件。?
      c) 項目根目錄下的plugin.xml文件。這個文件是插件的入口文件,Eclipse根據這個文件中的設置來加載插件。代碼寫完了,要讓Eclipse加載你的代碼就要在這里面做些手腳了,這些手腳有個術語叫“設置擴展點”。象在Eclipse的加個主菜單、視圖、按鈕,都在這個文件里面做不同的擴展點,后面的教程會看到這個文件的使用。要人會說那我開發一個系統會有很多的菜單和按鈕,那是不是都要設置這個文件呢?回答:不必,這里面只設置主要和Eclipse接壤的擴展點,其它系統里的菜單按鈕就沒必要了,今后會講到。?
    ??
    三、設置庫引用。?
      在刪除了上面附注所說的無用且出錯的引用,接下來我們要加入一些開發插件要用到的庫。是那些呢?呵呵,前面我們還是用向導建立了一個helloword插件嗎,參考它的就行了。如下圖:?

    ??
      手工加可真累,這里有個好辦法。把目錄C:\eclipse2.1.3\eclipse\workspace\myplugin\下的.classpath文件拷貝到C:\eclipse2.1.3\eclipse\workspace\myplugin2目錄就行了。所有關于庫引用的設置全保存在這個文件中。最后別忘記刷新一下項目,如下圖所示:?


    附注說明:

      有些文章在這里是用“文件>導入...>外部插件和段”來提供插件開發支持庫的引用,本文不采用這種方法,因為這種會將支持庫(也是一種插件項目)會新建很多相應項目,讓開發界面顯得很亂。還不如本文所用的建立庫引用變量的方法方便簡潔。??
    ??

    四、寫源代碼。?
      a)?新建一個包。方法如下圖所示。?
       

      包名如下:?

       
    ??
      結果如下:?

       

    ??
      b)?然后將上一章的myplugin的SampleAction直接移動本項目myplugin2中就可以了(Eclipse支持鼠標拖拉操做)。?
      c)??本文SampleAction做了一些小修改(刪除了注釋和構造函數)。代碼如下:??

    public?class?SampleAction?implements?IWorkbenchWindowActionDelegate?{??
    ????private?IWorkbenchWindow?window;??
    ????public?void?run(IAction?action)?{??
    ????????//這是打開一個提示窗口??
    ????????MessageDialog.openInformation(window.getShell(),?"myplugin?插件",?"這是手工做的插件");??
    ????}??
    ????public?void?selectionChanged(IAction?action,?ISelection?selection)?{}??
    ????public?void?dispose()?{}??
    ????public?void?init(IWorkbenchWindow?window)?{??
    ????????this.window?=?window;??
    ????}??
    }??

    ??

    五、在plugin.xml文件中加入擴展點的代碼。?
      庫將本項目plugin.xml文件打開,并轉到其源代碼視圖。將如下代碼加入到“</runtime>”之后。(這些xml還是從上一章的項目搬過來的??

    <requires>??
    ??????<import?plugin="org.eclipse.core.resources"/>??
    ??????<import?plugin="org.eclipse.ui"/>???
    </requires>??
    <extension?point="org.eclipse.ui.actionSets">??
    ??????<actionSet?label="樣本操作集"?visible="true"?id="myplugin.actionSet">??
    ?????????<menu?label="樣本菜單"?id="sampleMenu">??
    ????????????<separator?name="sampleGroup">?</separator>??
    ?????????</menu>??
    ?????????<action??
    ???????????????label="樣本操作"??
    ???????????????icon="icons/sample.gif"??
    ???????????????class="com.glchengang.SampleAction"??
    ???????????????tooltip="Hello,Eclipse?world"??
    ???????????????menubarPath="sampleMenu/sampleGroup"??
    ???????????????toolbarPath="sampleGroup"??
    ???????????????id="com.glchengang.SampleAction">??
    ?????????</action>??
    ?????????<action??
    ???????????????label="樣本操作2"??
    ???????????????icon="icons/sample.gif"??
    ???????????????class="com.glchengang.SampleAction"??
    ???????????????tooltip="Hello,Eclipse?world2"??
    ???????????????menubarPath="sampleMenu/sampleGroup2"??
    ???????????????toolbarPath="sampleGroup2"??
    ???????????????id="com.glchengang.SampleAction2">??
    ?????????</action>??
    ??????</actionSet>??
    ???</extension>??
    ??
    說明:??
      a) requires域中定義了該插件所要使用的依賴插件,隨著開發的不斷深入,這里將會填加更多的引用,現在兩項就夠了?
      b) 在extension中說明了要們要擴展org.eclipse.ui.?actionSets擴展點,?<actionSet>…..</?actionSet?>表示一個action組(按鈕、菜單)。還有其它類型的擴展點,如org.eclipse.ui.views是視圖的擴展點,org.eclipse.ui.editors是編輯器的擴展點,各種擴展點在eclipse的幫助中有詳細的說明。label是顯示的名稱。id是唯一標識符,只要保證在plugin.xml文件不存在重復的id就行了,這里建議以包路徑和類名的組合來做為id。?
      c) <menu>….</menu>表示菜單 separator標簽是一個結束符,它可以對菜單分組?
      d) <action>....</action>表示按鈕。Icon是圖片的路徑,絕對路徑是什么大家實際對照就知道了,如果eclipse找不到這個圖片,默認是一個紅色實心小框。Class是這個按鈕所對應的類,注意把包名寫全,這樣比較規范些。menubarPath表示把這個action做成一個菜單放在上前<menu>….</menu>定義的主菜單下。toolbarPath表示把這個action做成一個工具欄按鈕。在這里為了方便比較我將這個action的設置復制成了兩份,大家可以自己改改其中的設置,然后看看實際效果。?
      e) 各詳細的plugin.xml大家可以參考eclipse自帶的幫助文件,這里僅做一個入門性的說明。?
    ??
    六、按鈕前面一章所說的方法運行插件(運行之前注意將原來那個向導做的myplugin項目關閉掉,關閉方法:鼠標右鍵點擊此項目->彈出菜單中選擇關閉項目)。插件效果如下圖??

    ??


    kelven 2006-12-21 17:34 發表評論

    文章來源:http://www.tkk7.com/zhangrenquan/articles/89332.html

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久精品国产精品亚洲精品 | 亚洲电影唐人社一区二区| 一个人晚上在线观看的免费视频| 无码视频免费一区二三区| 亚洲成a人片在线看| 在人线av无码免费高潮喷水| 亚洲最大中文字幕| 亚洲人成在线影院| 日韩人妻一区二区三区免费| 久久久久无码精品亚洲日韩| 国产精成人品日日拍夜夜免费| 久久精品亚洲视频| 亚洲av日韩专区在线观看| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲春色另类小说| 久久精品国产免费观看| 亚洲六月丁香六月婷婷色伊人| 男女超爽刺激视频免费播放| 亚洲人成电影网站色| 国产成人免费永久播放视频平台| 麻豆一区二区三区蜜桃免费| 亚洲国产综合无码一区二区二三区| 一级免费黄色大片| 好看的电影网站亚洲一区 | 妞干网免费观看视频| 色五月五月丁香亚洲综合网| 国产成人亚洲精品91专区手机| 中国精品一级毛片免费播放| 久久亚洲精品成人无码网站| 美女网站在线观看视频免费的| 亚洲大尺度无码专区尤物| 国产在线观看麻豆91精品免费| 国产成人精品亚洲一区| 亚洲VA中文字幕无码毛片| 日本精品人妻无码免费大全| 亚洲va在线va天堂va不卡下载| 国产精品1024永久免费视频| 麻豆亚洲AV成人无码久久精品 | 24小时免费直播在线观看| 一级黄色免费毛片| 亚洲香蕉免费有线视频|