`

eclipse中常规菜单、工具栏

阅读更多

workbench的菜单、工具栏

1扩展org.eclipse.ui.actionSets。该actionlabel(操作集合的名称)显示在“定制透视图”的对话框中。

2创建menu(如果将action插入到已有的菜单中,不需要创建)。label就是菜单在菜单栏中的名字。

3.创建action。指定action在菜单上的位置,在toolbar上的位置。

其中retarget表示重定目标操作时需要的属性,当试图或编辑器中需要使用全局工作台菜单或工具栏中的操作时,将retarget设置为true

enableFor的取值:!、?、+n*2+/multiple

view中的action

扩展org.eclipse.ui.viewActions.这些action放在View菜单或是工具栏中。

viewActionviewContribution

其内的上下文菜单同样扩展自popmenuviewerContributionobjectContribution弹出菜单popmenu扩展点

editoraction

扩展org.eclipse.ui.editorActions.

editor添加顶层工作台菜单,与一般的工作台菜单不同,编辑器的工作台菜单只有当该编辑器使用时,才会出现(或enable)。其中的targetID值为org.eclipse.ui.DefaultTextEditor.

 

给编辑器添加上下文菜单时,其popmenu中的viewerContribution中的targetID值为#TextEditorContexteclipse默认文件编辑器上下文菜单标识符,弹出菜单popmenu扩展点

菜单的快捷键

快捷键可以用编程方式实现,也可以通过添加扩展点方式。

由于eclipse的开源性,实现不冲突的快捷键需要解决3个问题。

1 相同功能操作,不同的开发者有了不同的快捷键。

2 不同的功能操作,有了相同的快捷键。

3 快捷键可能与平台定义的快捷键冲突。

为此,引入org.eclipse.ui.commands扩展点。命令与键绑定、操作和处理程序相关,但不定义操作的实现。该实现由操作本身来完成。

还需要添加扩展点org.eclipse.ui.bindings,在该扩展点新增key元素,包括sequence(键组合)、schemeId(激活该快捷键使用的配置,一般情况将键绑定添加到默认的eclipse的配置org.eclipse.ui.defaultAcceleratorConfiguration)、contextId(激活该快捷键所使用的上下文标识符,默认使用org.eclipse.ui.context.windows)commandId(命令)。

最后将commandId添加到菜单属性中的definitionId中。

菜单扩展点org.eclipse.ui.menus

org.eclipse.ui.menus (Eclipse3.3)

——负责显示。如菜单的位置、文字、图标、提示信息、样式、是否可见等。

org.eclipse.ui.commands (Eclipse2.1)

——负责定义菜单ID。同时可以指定实现该菜单行为的类。

org.eclipse.ui.handlers (Eclipse3.1)

——负责定义实现菜单行为的类以及是否可执行(灰化)

org.eclipse.ui.bindings (Eclipse3.1)

——负责定义菜单的快捷键。

org.eclipse.core.expressions.definitions (Eclipse3.3)

——定义表达式。在实现菜单灰化时,起辅助作用。

菜单项定义

locationURI的一般格式为:

PID:VID

PID:VID?after=MID

PID:VID?abefore=MID

PID为菜单项的归属,只有3个可选值:菜单栏(menu)、工具栏(toolbar)、弹出菜单(popup)

VID为菜单项所附的位置:

如果PID表示的是菜单栏,那么VID就表示该菜单项的上一级菜单的ID

如果PID表示的是工具栏,那么VID就表示该菜单项所在的工具组ID

如果PID表示的是弹出菜单,那么VID就表示该菜单所在的视图ID或编辑器ID

MID表示的是与该菜单项相邻的菜单项ID

 

添加一个menuContribution

设置"menuContribution"属性:

·         locationURI是设定所在位置,由一个字符串定义,字符串的格式为:[Scheme]:[ID]?[Query]分为三部分:

·         Scheme:类型,取值为menupopuptoolbar

·         ID:基准,已存在的菜单ID、工具栏ID或视图ID等,常见的包括:

·         主菜单:org.eclipse.ui.main.menu

·         主工具栏:org.eclipse.ui.main.toolbar

·         弹出菜单:org.eclipse.ui.popup.any

·         Query:格式为<placement>=<id>placementbeforeafterendofid为一个已存在的菜单项。

常见的locationURI:

·         主菜单栏:menu:org.eclipse.ui.main.menu

·         主工具栏:toolbar:org.eclipse.ui.main.toolbar

·         所有弹出菜单:popup:org.eclipse.ui.popup.any

这里指定locationURI为主菜单上:menu:org.eclipse.ui.main.menu

如果是popmenu我们针对某一个视图,则:popup:com.my.eclipse.MyView.

放在某一菜单的某个菜单项之后为:menu:com.my.main.menu?after=com.my.menuitem

menucontribution添加一个menu,指定该menu的显示名称labelFile

menu添加一个command,指定该commandidcommand的显示名称labelExit)。

上下文菜单扩展点popmenu

弹出菜单有两个扩展项:objectContributionviewerContribution

以下是一个过滤txtxmljava文件popupMenus配置文件代码

<extension
        point="org.eclipse.ui.popupMenus">
     <objectContribution
           adaptable="false"
           id="cn.ceopen.eclipseone.gencodetools.objectContribution5"
           objectClass="org.eclipse.core.resources.IResource">

<action
               class="jnewscollector.action.JTopElementImport"
               id="JNewsCollector.TopElementImport"
               label="
导出"/>
         <action
               class="jnewscollector.action.JTopElementAutoTrace"
               id="JNewsCollector.TopElementAutoTrace"
               label="
开始跟踪"/>
        <action
              class="cn.ceopen.eclipseone.gencodetools.Action5"
              id="cn.ceopen.eclipseone.gencodetools.action5"
              label="ffffffffff"
              menubarPath="cn.ceopen.eclipseone.gencodetools.Domainmenu">
        </action>
        <visibility>
           <or>
              <objectState
                    name="name"
                    value="*.xml">
              </objectState>
              <objectState
                    name="name"
                    value="*.txt">
              </objectState>
              <objectState
                    name="name"
                    value="*.java">
              </objectState>
           </or>
        </visibility>
     </objectContribution>

<viewerContribution
      id="com.xyz.C2"
      targetID="org.eclipse.ui.views.TaskList">
    <action
      id="com.xyz.showXYZ"
      label="&amp;Show XYZ"
      style="toggle"
      state="true"
      menubarPath="additions"
      icon="icons/showXYZ.gif"
      helpContextId="com.xyz.show_action_context"
      class="com.xyz.actions.XYZShowActionDelegate" />
</viewerContribution>
</extension>

objectClass指出可以接受的目标对象类型。

adaptable指出适配IResource的对象是可接受的目标。一般为false

nameFilter通配符过滤器。

objectContribution中的visibility提供了替代nameFilterobjectClass的方法,功能更为强大。

objectContribution中的filter对操作的过滤,是visibility的一种替代形式(但不包含在visibility中),如<filter name=”priority” value=”1”/>filterobjectState都使用IActionFilter接口,每个选中的对象必须实现IActionFilter接口,并实现其中的testAttribute()方法。

再一种过滤方式是在action中的selection,它也差不多等同于替代nameFilterobjectClass

 

注意:enableFor:是使菜单是否可用(变灰)。而过滤(包括visibilityselectionnameFilterobjectClass)是使菜单是否可见。

 

弹出菜单的实现方式:1通过popmenu扩展点;2通过硬编码;3通过menus扩展项menuContributionpopup:com.mypop.sample.MyViewmenuContribution),结合commands实现扩展点。

 

另一部分:

SWT中的菜单

shell上创建菜单

主要是注意几个参数

Menu bar = new Menu (shell, SWT.BAR);//定义menuBar(位置)

    shell.setMenuBar (bar);

    MenuItem editItem = new MenuItem (bar, SWT.CASCADE);//(在bar创建item

    editItem.setText ("Edit");

    Menu submenu = new Menu (shell, SWT.DROP_DOWN);//创建下拉菜单

    editItem.setMenu (submenu);

    MenuItem item = new MenuItem (submenu, SWT.PUSH);//创建菜单项

    item.addListener (SWT.Selection, new Listener () {

       public void handleEvent (Event e) {

           t.selectAll();

       }

    });

    item.setText ("Select &All\tCtrl+A");

实现动态的menu菜单项

移除然后重新建立

menu.addListener (SWT.Show, new Listener () {

       public void handleEvent (Event event) {

           MenuItem [] menuItems = menu.getItems ();

           for (int i=0; i<menuItems.length; i++) {

              menuItems [i].dispose ();

           }

           TreeItem [] treeItems = tree.getSelection ();

           for (int i=0; i<treeItems.length; i++) {

              MenuItem menuItem = new MenuItem (menu, SWT.PUSH);

              menuItem.setText (treeItems [i].getText ());

           }

       }

    });

实现动态的MenuManager菜单项

menuManager.setRemoveAllWhenShown(true);

eclipse rcp菜单实现

菜单分类

主菜单、视图菜单、上下文菜单

主菜单的实现

1.         ApplicationActionBarAdvisor中实现

覆盖方法makeAction(…),创建actionregister(action)。覆盖方法fillMenuBar(…),在方法中新建一个menuManger(或找个已存在的,其实就是一个菜单),将action添加到menuManager中。

2.         利用org.eclipse.ui.actionSets扩展点

扩展该扩展点,在其上一个actionset,并添加menuaction等。

3.         利用org.eclipse.ui.menusorg.eclipse.ui.commands的组合

扩展commands扩展点,在其上定义一堆command,对每一个command要指定iddefaultHandler类两个值(最低要求);扩展menus扩展点,创建一个menuContribution,在其下可以建立popmenumenudynamicmenucommand等,这里我先简单实现,创建一个menuid可以先不指定),在menu上创建一个command,对于command将其commandId指定为刚才我们创建的commandidOk,菜单就创建好了。

视图/编辑器菜单的实现

实现方式1:在程序creatPartControl()中通过view.getViewSite().getActionBars(). getMenuManager(),(或者getToolBarManager())向其增加action

实现方式2:扩展org.eclipse.ui.viewActionsorg.eclipse.ui.editorActions扩展点

向特定视图添加工具菜单(toolbar),添加下拉式菜单(pull-down),实现接口IViewActionDelegate(IEditorActionDelegate)。须将viewerContribution的属性值设为对应viewID如:targetIDorg.eclipse.jdt.ui.PackageExplorer即向包资源管理器中添加工具菜单和下拉式菜单(好像只有一个菜单)。

上下文菜单

实现方式1:在程序中判断对象等直接写右键菜单和其响应,并注册到视图/编辑器中。

view.getViewSite().registerContextMenu(XXX);

实现方式2:扩展org.eclipse.ui.popupMenus扩展点(待查)

objectContributionviewerContribution两类

objectContribution 实现接口IObjectActionDelegate,向视图上下文中添加弹出式菜单,如包资源管理器、代码编辑区等。

viewerContribution实现接口IViewActionDelegate,向特定视图中添加弹出式菜单,如将viewerContribution属性设置为对应view的值即可,如

idorg.eclipse.jdt.ui.PackageExplorer

targetIDorg.eclipse.jdt.ui.PackageExplorer即向包资源管理器中添加上下文菜单

 

 

 

 

分享到:
评论

相关推荐

    Eclipse_界面中英文对照

    在 Eclipse 的菜单栏中,我们可以看到多个菜单项,每个菜单项都对应着不同的功能。下面是菜单栏中一些常见的英文对照: 1. File(文件菜单):这是 Eclipse 中最基本的菜单项,包含了新建、打开、保存、关闭等文件...

    eclipse颜色舒适窗口(浅绿)

    标题中的“eclipse颜色舒适窗口(浅绿)”指的是在Eclipse这款集成开发环境中自定义的一种配色方案,主要是为了提供一个对眼睛更为友好的工作环境。Eclipse是一款广泛使用的开源Java开发工具,但它的默认界面颜色...

    Eclipse color Theme离线安装

    3. **启用Color Theme插件**:启动Eclipse后,进入菜单栏的“Window”(视窗)选项,然后依次选择“Preferences”(首选项) -&gt; “General”(常规) -&gt; “Appearance”(外观) -&gt; “Color Theme”(颜色主题)。...

    eclipse3.1汉化文件

    - 特别注意菜单栏、工具栏以及对话框中的文本是否已经汉化。 #### 五、汉化过程中可能遇到的问题及解决方法 1. **汉化包安装失败**: - 确保下载的是适合您Eclipse版本的汉化包。 - 检查Eclipse的安装路径中不...

    easyexplore 在Eclipse中轻松打开文件目录的插件

    - 安装完成后,插件可能在Eclipse的菜单栏或工具栏中添加新的选项,用户可以通过这些入口激活插件功能。 - 可能需要配置插件设置,如快捷键绑定、显示模式等,以适应个人工作习惯。 4. **源码**: - 描述中的...

    eclipse中xml文件里自动提示消失解决办法

    - 在菜单栏中选择“Window”(窗口)&gt; “Preferences”(首选项),或者直接使用快捷键`Ctrl + ,`进入首选项设置页面。 2. **定位至代码辅助配置**: - 在弹出的偏好设置对话框中,通过左侧的树状目录导航至...

    Eclipse界面中英文对照.pdf

    二、工具栏(Toolbar) * New 新建按钮:创建新文件或项目。 * Open 打开按钮:打开已有的文件或项目。 * Save 保存按钮:保存当前文件或项目。 * Cut 剪切按钮:剪切当前选中的内容。 * Copy 复制按钮:复制当前...

    eclipse download

    3. 在左侧导航树中,依次展开`General`(常规)`-&gt;`Content Types`(内容类型)。 4. 在右侧,可以看到不同类型的文件格式,如`Text`, `XML`, `Java Source`等。 5. 选择你想要更改的文件类型,例如`Text`,然后在下方`...

    eclipse显示配置

    2. **File-&gt;Import**:在顶部菜单栏中,点击“文件”(File),然后在下拉菜单中选择“导入”(Import)选项。 3. **General-&gt;Preferences**:在弹出的导入向导窗口中,展开“常规”(General)类别,然后选择“首...

    如何下载Eclipse开发环境

    5. **创建桌面快捷方式**:打开`Applications`文件夹中的`eclipse`文件夹,将Eclipse图标拖拽到Dock栏,以便于快速启动。 6. **检查Java版本**:确认已安装的Java版本符合要求。如果需要更新Java版本,可以通过系统...

    Eclipse-界面中英文对照 汉化界面与英文界面对照

    Eclipse的菜单栏是用户与程序交互的主要界面之一,菜单栏中包含多个主要菜单,每个菜单下又包含多个子菜单项,以及相关联的操作命令。 1. File(文件)菜单:这是最常用的一个菜单,包含了项目相关的基本操作,如...

    EclipseSDK 汉化包

    7. **检查效果**:启动Eclipse后,检查所有的菜单、工具栏、对话框等是否都已转换为中文。如果仍有部分未汉化的部分,可能是由于某些插件不支持中文,或者汉化包不完整。 8. **更新和维护**:随着Eclipse版本的更新...

    Eclipse提示与技巧

    - **操作步骤**: 在【导航器】视图的工具栏中选择【使用编辑器链接】按钮,使视图显示当前正在编辑的文件。 #### 9. 手工编辑器/视图同步 - **知识点**: 用户可以使用【浏览】&gt;【显示位置】命令来实现编辑器与视图...

    eclipse汉化

    6. **检查汉化效果**:启动Eclipse后,查看菜单、工具栏和对话框是否已变为中文。如果仍有部分界面未汉化,可能是因为这些组件的本地化文件不在汉化包内,或者需要调整Eclipse的设置。可以在Eclipse的“窗口”...

    red5-eclipse-plugin-master.zip

    安装完成后,重启Eclipse,新功能将会出现在菜单栏和工具栏中。 开发Red5应用程序通常涉及以下技术点: 1. **Java编程**:因为Red5是用Java编写的,所以开发者需要熟悉Java语言。 2. **ActionScript/Flash**:Red5...

    java 教学eclipse课件

    - 关闭欢迎界面后,可以通过菜单栏选择"文件" -&gt; "新建" -&gt; "Java项目"来创建新的Java项目。 - 在新项目中,可以创建Java类并编写代码。 - 编写完成后,右键点击项目,选择"运行" -&gt; "Java应用程序",Eclipse将...

    eclipse 图形界面设计 VE (包含emf,def)及使用教程

    - 通过DEF,开发者可以轻松地定义编辑器的行为,如工具栏操作、属性视图和上下文菜单,实现高度定制化的图形界面编辑体验。 4. **使用教程** - 安装:提供的压缩包文件"eclipse3.2的ve安装文件"包含了VE插件的...

    eclipse和myeclipse汉化语言包

    - 在左侧导航栏中找到“常规”(General)&gt;“工作台”(Workbench),点击“恢复默认值”(Restore Defaults),然后关闭首选项窗口。 - 重启Eclipse,打开“帮助”(Help)&gt;“安装新软件”(Install New Software...

    Eclipse快捷键

    - 锁定编辑器:通过工作台工具栏的“固定编辑器”按钮,防止自动关闭编辑器。 - 视图和编辑器的最小化和最大化:双击标题栏或选项卡可以最大化/最小化视图或编辑器。 除此之外,Eclipse还提供了快速视图功能,通过...

Global site tag (gtag.js) - Google Analytics