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

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

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

    Java海闊天空

    編程是我的生活,但生活不僅僅是編程。

    [翻譯]eclipse插件開發(1-1):action

    eclipse平臺允許我們通過插件擴展出另一個插件,與平臺緊密集成為用戶提供更好的體驗,本文將向您闡述如何向視圖和編輯器中添加動作(上下文菜單),并且允許為您自己定義的視圖和編輯器添加其他新的動作。文中的每一個示例將詳細的向您展示每一種不同應用的特征。

    上面的圖片顯示了插件中能添加動作的眾多區域:

    1、  在視圖和編輯器中添加上下文菜單

    2、  在視圖上添加工具欄和下拉菜單

    3、  在工作臺窗口的主工具欄和菜單上添加動作 

    本文將對上面的種種進行演示,并通過實例形式向您詳細講解。 

    我們假設您有插件開發的基礎,如果想獲得在eclipse平臺上開發插件的更多信息,請閱讀Jim Amsden的入門文章“Your First Plug-in”,該示例的運行結果,請點擊“running the examples”。 

    在上下文菜單中添加動作

    可以在視圖和編輯器的上下文菜單中添加動作并緊密集成,比如,VCM插件在存在的視圖如NavigatorPackages中添加了許多新的動作,對資源進行版本管理.為了在上下文菜單中添加新的動作,eclipse提供了插件點org.eclipse.ui.popupMenus,包括兩種類型的動作,即能添加到視圖或編輯器的上下文菜單中,也能為指定的對象類型添加上下文菜單。下面的三個示例將為您詳細說明。 

    示例一:為默認的文本編輯器添加新的動作
          讓我們看看如何向默認的文本編輯器添加一個動作:
        ①<viewerContribution
              id="org.eclipse.ui.articles.action.contribution.popup.editor"
        ②   targetID="#TextEditorContext">
        ③   <action
                 id="org.eclipse.ui.articles.action.contribution.editor.action1"
                 label="Editor Action 1"
                 icon="icons/red_dot.gif"
        ④  menubarPath="additions"
        ⑤  class="first.plugin.action.ContextMenuAction">
              </action>    
          </viewerContribution>
        </extension>

     上面的xml向指定編輯器添加了一個上下文菜單,該擴展叫viewerContribution(①),可以用于視圖和編輯器。 

    targetID屬性(②)指定上下文菜單所依附的目標視圖和編輯器標識符,官方文檔提供了可用的標識符列表,如果您設置的標識符不存在,則上下文菜單不被注冊。一個視圖或編輯器可以有不只一個上下文菜單。 

    action(③)標記用于定義一個動作,id是該動作的標識符,labelicon表示菜單項的顯示文本和圖標,icon為可選項。menubarPath(④)屬性指定動作菜單項的位置,從上下文菜單的根開始,action將被添加到這里。在本示例中,“additions”其實是org.eclipse.ui.IWorkbenchActionConstants類的一個常量值(MB_ADDITIONS)。添加的動作獨立成組,在上述情況下,如果menubarPath屬性沒有指定,工作臺將首先添加到“additions”組中,如果additions不存在,動作將被添加到上下文菜單的末尾。 

    class(⑤)屬性是一個菜單項被用戶選中后將要執行的動作的類,如果是編輯器的上下文菜單,該類必須實現org.eclipse.ui.IEditorActionDelegate接口,如果是視圖的上下文菜單,則實現org.eclipse.ui.IViewActionDelegate接口。有一個非常重要的情況就是只有當用戶選擇了菜單項后該類才被工作臺加載,這就意味著很多初始化的邏輯必須在XML文件中描述。一旦該類被工作臺加載,該類將可以控制動作的啟用與禁用。如果動作被選中,將執行run()方法完成需要的功能。 

    下面是一個典型的實現類: 
        
    package first.plugin.action;
        import org.eclipse.jface.action.IAction;
        import org.eclipse.jface.dialogs.MessageDialog;
        import org.eclipse.jface.viewers.ISelection;
        import org.eclipse.ui.IEditorActionDelegate;
        import org.eclipse.ui.IEditorPart; 
        public class ContextMenuAction implements IEditorActionDelegate { 
            @Override
            public void setActiveEditor(IAction action, IEditorPart targetEditor) {
            } 

        @Override
            public void run(IAction action) {
                MessageDialog.openInformation(null, "", "我是上下文菜單");
            } 

        @Override
            public void selectionChanged(IAction action, ISelection selection) {
            }

    }

    posted on 2010-02-06 10:37 李贊紅 閱讀(2285) 評論(0)  編輯  收藏


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


    網站導航:
     

    導航

    <2010年2月>
    31123456
    78910111213
    14151617181920
    21222324252627
    28123456
    78910111213

    統計

    常用鏈接

    留言簿(12)

    隨筆檔案(28)

    相冊

    技術友情博客

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久99青青精品免费观看| 亚洲av午夜精品无码专区| 亚洲无码在线播放| 少妇亚洲免费精品| 亚洲Av无码乱码在线播放| 免费a级黄色毛片| 免费二级毛片免费完整视频| 成人免费无码精品国产电影| 日本a级片免费看| 亚洲M码 欧洲S码SSS222| 亚洲精品国产日韩无码AV永久免费网| 无码欧精品亚洲日韩一区夜夜嗨 | 日日麻批免费40分钟日本的| 亚洲视频免费在线看| 91九色精品国产免费| 免费无码又爽又刺激聊天APP| 免费无码不卡视频在线观看| 日韩免费a级在线观看| 亚洲va中文字幕无码| 亚洲女久久久噜噜噜熟女| 亚洲伊人tv综合网色| 亚洲国产成人精品激情| 亚洲熟妇AV一区二区三区宅男| 337P日本欧洲亚洲大胆艺术图| 中美日韩在线网免费毛片视频| 99久久免费国产特黄| 中文字幕免费在线| 日韩一区二区三区免费体验| 国产成人毛片亚洲精品| 亚洲avav天堂av在线不卡| 亚洲国产福利精品一区二区| 亚洲国产成人久久精品大牛影视| 成年免费大片黄在线观看com| 97无码人妻福利免费公开在线视频 | 亚洲人和日本人jizz| 亚洲精品无码国产片| 亚欧洲精品在线视频免费观看| 亚洲一区二区在线免费观看| 在线a级毛片免费视频| 国产精品亚洲不卡一区二区三区| 中文字幕亚洲综合久久|