Eclipse插件开发菜单篇

Stella981
• 阅读 751
  • 介绍

在Eclipse中,菜单是非常重要的一个角色,下面就介绍如何自定义菜单。 菜单包括有主菜单、视图菜单、上下文菜单。 Eclipse提供了两种方式扩展菜单,分别是通过org.eclipse.ui.commands和org.eclipse.ui.actionSets。

  • 扩展点org.eclipse.ui.actionSets

[codesyntax lang="xml"]

<extension point="org.eclipse.ui.actionSets">
<actionSet label="EasyShell Action Set"
    visible="true"
    id="org.suren.easyshell.actionSet">
 <menu label="Explorer &amp;Menu"
       id="suren.menu">
    <separator
      name="surenGroup">
    </separator>
 </menu>
 <action label="&amp;Explorer Action"
       icon="icons/fldr_obj.gif"
       class="org.suren.easyshell.actions.ExplorerAction"
       tooltip="Explorer Resources"
       menubarPath="suren.menu/surenGroup"
       toolbarPath="surenGroup"
       id="org.suren.easyshell.actions.ExplorerAction">
 </action>
</actionSet>
</extension>

[/codesyntax]

  • org.eclipse.ui.actionSets实现类

可以实现接口org.eclipse.ui.IWorkbenchWindowActionDelegate 这种方式并没有把界面和实现分离,而下面的commands的方式确做到了分离的效果。

  • 扩展点org.eclipse.ui.commands

[codesyntax lang="xml"]

<extension point="org.eclipse.ui.commands">
    <command categoryId="org.suren.easyshell.command.category"
        id="org.suren.easyshell.command.shellExplore"
        name="Easy Shell Explore" />
</extension>

<extension point="org.eclipse.ui.handlers">
    <handler class="org.suren.easyshell.command.EasyShellCommand"
        commandId="org.suren.easyshell.command.command.shellExplore">
    </handler>
</extension>

<extension point="org.eclipse.ui.menus">
    <command
        categoryId="org.suren.easyshell.command.command.category1"
        id="org.suren.easyshell.command.command.shellExplore"
        name="Easy Shell Explore">
    </command>

    <menuContribution locationURI="popup:org.eclipse.ui.popup.any?before=additions">
     <menu id="com.tetrade.eclipse.plugins.easyshell.menu"
           label="Easy Shell">
        <command
          commandId="org.suren.easyshell.command.command.shellExplore"
          icon="icons/fldr_obj.gif"
          label="Explore..."
          style="push">
        </command>
     </menu>
    </menuContribution>

    <menuContribution
        locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
     <toolbar id="org.suren.easyshell.toolbars.shellExplore">
        <command commandId="org.suren.easyshell.command.command.shellExplore"
          icon="icons/fldr_obj.gif"
          tooltip="Explore..."
          id="org.suren.easyshell.toolbars.shellExplore.cmd">
        </command>
     </toolbar>
    </menuContribution>
</extension>

[/codesyntax] menuContribution的语法:locationURI="[scheme]:[id]?[argument-list]" scheme表明了菜单应该出现的区域——menu为视图的下拉菜单,toolbar为视图的工具栏 id为菜单区域的id argument-list为该菜单项出现在菜单的位置,这里的参数常见的如:after=additions。如果你想要把你的菜单项放到一个确切的菜单项后面的话,把additions修改为那个菜单项的id即可。

  • org.eclipse.ui.commands实现类

步骤如下:

  1. 通过org.eclipse.ui.commands来扩展命令(类别category)
  2. 通过org.eclipse.ui.menus来指定命令在哪里出现
  3. 通过org.eclipse.ui.handlers指定命令的实现类

[codesyntax lang="java"]

package org.suren.easyshell.actions;

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.jface.dialogs.MessageDialog;

public class ExplorerAction implements IWorkbenchWindowActionDelegate {
    private IWorkbenchWindow window;
    public ExplorerAction() {
    }

    public void run(IAction action) {
        MessageDialog.openInformation(
            window.getShell(),
            "SEasyshell",
            "Hello, Eclipse world");
    }

    public void selectionChanged(IAction action, ISelection selection) {
    }

    public void dispose() {
    }

    public void init(IWorkbenchWindow window) {
        this.window = window;
    }
}

[/codesyntax] 要实现上下文的菜单扩展的话,要使用org.eclipse.ui.popupMenus来实现。

  • 参考

http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-menuext/ http://www.fengfly.com/plus/view-179398-1.html

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
Vue + ElementUI 实现侧边菜单点击时加载一个动态菜单在横向位置
引传统的左侧菜单的操作方式,在进行比对操作时并不是一个好的体验,下面讲到的实现是左侧菜单每次点击都会动态加载一个动态的横向菜单,而非仅左侧菜单一个入口!(https://oscimg.oschina.net/oscnet/up383c609ea74aab24450c6f6693b9456121c.png)!(https://osci
LeeFJ LeeFJ
1年前
Foxnic-Web 代码生成 (10) —— 生成菜单与授权
模块代码生成之后,我们需要为配置菜单。配置菜单是一系列的过程,包括创建资源、创建菜单并关联资源,并将菜单授权给指定的角色。
Stella981 Stella981
3年前
PHP Laravel5实现的RBAC权限管理操作示例
根据不同的权限,在菜单栏显示不同的功能,只对菜单进行了限制,若对路由也进行限制,可以根据菜单的例子,请自行完善,开发。下面请认真学习一下laravel的RBAC设计1、建表(用户表、角色表、权限表、用户角色表、角色权限表)1CREATETABLEIFNOTEXISTSmr_role2(3id
Stella981 Stella981
3年前
Eclipse插件开发HelloWorld篇
介绍Eclipse插件开发初体验,通过下面的步骤,可以很快地得到一个HelloWorld版本的Eclipse插件。该示例的最终效果,是会通过点击新增加的一个按钮或者菜单弹出一个提示框(内容是HelloWorld)。这是一篇Eclipse插件开发入门的教程,本站还有其他很多的教程,但不要忘记最好的老师就是Eclipse本身。建议大家多多查看Ecl
可莉 可莉
3年前
10 个非常酷的基于jQuery的菜单效果插件
除了直观的界面效果外,炫酷的网站导航菜单或右键菜单也能为访问者带来眼前一亮的感觉。本文为你带来10个非常酷的基于jQuery的菜单效果插件。 1. 右击菜单 一个创建右击菜单的插件,简洁且易用。 !(http://static.oschina.net/uploads/img/201112/20185535_
Stella981 Stella981
3年前
Eclipse转IntelliJ IDEA迅速上手
1.偏好设置在哪?用eclipse都习惯了在菜单Window下找到preferences进行一些设置。Idea里叫Settings,在File菜单下,即第一个菜单。可以用快捷键CtrlAltS调出。!(http://static.oschina.net/uploads/space/2015/0120/134204_dazv
Wesley13 Wesley13
3年前
NO.168 如何做禅道二次开发(4):如何登记菜单
扩展禅道(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.zentao.net%2F%3Fu%3Dpxz%26f%3Dosc)遇到的一个问题就是如何将自己增加的功能登记到菜单中,本篇文章来讲述如何来实现这个功能。一、菜单的组成禅道的导航菜单分为三个部分,顶部菜单、
绣鸾 绣鸾
1年前
MouseBoost Pro for Mac(右键扩展助手专业版)
是一款专为Mac平台开发的鼠标增强工具,其主要特点如下:1.可自定义菜单:MouseBoostMac右键助手允许用户自定义右键菜单,可以添加或删除菜单项,以适应不同用户的需求。2.多种快捷操作:MouseBoostMac右键助手支持多种快捷操作,例如剪切、
绣鸾 绣鸾
11个月前
MouseBoost Pro for Mac(右键助手专业版) 3.3.1激活版
是一款专为Mac平台开发的鼠标增强工具,其主要特点如下:1.可自定义菜单:MouseBoostMac右键助手允许用户自定义右键菜单,可以添加或删除菜单项,以适应不同用户的需求。2.多种快捷操作:MouseBoostMac右键助手支持多种快捷操作,例如剪切、
绣鸾 绣鸾
11个月前
MouseBoost Pro for Mac(右键助手专业版) 3.3.2激活版
是一款专为Mac平台开发的鼠标增强工具,其主要特点如下:1.可自定义菜单:MouseBoostMac右键助手允许用户自定义右键菜单,可以添加或删除菜单项,以适应不同用户的需求。2.多种快捷操作:MouseBoostMac右键助手支持多种快捷操作,例如剪切、