快速业务通道

Eclipse插件开发 - 深入理解菜单(Menu)功能及其扩展点 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
quot;>     <action        class="com.free.menu.actions.CryAction"        enablesFor="+"        id="com.free.menu.actions.cryAction"        label="Cry Action"        menubarPath="additions">       <enablement>        <objectState           name="firstName"           value="David">        </objectState>       </enablement>     </action>     <visibility>       <objectState          name="lastName"          value="Rubel">      </objectState>     </visibility>    </objectContribution>   </extension>

Eclipse插件开发 - 深入理解菜单(Menu)功能及其扩展点(11)

时间:2011-10-22 IBM 敖建旺

Menu Example 视图的代码实现类

如下代码清单 13 所示为 Menu Example 视图的代码,该视图中有一个 TreeViewer,并通过函数 hookContextMenu 把上下文菜单关联到 TreeViewer。其中函数 viewMenuAction 用于更新菜单的状态, 它首先获取视图菜单,然后调用 IMenuManager 的 update 方法更新对应菜单项的状态,从而达到控制菜 单的目的。

清单 13. Menu Example 视图代码

public class MenuExplorer extends ViewPart {    private TreeViewer treeViewer;    private MenuManager fMenuMgr;    private Menu fMenu;    private static MenuExplorer fInstance = null;    public MenuExplorer() {      fInstance = this;    }    public static MenuExplorer getInstance(){      return fInstance;    }    public void createPartControl(Composite parent) {      treeViewer = new TreeViewer (parent, SWT.MULTI);      treeViewer.setLabelProvider(new PersonListLabelProvider());      treeViewer.setContentProvider(new PersonTreeContentProvider());      treeViewer.setInput(Person.example());      this.getSite().setSelectionProvider(treeViewer);      hookContextMenu();      fInstance = this;    }    public void setViewMenuActionState(boolean state){      JokeCommand.setState(state);      viewMenuAction();    }    private void viewMenuAction() {      IActionBars bars= getViewSite().getActionBars();      final IMenuManager menu= bars.getMenuManager();      UIOperation.asyncExecCommand(new Runnable(){        public void run() {          menu.update("com.free.menu.commands.jokeAction");        }      });    }    private void hookContextMenu() {      fMenuMgr = new MenuManager("#PopupMenu");      fMenuMgr.setRemoveAllWhenShown(true);      fMenuMgr.addMenuListener(new IMenuListener() {        public void menuAboutToShow(IMenuManager manager) {        }      });      fMenu = fMenuMgr.createContextMenu(treeViewer.getControl());      treeViewer.getControl().setMenu(fMenu);      getSite().registerContextMenu(fMenuMgr, treeViewer);

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号