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

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

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

    隨筆 - 6  文章 - 129  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(14)

    隨筆檔案(6)

    文章分類(467)

    文章檔案(423)

    相冊

    收藏夾(18)

    JAVA

    搜索

    •  

    積分與排名

    • 積分 - 825755
    • 排名 - 49

    最新評論

    閱讀排行榜

    評論排行榜

    源文:http://hi.baidu.com/wyyhzc/blog/item/dbb498196a493e4042a9ad11.html
    往eclipse的默認NavigationView中,添加右鍵菜單項是非常容易的,甚至不需要自己寫代碼,只要在plugin.xml中添加擴展項便可以了。
    但是這遠遠達不到我們的要求。如果要我們在自己的rcp程序的View中添加右鍵彈出菜單就不是很容易了。現(xiàn)在我介紹一下如何在一個樹視圖中針對不同的TreeObject添加不同的右鍵彈出菜單的方法。
    如果不清楚如何構(gòu)建一個樹,請參考
    http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/CatalogSWT-JFace-Eclipse.htm, 這里有很多關(guān)于eclipse Tree的實例。簡單將來,Eclipse中創(chuàng)建樹有兩種,一種是使用SWT提供的樹,依照一定的格式給其提供數(shù)據(jù),我自己只用這種方法創(chuàng)建一些簡單的、 靜態(tài)的樹。另一種方法,針對于RCP程序,可以使用JFace提供的TreeViewer類,非常靈活并且易于擴展。使用TreeViewer需要實現(xiàn) ITreeContentProvider接口和ITreeLableProvider接口。由于我的時間有限,不能向大家提供具體的實現(xiàn)方法,請原諒。 可以參考以下文章:http://eclipse.org/articles/treeviewer-cg/TreeViewerArticle.htm
    在大體了解了如何構(gòu)造一個樹之后,我們下面就來介紹右鍵彈出菜單context menu的實現(xiàn)方法。
    一個TreeViewer 必須繼承ViewPart方法,并且重寫其中的createPartControl(Composite parent)類。


    1    public void createPartControl(Composite parent) {
    2
    3    /* Set the imput data and image model of the tree viewer,
    4    * and layout the viewer on the left part of the composite.
    5    */
    6     viewer = new TreeViewer(parent);
    7     viewer.setContentProvider(new ViewContentProvider());
    8     viewer.setLabelProvider(new ViewLabelProvider());
    9     viewer.setInput(createDummyModel());
    10
    11   createActions();
    12   createMenus();
    13   createContextMenu(parent);
    14
    15   //handles the actions related with treeviewer.
    16   makeActions(parent);
    17 }
    其中,第7到9行為設(shè)置TreeViewer的內(nèi)容提供器、圖像提供器、以及初始化時的輸入數(shù)據(jù)。第13行為創(chuàng)建右鍵彈出菜單。

    1     private void createContextMenu(Composite parent) {
    2
    3          MenuManager mgr = new MenuManager();
    4          mgr.setRemoveAllWhenShown(true);
    5          mgr.addMenuListener(new IMenuListener() {
    6              public void menuAboutToShow(IMenuManager manager) {
    7                 fillContextMenu(manager);
    8              }
    9          });
    10     Menu menu = mgr.createContextMenu(viewer.getControl());
    11      viewer.getControl().setMenu(menu);
    12     getSite().registerContextMenu(mgr, viewer);
    13   }
    第4行代碼 中,setRemoveAllWhenShown(true)的作用是清空以前顯示的菜單項,當(dāng)觸發(fā)了menu事件時,重新填充 (fillContextMenu),所以如果不把removeAllWhenShow置為true的話,每點一下右鍵你就會看到菜單項多出一倍來。 Menu是swt的控件,而Menumanager是Jface中的控件,不象SWT那樣直接同底層打交道。用MenuManager可以創(chuàng)建出一個 Menu對象。第十行mgr.createContextMenu(viewer.getControl());這里的viewer即為上面的viewer。第十一行,然后我們將樹的setMenu方法將樹控件與Menu控件聯(lián)系在一起就好了。
    最重要的是第十二行,這是context menu能不能顯示的關(guān)鍵。一個視圖中可以有多個context menu, 而每一個context menu都必須注冊給workbench。這需要通過調(diào)用
    org.eclipse.ui.IWorkbenchPartSite.registerContextMenu(MenuManager menuManager, ISelectionProvider selectionProvider)或者(當(dāng)有多個注冊的context menu時)org.eclipse.ui.IWorkbenchPartSite.registerContextMenu(String menuId, MenuManager menuManager, ISelectionProvider selectionProvider) 增加的參數(shù)menuId用于區(qū)分不同的context menu。
    接下來,我們有兩種方法來創(chuàng)建右鍵彈出菜單項。第一種,實現(xiàn)fillContextMenu()方法。典型的實現(xiàn)代碼如下:
    1     protected void fillContextMenu(IMenuManager manager) {
    2  
    3         manager.add(openAction);
    4         manager.add(removeAction);
    5          manager.add(addAction);
    6               }

    這些Action都可由自己定義創(chuàng)建。
    另外的方法,可以編輯plugin.xml文件。不需要自己寫任何代碼便可以顯示出自己想要的彈出項。
    這次先講到這里,下次介紹另外的一種實現(xiàn)方式。(主要是由于剛創(chuàng)建Blog,不知道如何插入圖片,這么寫太費勁也太枯燥了,相信大家一定不能忍了吧!咱們下次再見




    posted on 2009-07-27 13:50 Ke 閱讀(2267) 評論(0)  編輯  收藏 所屬分類: eclipse RCP
    主站蜘蛛池模板: 国产亚洲婷婷香蕉久久精品| 麻豆成人精品国产免费| 亚洲啪啪AV无码片| 羞羞漫画在线成人漫画阅读免费| 国产在线国偷精品产拍免费| 亚洲AV无码乱码在线观看代蜜桃| 最近中文字幕无免费| 亚洲视频在线不卡| 100部毛片免费全部播放完整| 久久久久久亚洲精品成人| 久久不见久久见免费视频7| 91亚洲va在线天线va天堂va国产| 免费无码毛片一区二区APP| 亚洲精品在线播放视频| 成人免费福利视频| 亚洲综合在线一区二区三区| 免费无码又爽又高潮视频| 亚洲av综合日韩| 在线亚洲精品自拍| 97无码人妻福利免费公开在线视频| 久久精品视频亚洲| 久草免费在线观看视频| 亚洲色偷精品一区二区三区| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 亚洲精华液一二三产区| 免费永久国产在线视频| 怡红院免费全部视频在线视频| 久久久久亚洲AV成人无码 | 女人让男人免费桶爽30分钟| 激情小说亚洲图片| 久久精品国产亚洲一区二区| 亚洲免费观看网站| 在线观看亚洲免费| 亚洲精品免费在线观看| 成年女人色毛片免费看| 国产高潮流白浆喷水免费A片 | 亚洲一区二区三区夜色| 国产一区二区三区在线免费| 日韩电影免费观看| 无码一区二区三区亚洲人妻| 亚洲成人激情在线|