`

上下文菜单

 
阅读更多
popupmenu扩展点是为各种对象上的右键弹出的菜单,添加菜单项的。

主要分为三种:

对象操作(比如文件、工程、String对象等等,当在这些对象上点击右键,怎么添加菜单项到弹出的菜单里面);
对应<extension point="org.eclipse.ui.popupMenus">
<objectContribution
      id="org.eclipse.ui.articles.action.contribution.popup.object"
   objectClass="org.eclipse.core.resources.IFile"
   nameFilter="*.java">
   <filter
         name="projectNature"
         value="org.eclipse.jdt.core.javanature">
      </filter>
      <action
         id="org.eclipse.ui.articles.action.contribution.object.action1"
         label="Object Action 1"
         icon="icons/red_dot.gif"
         menubarPath="additions"
      class="org.eclipse.ui.articles.action.contribution.ObjectAction1Delegate">
      </action>
   </objectContribution>
</extension>
子元素

对象操作必须实现IObjectActionDelegate接口




视图操作,对应 <extension point="org.eclipse.ui.popupMenus">
   <viewerContribution
      id="org.eclipse.ui.articles.action.contribution.popup.navigator"
   //该元素表示为哪个视图提供操作
   targetID="org.eclipse.ui.views.ResourceNavigator">
   <action
         id="org.eclipse.ui.articles.action.contribution.navigator.action1"
         label="View Action 1"
         icon="icons/red_dot.gif"
         menubarPath="additions"
         class="org.eclipse.ui.articles.action.contribution.ViewAction1Delegate"
      enablesFor="!">
      </action>

   <menu
         id="org.eclipse.ui.articles.action.contribution.navigator.subMenu"
         label="View Sub Menu"
         path="additions">
      <separator name="group1"/>
      </menu>
      <action
         id="org.eclipse.ui.articles.action.contribution.navigator.action2"
         label="View Action 2"
         icon="icons/red_dot.gif"
      menubarPath="org.eclipse.ui.articles.action.contribution.navigator.subMenu/group1"
         class="org.eclipse.ui.articles.action.contribution.ViewAction2Delegate"
      enablesFor="1">
      </action>
      <action
         id="org.eclipse.ui.articles.action.contribution.navigator.action3"
         label="View Action 3"
         icon="icons/red_dot.gif"
      menubarPath="org.eclipse.ui.articles.action.contribution.navigator.subMenu/group1"
         class="org.eclipse.ui.articles.action.contribution.ViewAction3Delegate"
      enablesFor="2+">
      </action>
   </viewerContribution>
</extension>子元素;

<viewerContribution> 规定了视图中所有对象的通用操作。

视图操作必须实现IViewActionDelegate接口







添加视图工具栏和下拉子菜单,下面的扩展点是用于添加视图工具栏操作和下拉菜单操作的,如下:
<extension
         point="org.eclipse.ui.viewActions">
      //和<viewerContribution>子元素进行区别,是不同扩展点的子元素
      <viewContribution
            id="com.plugindev.addressbook.example.viewActionTest"
            targetID="com.plugindev.addressbook.views.AddressView">
         <action
               //也要实现IViewActionDelegate接口
               class="com.plugindev.addressbook.example.ViewExampleAction"
               icon="icons/sample.gif"
               id="com.plugindev.addressbook.viewExampleAction"
               label="视图操作"
               menubarPath="com.plugindev/example"
               style="push"
               //添加操作到视图工具栏上
               toolbarPath="additions"
               tooltip="举例说明如何添加视图操作"/>
         <menu
               id="com.plugindev"
               label="下拉菜单示例"
               //添加下拉菜单比较容易,只有定义path属性等于“addtions”即可
               path="addtions">
            <separator name="example"/>
         </menu>
      </viewContribution>
   </extension>







编辑器操作,对应<viewerContribution
      id="org.eclipse.ui.articles.action.contribution.popup.editor"
   targetID="#TextEditorContext"子元素;


为编辑器添加顶层工作台菜单,需要扩展org.eclipse.ui.editorActions扩展点。和前面的添加菜单和工具栏按钮不同,前面的在所有的情况下都会出现添加的操作,而编辑器顶层菜单呢,只有在使用与之关联的特定编辑器时才会出现:

<extension
         point="org.eclipse.ui.editorActions">
      <editorContribution
            id="com.plugindev.addressbook.example.editorActionTest"
            //必须属性,用来与特定的编辑器想关联
            targetID="org.eclipse.ui.DefaultTextEditor">
         <menu
               id="com.plugindev.defaultEditorMenu"
               label="顶层编辑器菜单"
               path="additions">
            <separator name="example"/>
         </menu>
         <action
               class="com.plugindev.addressbook.example.TopEditorAction"
               icon="icons/sample.gif"
               id="com.plugindev.addressbook.TopEditorAction"
               label="顶层编辑操作"
               menubarPath="com.plugindev.defaultEditorMenu/example"
               style="push"
               toolbarPath="Normal/additions"
               tooltip="编辑器操作示例"/>
      </editorContribution>
</extension>

编辑器操作要实现IEditorActionDelegate接口。








快捷键映射

如果要支持快捷键映射,就必须考虑一下三个问题:
1.不同的插件可能会为不相关的操作定义相同的快捷键;
2.插件可能会为相同的操作定义不同的快捷键;
3.插件可能会定义与工作台冲突的快捷键;
因而,eclipse不能直接将操作与快捷键相关联。为了解决该问题,eclipse引入了命令的概念



<extension
         point="org.eclipse.ui.actionSets">
      <actionSet
            id="com.plugindev.addressbook.actionSet"
            label="地址本操作"
            visible="true">
         <menu
               id="AddressBookMenu"
               label="地址本">
            <separator name="content"/>
         </menu>
         <action
               class="com.plugindev.addressbook.actions.OpenAddressViewAction"
               //将某个快捷键通过“命令”这个桥梁和该操作关联起来,
               definitionId="com.plugindev.addressbook.commands.openAddressView"
               icon="icons/sample.gif"
               id="com.plugindev.addressbook.actions.OpenAddressViewAction"
               label="打开视图"
               menubarPath="AddressBookMenu/content"
               toolbarPath="Normal/addition"
               tooltip="在当前透视图中打开地址本视图"/>
      </actionSet>
   </extension>




//通过该扩展点定义一个命令,该命令不包含操作的具体实现,也不和任何操作相关联。
<extension
         point="org.eclipse.ui.commands">
      //命令的类别
      <category
            description="地址本插件添加的命令"
            id="com.plugindev.addressbook.commands"
            name="地址本"/>
      <command
            categoryId="com.plugindev.addressbook.commands"
            description="打开地址本视图"
            //此id可以随便定义,要保证唯一性。以便action引入
            id="com.plugindev.addressbook.commands.openAddressView"
            name="打开地址本"/>


//通过该扩展点可以将命令和快捷键绑定
</extension>
   <extension
         point="org.eclipse.ui.bindings">
      <key
            //定义和哪个命令绑定
            commandId="com.plugindev.addressbook.commands.openAddressView"
            //默认
            contextId="org.eclipse.ui.contexts.window"
            //默认将快捷键添加到eclipse配置中
            schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
            //定义快捷键,快捷键通常由管理键(ALT,COMMAND,CTRL,SHIFT)和普通键组成,普通键一般用大写字母表示,不同键用+分割
            sequence="CTRL+SHIFT+V"/>
   </extension>

这样定义后,就可以在窗口-》定制透视图 的命令选项卡中,找到刚才定义的刚才定义的命令组,打勾表示在当前透视图中显示该操作,否则不显示。
分享到:
评论

相关推荐

    Android实现上下文菜单、下拉菜单、选项菜单代码

    Android 实现上下文菜单、下拉菜单、选项菜单代码详解 Android 中的菜单系统是一个非常重要的组件,它提供了多种方式来帮助用户与应用程序进行交互。在本文档中,我们将详细介绍如何实现上下文菜单、下拉菜单和选项...

    上下文菜单与上下文操作模式

    在Android应用开发中,上下文菜单(Context Menu)和上下文操作模式(Contextual Action Mode)是两种常见的用户交互设计,它们提供了在特定情境下对数据进行操作的界面。这两种设计模式在处理列表、网格或其他可选元素...

    创建上下文菜单

    在Android开发中,上下文菜单(Context Menu)是一种常见的交互元素,它允许用户在长按某个视图或项时出现一个包含相关操作的弹出菜单。上下文菜单通常用于提供与特定视图或数据相关的动作选项,而不是全局的操作。在...

    如何写上下文菜单

    上下文菜单是用户界面设计中的一个重要元素,它在用户与应用程序交互时提供了便捷的操作选项。在Android、iOS、Windows等操作系统以及许多Web应用中,上下文菜单常常扮演着快速访问功能的角色。当用户对特定视图执行...

    ListView:单击和长按弹出上下文菜单(ContextMenu)

    本篇文章将深入探讨如何在ListView中实现单击和长按事件,弹出上下文菜单(ContextMenu)。这通常用于提供针对列表项的快捷操作,提升用户体验。 首先,我们需要在清单文件(`AndroidManifest.xml`)中为我们的Activity...

    定制编辑框的上下文菜单

    在编程和软件开发中,上下文菜单(Context Menu)是一种常用的人机交互元素,它根据用户的操作环境提供相关的操作选项。在编辑框中,上下文菜单通常包含与文本操作相关的命令,如复制、粘贴、剪切等。本文将深入探讨...

    上下文菜单+listview

    在Android开发中,"上下文菜单(Context Menu)"和"ListView"是两个非常重要的组件,尤其在构建用户交互界面时。本文将深入探讨如何在Eclipse环境下利用这两个组件创建一个功能完善的移动应用。 首先,让我们了解**上...

    菜单 选项菜单 子菜单 上下文菜单

    本案例深入探讨了菜单的三种主要类型:普通菜单(Option Menu)、子菜单(Submenu)以及上下文菜单(Context Menu)。下面将详细阐述这三种菜单的使用方法、特点及其实现代码。 1. 普通菜单(Option Menu) 普通菜单通常...

    Android 为EditText文本框添加长按显示上下文菜单.rar

    Android ContextMenu实例,为EditText文本框添加上下文菜单,菜单激活并显示的方式是,用户在EditText输入框上面长按2秒,即可弹出上下文菜单,如运行截图所示的效果,为实现此功能,创建了onCreateContextMenu ...

    编辑框上下文菜单演示程序代码

    在IT领域,编辑框上下文菜单是用户界面中常见的元素,尤其在开发Windows应用程序时,如使用VC++6.0和MFC库。上下文菜单(也称为弹出菜单或右键菜单)提供了与特定对象相关的操作选项,当用户在编辑框上点击鼠标右键...

    上下文菜单设计_C#_

    在IT行业中,上下文菜单(Context Menu)是用户界面中不可或缺的一部分,它为用户提供了一种在特定场景下访问相关操作的便捷方式。特别是在C#编程环境下,上下文菜单的使用可以极大地提高应用程序的易用性。本文将...

    Kotlin上下文菜单_kotlin_

    本教程将深入探讨如何使用Kotlin实现上下文菜单(Context Menu),这对于任何想要提升Android应用交互体验的初学者来说是十分重要的知识点。 首先,我们需要理解上下文菜单的概念。在Android中,上下文菜单(Context ...

    android 选项菜单和上下文菜单

    在Android应用开发中,选项菜单(OptionsMenu)和上下文菜单(ContextMenu)是两种常见的交互方式,用于提供用户在特定场景下的操作选择。本项目通过Android Studio实现,将这两种菜单集成在一个应用中,使得用户...

    swift-iOS上下文菜单UI类似于Things3

    在Swift iOS应用开发中,上下文菜单(ContextMenu)是一种常用的设计模式,用于提供与特定视图内容相关的操作选项。这种设计灵感往往来源于优秀的第三方应用,比如Things 3,它以其直观且高效的用户界面赢得了广大...

    Android 之 上下文菜单、选项菜单、子菜单

    在Android应用开发中,上下文菜单(Context Menu)、选项菜单(OptionsMenu)和子菜单(Submenu)是三种重要的交互方式,用于提供用户与应用界面的多种操作选项。它们各自有不同的应用场景和设计规范,对于提升用户体验至...

    如何为控件添加上下文菜单(visual studio C++源代码编写).net

    在.NET框架中,使用Visual Studio C++进行编程时,为控件添加上下文菜单是常见的需求,这可以增强用户交互性并提供定制的功能选项。上下文菜单,也称为右键菜单,是在用户对控件执行右键点击时显示的一系列命令选项...

    用XML数据岛创建上下文菜单

    【创建上下文菜单的原理与实现】 上下文菜单,又称为右键菜单,是指当用户在网页或应用程序中右键单击时出现的定制化功能列表。这些菜单提供了与当前选择相关的操作,使得用户能够更方便地进行交互。在本文中,我们...

    Windows Shell扩展编程傻瓜手册大全:上下文菜单扩展

    上下文菜单扩展是Shell扩展的一种常见形式,它允许开发者在用户右键点击文件或文件夹时添加自定义的操作选项。这篇"Windows Shell扩展编程傻瓜手册大全:上下文菜单扩展"详细介绍了如何实现这一功能。 首先,开发上...

    69:Windows 11 经典上下文菜单恢复工具 v1.1.0.rar

    在Windows 11操作系统中,微软引入了全新的用户界面,其中包含了现代风格的上下文菜单。这个设计旨在提供更简洁、直观的体验,但有些用户可能更习惯于经典的Windows 7或10版本的上下文菜单。针对这些用户的偏好,...

Global site tag (gtag.js) - Google Analytics