`
liugang594
  • 浏览: 987605 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在Viewer中注册可扩展的右键菜单

阅读更多

我们知道在Eclipse中有一个org.eclipse.ui.popupMenus扩展点,可以对现在的视图或对象的右键菜单进行扩展。

 

如果我们定义了一个View,并且里面有一个Viewer,那么我们怎么让自己的Viewer上的对象也能获取对该对象的扩展菜单呢?这里就做一个简单的介绍。

 

一、显示菜单

 

首先,我们要让这个Viewer支持右键菜单,如下:

 

		MenuManager menus = new MenuManager();
		Menu menu = menus.createContextMenu(viewer.getTree());
		viewer.getTree().setMenu(menu);

 

 

要使得一个viewer的右键菜单可以扩展,我们需要注册这个菜单。如下:

 

		getSite().registerContextMenu(menus, viewer);

 

 

这样就完了。假如我们树上的结点模型为FileModel,那么,如果有以下扩展定义:

   <extension
         point="org.eclipse.ui.popupMenus">
      <objectContribution
            adaptable="true"
            id="com.tibco.cdc.liugang.viewer.objectContribution1"
            nameFilter="*.*"
            objectClass="com.tibco.cdc.liugang.viewer.models.FileModel">
         <action
               class="com.tibco.cdc.liugang.viewer.actions.PrintName"
               enablesFor="1"
               icon="icons/sample.gif"
               id="com.tibco.cdc.liugang.viewer.action1"
               label="Print"
               menubarPath="additions"
               style="push"/>
      </objectContribution>
   </extension>

 

那么,当我们在树节点上点右键时,可以看到有一个名为"print"的菜单出现。

 

二、定义菜单位置

 

通常,我们定义一个菜单扩展的时候,都会给出一个menubarPath,例如经常使用的"additions"。有menu中,我们可以预先定义一些menubarPath,用于控制菜单项的顺序/位置。例如:

                                String MB_ADDITIONS = "additions";
		menus.add(new Separator(MB_ADDITIONS));

 

三、注意事项

 

 有一些事项需要注意。如果我们给MenuManager增加了IMenuListener事件,并且在它的menuAboutToShow方法里有添加菜单的操作,那么我们需要在定义MenuManager的时候进行以下调用:

		menus.setRemoveAllWhenShown(true);

 

否则,会出现重复菜单。

如果一些初始菜单是直接定义的,那就不需要调用这个方法,以免把已有的菜单移除了。

 

基于以上原则,请不要在多处定义初始菜单,例如,请不要如下定义:

		menus.add(action1);
		menus.addMenuListener(new IMenuListener(){
			public void menuAboutToShow(IMenuManager manager) {
				menus.add(action2);
			}
		});

 

要么就全在menuAboutToShow方法内定义,并调用menus.setRemoveAllWhenShown(true);否则全在该方法外定义并且不设置menus.setRemoveAllWhenShown(true);

分享到:
评论

相关推荐

    XmlViewer4.1.3

    在IT行业中,XML(可扩展标记语言)被广泛应用于数据交换、配置文件、文档存储等多个领域,因此,一个强大的XML查看和管理工具对于开发者和系统管理员来说至关重要。 首先,我们要了解XML的基本概念。XML是一种自...

    notepad++ json viewer 插件

    2. 在下拉菜单中选择 "Plugin Manager",这将打开一个插件管理界面,列出可供安装的各种插件。 3. 在插件管理界面中,并没有直接提供 JSON Viewer 的安装选项,因此需要手动下载 ZIP 格式的插件文件。你可以从 ...

    open-in-iiif-viewer:FirefoxChrome扩展程序,用于在您喜欢的IIIF查看器中打开IIIF清单链接

    通过右键单击指向IIIF清单的链接,将显示上下文菜单项“在IIIF查看器中打开链接”,该菜单项允许您在首选的IIIF查看器中打开该链接。选件在选项页面上,根据主要要使用的IIIF查看器设置URL字段。 例如: 在IIIF ...

    文档查看器「Docs Viewer」-crx插件

    看到文档链接(即.doc,.docx,.ppt,.pdf)后,请右键单击该链接,然后从上下文菜单中选择“查看文档”。该文档将被渲染并在新选项卡中打开。您也可以将文档打印为PDF或立即将其发送到打印机。请注意,此加载项使用...

    CNF导航----building-common-navigator-framework-viewer-III

    通过实现`INavigatorActionProvider`接口,你可以定义一个动作提供者类,该类将决定哪些操作应该出现在菜单中。以下是一个简单的例子: ```java public class MyActionProvider implements ...

    win7电脑出现Dpp Viewer Module停止工作怎么办.docx

    在打开的文件夹中找到Digital Photo Professional的可执行文件(通常为.dpp或.exe扩展名),再次右键点击,选择“属性”,然后切换到“兼容性”标签页。 **步骤4:调整兼容模式** 在“兼容性”选项中,用户可以选择...

    eclipse快捷打开文件夹jar包

    总的来说,Eclipse的便捷性体现在其强大的文件管理和导航能力上,通过右键菜单的多种选项,开发者可以轻松地在IDE内和文件系统之间切换,快速定位并操作JAR包和其他项目资源,这对于提高开发效率和维护代码质量具有...

    Total Commander 8.5 正式官方注册加强版

    •工具栏和开始菜单均可配置:将常用的DOS或Windows程序加入开始菜单中,运行程序时自动调用光标处的文件和/或文件夹。 •主菜单也可以配置。 •内置文件查看程序:以十六进制、二进制或文本方式查看任意大小的文件...

    Docs Viewer-crx插件

    看到文档链接(即.doc,.docx,.ppt,.pdf)后,请右键单击该链接,然后从上下文菜单中选择“查看文档”。 该文档将被渲染并在新选项卡中打开。 您也可以将文档打印为PDF或立即将其发送到打印机。 请注意,此加载项...

    crxviewer:附加网络应用程序,可查看Chrome Firefox Opera 15扩展程序和zip文件的源代码-Web source code view

    Chrome扩展程序源查看器(CRX ...可以通过右键单击扩展按钮时出现的“单击时的主要操作”菜单来更改默认操作(显示上述选项)。 “查看源代码”选项使用一个简单的查看器打开一个新标签,该标签具有以下功能: 右上

    (转)MyEclipse中直接打开class文件的方法

    2. **关联JAD**:在JadClipse首选项页面中,点击`Class File Viewer`,然后在`JAD Path`中指定`jad.exe`的路径。`jad.exe`是一个反编译器,可以将`.class`文件转换为更易读的Java源代码形式。确保已将`jad.exe`文件...

    Twilight Viewer-开源

    总的来说,“Twilight Viewer”是一款集简洁、实用、可扩展于一体的开源图像查看器。它不仅为用户提供了一种高效查看和处理图像的方式,还通过开源的方式激发了社区的创新活力,促进了软件的持续发展。对于那些希望...

    Radmin自动登录器v3.0-多国语言绿色版-Release1-20150615

    * 单击工具栏上的“显示隐藏树状目录”按钮可以显示隐藏目录树窗格,目录树窗格的右键菜单可完成目录树的一些常规操作; * 单击工具栏上的“选择切换图标查看模式”按钮可以切换或选择记录窗格的图标查看模式; *...

    Total Commander 8.51a 官方强化修正版

    •工具栏和开始菜单均可配置:将常用的DOS或Windows程序加入开始菜单中,运行程序时自动调用光标处的文件和/或文件夹。 •主菜单也可以配置。 •内置文件查看程序:以十六进制、二进制或文本方式查看任意大小的...

    电脑软件win10恢复win7照片查看器方法.rar

    打开“设置” &gt; “应用” &gt; “默认应用”,滚动到“照片”部分,点击当前设置的默认应用(通常是“Windows照片”),然后在下拉菜单中选择“其他应用”,找到并选择“Windows 7照片查看器”。 接下来,为了能够打开...

    使用脚本动态操作 SVG 文档

    在某些特定的SVG浏览器,如Adobe SVG Viewer 3.0,还有额外的对象如`contextMenu`,可以用来定制右键菜单。 JavaScript脚本可以在SVG文件中内嵌,或者通过`xlink:href`属性链接到外部文件。内嵌的脚本通常用于SVG...

    notepad++安装包和插件.zip

    Notepad++是一款非常受欢迎的免费源代码编辑器,尤其在Windows操作系统中被广泛使用。它支持多种编程语言,且基于...Notepad++的可扩展性和丰富的插件库是其魅力所在,也是它能够在众多文本编辑器中脱颖而出的原因。

    oib-generator:Chrome扩展程序可生成OIB,并将其插入指定的输入字段中

    安装扩展,然后右键单击要在其中插入新OIB的任何输入字段。 将显示菜单项“ Generate OIB”(生成OIB),然后单击它,将生成新的OIB并将其插入到字段中。 它是如何工作的 通过首先生成10个随机数字,然后计算用于...

    反编译.rar

    5. **使用反编译功能**:现在你可以在Eclipse中右键点击任何.jar或.class文件,选择"Open With" -&gt; "JD-Eclipse Source Viewer",即可查看源代码。反编译的结果可能并不完全与原始源代码相同,但通常足以理解和分析...

    Open in PDF Reader-crx插件

    将上下文菜单项添加到PDF Viewer中的Adobe Acrobat Reader(如adobe Acrobat Reader)中的PDF查看器发送PDF链接“扩展名在默认的PDF查看器应用程序中直接打开PDF文件。要使用扩展,请右键单击PDF链接,然后选择“在...

Global site tag (gtag.js) - Google Analytics