eclipse command java_Eclipse Command框架简明教程(PART-1)

Commands

简介

Command是组件的申明式描述,并且独立于具体实现。Command通过org.eclipse.ui.commands扩展点来定义。

Command可以被分类、分配到UI,并且还可以定义Key Binding。Command的行为通过handler定义。

与Command相关的扩展点

为了定义Command,可以新建一个org.eclipse.ui.command扩展点的扩展。org.eclipse.ui.menu扩展点用来定义Command在应用程序中在什么地方是可见的,例如,可以将Command添加在application menu(程序的全局菜单),context menu(上下文菜单)或者view menu(视图菜单)中。

表1 扩展点

Extension Point

Description

org.eclipse.ui.command

组件的申明式描述

org.eclipse.ui.handler

定义Command的行为,通常是command被触发时需要调用的Java类

org.eclipse.ui.menu

Command在什么地方并且如何被包含在UI中的,例如,菜单,弹出菜单,工具栏等。

菜单(Menu)

菜单扩展点

Commands在菜单,工具栏和上下文菜单中使用到。

org.eclipse.ui.menu扩展允许定义一个“menuContribution”。menuContribution有一个名字为locationURI的属性,这个属性定义一个command是如何显示在UI中的(即command会出现在什么地方,菜单还是工具栏,等等)。

g89l95MlddaKQAAAABJRU5ErkJggg==

表2 Location URIs

Contribution to

Description

Uri

Application menu

在应用程序全局菜单中显示Command

menu: org.eclipse.ui.main.menu

Application toolbar

在应用程序的工具栏中显示Command

toolbar: org.eclipse.ui.main.toolbar

View toolbar

在视图菜单中显示Command

toolbar:viewId

Context menu / pop-up

在上下文菜单中显示Command

popup:ID

定义菜单扩展的位置

通过在locationURI中使用“?before=ID”或者“?after=ID”来定义command的相对位置。其中,ID可以是已经存在的separator的名字(separator name),菜单ID(menu ID)或者item ID。

如果将一个command添加到ID为“fileMenu”的菜单中并且在ID为“oneEntry”的菜单项之后显示,对应的locationURI为“menu:fileMenu?after=oneEntry”。

Handler

Command Handler

Command的行为是通过handler定义的。Handler就是在command被调用后马上被执行的Java类,并且handler必须实现org.eclipse.core.commands包中的IHandler接口。

在大多数情形中可以继承org.eclipse.core.commands.AbstractHandler类,它提供了IHandler接口的一个默认实现。

如果handler被执行,方法execute()将被调用。

在execute()方法中可以通过HandlerUtil类来访问经常用到的服务(service)或者values。

Handler的有效性

可以为Handler定义一些条件(activeWhen)用来表示handler在什么情况下对command是可用的。一个command可以关联多个handler,但是在某个指定的时刻对于这个command有且仅有一个handler是可用的。否则,eclipse runtime将不会enable这个command。

Command框架的类图

requestForComments_html_m41374bdb.png?view=co

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值