2014年9月9日 高级命令command的使用(上)
上次说到了菜单 工具条按钮 上下文菜单都已经改为用command的方式去做了,这次稍微详细地说说。
在command的实现拓展点handler上右键,可以看到有enabledWhen,activeWhen,在menu上的command右键,会有visibleWhen的选项,都是一些可以控制command可见,可用的状态,如下图,可以看到一些固定的使用方法已经定义好了在里面了。
具体的使用方法可以参考官方的command core expression
除了这些已经帮我们定义好的,如果还有自己的需求,可以在此基础上添加自己的表达式。
新建一个org.eclipse.core.expressions扩展点,如图这么设置它,意思是在当且只有一个元素被选中的时候。
使用的时候只需要在我们定义好的handler上增加enabledWhen,然后选择我们定义好的表达式,这样的意思就是当且只有一个元素被选中的时候,这个handler为可用,否则不可用。
由于这个表达式是基于selection的,所以我们要在我们的视图上进行注册。
public void createPartControl(Composite parent) {
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
| SWT.V_SCROLL);
viewer.setContentProvider(new ViewContentProvider());
viewer.setLabelProvider(new ViewLabelProvider());
viewer.setInput(getViewSite());
// 使selection对这个视图起作用
getSite().setSelectionProvider(viewer);
}
在eclipse里包含了很多官方已经定义好的command,有些时候我们拿过来就直接可以用,包括功能,图标等等。
比如eclipse中的about菜单。
我们在我们的菜单中添加一个command,ID指向org.eclipse.ui.help.aboutAction,这样便可以使用了。
还有一种通过代码的方式,往ActionFactory中加入它们。使用方法如下:
@Override
protected void makeActions(IWorkbenchWindow window)
{
IWorkbenchAction quickStartAction = ActionFactory.INTRO.create(window);
register(quickStartAction);
IWorkbenchAction resetView = ActionFactory.RESET_PERSPECTIVE
.create(window);
register(resetView);
}
command也支持直接从代码中调用,方法如下:
IHandlerService handlerService = (IHandlerService) getSite().getService(IHandlerService.class);
try {
handlerService.executeCommand("add.command", null);
} catch (Exception ex) {
throw new RuntimeException("add.command not found");
// Give message
}
}
command还能定义命令接受参数,提供自己更为细致的表达式判断,还可以支持在runtime环境中定义command,这和action有点像。余下的部分留在下次说好了。
参考链接:http://www.vogella.com/tutorials/EclipseCommandsAdvanced/article.html
2014年9月9日 高级命令command的使用(上)的更多相关文章
- 无插件的大模型浏览器Autodesk Viewer开发培训-武汉-2014年8月28日 9:00 – 12:00
武汉附近的同学们有福了,这是全球第一次关于Autodesk viewer的教室培训. :) 你可能已经在各种场合听过或看过Autodesk最新推出的大模型浏览器,这是无需插件的浏览器模型,支持几十种数 ...
- 09.13日记(2014年9月13日00:18:26)英语,bootstrap,阮一峰,
我们这里只推荐一本语法书:台湾的旋元佑老师写的<文法俱乐部>(简体版名为<语法俱乐部>).这本书因为出版社倒闭而绝版,淘宝可以买到影印的版本. (1)学英语:奶爸的英语教室 资 ...
- 马后炮之12306抢票工具(四)--抢票Demo,2014年1月9日终结版
时隔一年多,终于朋友的忽悠下吧抢票Demo的最后一步完善了,与2014年1月9日成功生成车票. Demo仅经过自己测试,并未在高峰期进行测试,代码质量很差,因为赶工,套用去年模板并未使用设计模式. 代 ...
- 系列文章:老项目的#iPhone6与iPhone6Plus适配#(持续更新中,更新日期2014年10月12日 星期日 )
本文永久地址为http://www.cnblogs.com/ChenYilong/p/4020399.html ,转载请注明出处. ********************************** ...
- 转:[置顶] 从头到尾彻底理解KMP(2014年8月22日版)
[置顶] 从头到尾彻底理解KMP(2014年8月22日版)
- SQLSERVER2014 2014年4月1日发布
SQLSERVER2014 2014年4月1日发布 原文地址: http://blogs.technet.com/b/microsoft_blog/archive/2014/03/18/sql-ser ...
- 千寻浏览器 1.0 Beta 1(524)(2014年5月27日)
千寻浏览器--又一款新生浏览器今天进入各位浏览迷的视野.千寻浏览器基于IE内核,据传是由百度浏览器的上海团队操刀,在功能定位上,与目前的QQ浏览器有些相似. 千寻来自官方的解释:寻,追寻,探索,又是古 ...
- 2014年6月5日 深圳 IBM 安全解决方案会议通知
2014年6月5日 深圳 IBM 安全解决方案会议通知 http://gdtesting.com/news.php?id=191 时间: 2014年6月5日 地点: 深圳大中华喜来登 议程: IBM安 ...
- 【公告】CSDN个人空间将于2014年4月20日全新改版上线
尊敬的用户: 你们好! CSDN个人空间将在2014年4月20日全新改版上线! CSDN个人空间是2008年8月推出的服务,致力于给广大用户提供在线技术分享和资料 ...
随机推荐
- pthread_mutexattr_t设置的相关函数及其说明
基本概述 该函数用于C函数的多线程编程中,互斥锁的初始化. 头文件:#include <pthread.h> 函数原型: int pthread_mutex_init(pthread_mu ...
- linux awk和sed工具
慕课网链接:https://www.imooc.com/video/14508 部分示例命令 #替换passwd中的用户名和userid和gid gsed 's/\(^[a-z_-]\+\):\*:\ ...
- MongoDB 正则表达式查询
正则表达式查询 $regex 注:^ 取反的意思 用特殊的转义字符需要在前面加一个斜杠 通过 ^取反 ,再通过$not取反,就可获得只包含一种类型的数据 \\d 数字 \\s 空格 \\ ...
- 使用Python比较MySQL数据库中两个数据库的表结构--转载
https://blog.csdn.net/tenaguan4461/article/details/82286781 https://www.jianshu.com/p/b3dac5a3479a
- go defer 语句会延迟函数的执行直到上层函数返回。
defer code... 可以理解为 执行完当前defer所在的方法代码后执行defer 中的代码 常用在释放资源 比如 关闭文件 为防止忘记编写关闭代码 可以先写好 defer 各种释放资源 ...
- Django dumpdata and loaddata
目录 dumpdata 命令 dumpdata 基本数据库的转存 dumpdata 备份特定的 app dumpdata 备份特定的表 dumpdata (--exclude) dumpdata (- ...
- SAS学习笔记40 SAS程序运行过程
当我们提交运行一个DATA步程序后,具体发生了什么事情. SAS程序与其他程序一样,在运行时都要经过两个阶段:编译(Compilation).执行(Execution) 程序首先经过编译阶段,该阶段主 ...
- Intellij IDEA中启动多个微服务--开启Run Dashboard管理
1.找到workspace.xml 2.添加配置 <option name="configurationTypes"> <set> <option v ...
- Angular 调试
我们新建一个项目.执行 ng server 会启动一个网站. 1. 执行 where ng .看看ng 是什么. D:\Abp学习\angular\Mytest>where ng C:\User ...
- VBA教程(一)
VBA代表Visual Basic for Applications,它是一个来自Microsoft的事件驱动的编程语言. 现在它主要用于Microsoft Office应用程序,如MSExcel,M ...