- 浏览: 2488340 次
- 性别:
- 来自: 杭州
-
文章分类
- 全部博客 (574)
- Book (62)
- Architecture (6)
- Java (39)
- Taobao (41)
- Distributed (4)
- Life (72)
- Database (7)
- Spring (16)
- Photography (15)
- Bicycle (41)
- Test (20)
- jBPM (8)
- Business (12)
- Movie (3)
- Ajax (15)
- Code (7)
- Eclipse (96)
- VIM (2)
- Music (6)
- Groovy (10)
- AutoHotKey (3)
- Dorado (10)
- Maven (7)
- Scrum (5)
- English (20)
- Financial (12)
- OSGi (3)
- Other (4)
- Tool (6)
- Browser (1)
- PPT (1)
- Project Management (4)
- Agile (6)
- Nosql (1)
- Search engine (6)
- Shell (2)
- Open Source (4)
- Storm (10)
- Guava (3)
- Baby (1)
- netty (1)
- Algorithm (1)
- Linux (1)
- Python (2)
最新评论
-
roy2011a:
https://github.com/ebottabi/sto ...
storm的序列化问题及与spring的结合方式 -
roy2011a:
能抗能打 写道哥们儿,你好!能共享下那个storm与sprin ...
storm的序列化问题及与spring的结合方式 -
Alick1:
兄弟,你之前是不是在深圳的正阳公司呆过啊?
storm的ack和fail -
liuleixwd:
先点个赞,写的非常好!有个问题请教下,如果我再bolt里不用e ...
storm的ack和fail -
yao-dd:
solr的facet查询
FROM:http://www.blog.edu.cn/user1/19180/archives/2006/1406358.shtml
对于图形界面工具来说,工具栏是必不可少的支持。对于Eclipse插件而言,工具栏可以分为两种:主工具栏(全局)和视图工具栏。从实现的角度上,二者没有什么太大区别,只是在初始化的时候略有不同。
工具条上的每一个按钮实际上是一个Action,每个Action负责执行一些功能。Action分为普通的Action和RetargetAction两种,我们看到的工具栏上的按钮其实都是RetargetAction,他们负责提供按钮的图标、说明等等,而真正的功能则由另一个普通的Action负责实现。这就是说,在普通的Action和RetargetAction之间存在一个对应关系,当用户点中工具栏上的RetargetAction时,其对应的Action将被执行(我们称这个Action为RetargetAction的handler)。一般来说,只要二者的ID一样,那么这两个Action之间就能自动建立这种对应。实际上,存在一个函数为RetargetAction建立handler,但是默认情况下GEF帮我们做了,有关映射的问题,稍后再做讨论。
自定义一个Action
下面给出一个RetargetAction的例子:
- public class MappingRetargetAction extends RetargetAction {
- public MappingRetargetAction() {
- super(MappingAction.ID, "do Mapping");
- setToolTipText("Mapping abstract Model");
- setImageDescriptor(ModelConstance.ICON_MAPPING_A);
- setDisabledImageDescriptor(ModelConstance.ICON_MAPPING_D);
- }
- }
上面的代码一目了然,这里不再做过多的解释。接下来创建MappingAction,也就是RetargetAction的Handler。MappingAction的作用是为模型元素进行语义映射,因而,我们首先需要选中一个模型元素——重点是,MappingAction必须是SelectionAction的子类。
SelectionAction用于实现选中元素的操作,如果某一项功能需要选中一些元素后才能执行,那么你就可以使用SelectionAction。SelectionAction是WorkbenchPartAction的子类,WorkbenchPartAction的子类还包括CopyTemplateAction、EditorPartAction、PrintAction、StackAction,这看起来比较晕,不过幸运的是最常用的还是SelectionAction,或者你可以直接继承自WorkbenchPartAction甚至是Action来实现你的功能。
对于每个WorkbenchPartAction来说,最重要的方法是calculateEnabled和run,前者用于判断这个Action是否可以被激活,后者则执行这些操作,这一点对于SelectionAction也是一样的,如下面的示例:
- public class MappingAction extends SelectionAction {
- final static public String ID = "USER_DEFINE:Mapping";
- protected MappingDialog dlg = null;
- public MappingAction(IWorkbenchPart part) {
- super(part);
- this.setId(ID);
- }
- protected boolean calculateEnabled() {
- IStructuredSelection s = (IStructuredSelection)this.getSelection();
- if(s==null||s.size()!=1) return false;
- if(s.getFirstElement() instanceof DiagramPart) return false;
- if(s.getFirstElement() instanceof TextObjectModelPart) return true;
- return false;
- }
- public void run() {
- IStructuredSelection s = (IStructuredSelection)this.getSelection();
- if(dlg==null) dlg = new MappingDialog((Shell)null);
- if(dlg.open()!=Window.OK) {
- return;
- }
- MappingTextObjectCommand c = new MappingTextObjectCommand();
- c.path = dlg.path;
- c.model = (TextObjectModel)((TextObjectModelPart)s.getFirstElement()).getModel();
- this.execute(c);
- }
- }
有两点需要说明,首先在初始化的时候Action的ID一定和之前的RetargetAction一致;其次,原则上run方法里可以实现全部的功能,但是出于复用的角度,我们还是讲真正的逻辑封装在一个Command里。
安装Action
首先我们需要一个ActionBarContributor,它用于创建主工具栏。其中我们主要需要实现三个函数:buildActions、declareGlobalActionKeys、contributeToToolBar。buildActions通常用于创建新的Action,declareGlobalActionKeys则用于声明那些已经存在RetargetAction的Action,比如有些功能如DELETE、UNDO、REDO等等。
GEF 在ActionBarContributor里维护了retargetActions和globalActionKeys两个列表,其中后者是一个Retarget Actions的ID列表,addRetargetAction()方法会把一个Retarget Action同时加到二者中,对于已有的Retarget Actions,我们应该在declareGlobalActionKeys()方法里调用addGlobalActionKey()方法来声明,在一个编辑器被激活的时候,与globalActionKeys里的那些ID具有相同ID值的(具有实际功能的)Action将被联系到该ID对应的Retarget Action,只要保证二者的ID相同即可实现映射。[八进制]
示例如下:
- public class DiagramActionBarContributor extends ActionBarContributor {
- protected void buildActions() {
- addRetargetAction(new DeleteRetargetAction());
- addRetargetAction(new MappingRetargetAction());
- addRetargetAction(new MappingRelationshipRetargetAction());
- }
- protected void declareGlobalActionKeys() {
- }
- public void contributeToToolBar(IToolBarManager toolBarManager) {
- toolBarManager.add(getAction(ActionFactory.DELETE.getId()));
- toolBarManager.add(getAction(MappingAction.ID));
- toolBarManager.add(getAction(MappingRelationshipAction.ID));
- }
- }
ActionBarContributor 中只设置了RetargetAction,真正实现功能的Action则要在Editor中进行设置。重载Editor的createActions,安装真正Action,如下:
- protected void createActions() {
- super.createActions();
- IAction a;
- a = new MappingAction(this);
- getActionRegistry().registerAction(a);
- getSelectionActions().add(a.getId());
- ...
- }
最后在plugin.xml中的Extensions选项页里选择你的Editor,并在右侧Extension Element Details里设置ContributorClass为ActionBarContributor,主工具栏就会出现我们自定义的那个Action了。
PS:八进制这篇写的真不错,推荐一下http://bjzhanghao.cnblogs.com/archive/2005/03/30/128704.html
发表评论
-
Java程序员25个必备的Eclipse插件
2012-01-12 22:36 21967原文:http://www.fromdev.com/2012/ ... -
关于插件更新安装的错误
2007-12-21 20:12 2246在更新插件的时候出现这样的错误: Unable to comp ... -
最近做eclipse branding, features的一些经验
2007-12-16 01:24 4586知道eclipse的splash怎么做 ... -
GEF学习笔记
2007-12-07 20:20 4189GEF以前学习过, 而且还 ... -
SWT布局深入学习
2007-11-30 23:00 7975以下内容是学习"The Definitive Gui ... -
Eclipse Action 深入学习笔记(3)
2007-11-25 17:59 4145filter元素是用来指定当 ... -
Eclipse Action 深入学习笔记(2)
2007-11-25 17:14 5249Object Action 这种Action是跟弹出的上下文菜 ... -
Eclipse Action 深入学习笔记(1)
2007-11-25 17:07 7714以前做插件用到的ActionSet都只是依葫芦画瓢,没有真正理 ... -
JFace Text Editor完全掌握之终极指南(4)
2007-11-24 17:08 5709错误标识(Error Marking) Error Marki ... -
JFace Text Editor完全掌握之终极指南(3)
2007-11-24 16:56 5552内容大纲 之所以要给编 ... -
JFace Text Editor完全掌握之终极指南(2)
2007-11-24 16:53 6766最后一步就是实现各种功能 语法高亮 首先我们要实现的是语法高亮 ... -
JFace Text Editor完全掌握之终极指南(1)
2007-11-24 16:17 10035JFace Text Editor是JFace里面一个功能强大 ... -
最近的Eclipse plugin开发总结
2007-11-24 11:30 4963List控件没有提供addDblClickListener方法 ... -
eclipse3.3关于JavaFileEditorInput兼容性问题的解决
2007-11-24 11:22 4697在eclipse3.3中,JavaFileEditor ... -
Eclipse WTP Projects Facets实战指南(2)
2007-11-21 21:13 5293修饰工作 给facet在选择列表中添加图标 格式如下: xml ... -
Eclipse WTP Projects Facets实战指南(1)
2007-11-21 20:21 9626这个文章基本是"Building Project F ... -
也说关于WizardPage的动态生成
2007-11-05 14:26 5181在Eclipse中一个Wizard=Wiza ... -
关于多页编辑器中不同Editor之间的Redo&Undo冲突的解决
2007-09-03 15:17 4102在我们的插件工具的开 ... -
TextEditor原理分析笔记
2007-08-23 15:48 3406Editor的语法着色原理:Eclipse使用damage , ... -
最近的Eclipse开发总结
2007-08-23 15:46 2147java.lang.IllegalAccessError: t ...
相关推荐
总结,斑马打印机ZT411和ZT421的中文手册是用户操作、维护和解决问题的重要工具。它详尽地涵盖了打印机的所有方面,无论是初次使用者还是经验丰富的技术人员,都能从中获益。通过学习和参考这份手册,用户可以充分...
本资源"Linux下编程的三个重要工具(ZT)"似乎提供了一些关键工具的介绍,虽然具体细节未在描述中详述,但我们可以根据常见的编程工具来探讨这三个可能的重要工具。以下是Linux编程中经常使用的三大工具的详细讲解:...
"项目管理工具——ZT",在这里指的是禅道(ZentaoPMS),这是一款专为中国企业打造的开源项目管理软件,旨在提升团队协作效率,规范项目流程,实现产品开发的精细化管理。 禅道的核心功能涵盖了需求管理、任务管理...
《ZT213/ZT213LEEA:低功耗RS232多通道USB收发器/驱动器芯片详解》 ZT213/ZT213LEEA是一款专为低功耗应用设计的RS232多通道USB收发器和驱动器芯片,广泛应用于数据通信、工业控制、物联网设备等领域。本文将深入...
### ZT213LEEA.PDF 知识点概览 #### 一、产品概述 **ZT213LEEA** 是一款由 Zywyn Corporation 生产的低功耗 RS232 通信接口芯片。该系列器件采用 +5V 供电,支持 EIA/TIA-232 和 V.28/V.24 通信标准,并具有较低的...
官服物品查看工具,ZT的官服客户端物品查看工具
- 安装中文库通常需要通过斑马的软件工具,如ZebraDesigner,将"chinesefont"文件上传到打印机内存中。 - 使用时,在打印软件中选择已安装的中文字体,然后编辑并打印包含中文的标签内容。 - 验证打印效果:打印...
ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机
斑马(Zebra)ZT230条码打印机是一款广泛应用在工业环境中的高效设备,其驱动程序是确保打印机正常工作的重要组成部分。本驱动程序专为Zebra的ZT210、ZT220及ZT230系列打印机设计,提供了全面的功能支持,以实现高...
ZT7548是一款第五代电容式触控屏幕控制器,支持30x18或18x30的通道配置,可以同时检测最多10个触点。该控制器能够与最多8个键与TSP(触控屏面板)或FPC(柔性印刷电路板)模式一起工作,在多点触控时无扫描率下降的...
"斑马打印机ZT210用户指南" 本用户指南旨在为Zebra ZT210/ZT220/ZT230打印机的用户提供操作和维护指南,该设备是一种工业级的条码打印机,具有高速打印、高速处理和高质量打印输出等特点。 版权信息 本手册的版权...
斑马ZT510打印机驱动文件
斑马打印机ZT210是一款专业的工业级条形码和标签打印机,广泛应用于物流、零售、医疗等行业的标签制作。以下是对如何设置和使用斑马ZT210打印机的详细步骤: 首先,我们需要安装电脑驱动。双击下载好的驱动程序文件...
CAD 贱人工具箱5.2,使用说明:CAD命令:ap,加载文件,再使用命令:Y
RS485通信芯片ZT13085E是一种常用的工业级串行通信接口芯片,主要用于构建远程、多节点的通信网络。在工业自动化、楼宇自动化、物联网设备等领域有广泛应用。ZT13085E的设计目标是提供一种高效、可靠的数据传输方式...
开发SDK是软件开发工具包的简称,它为开发者提供了实现特定功能所需的接口、库文件、示例代码等资源。在证通ZT598的SDK中,接口说明文档详细阐述了如何与硬件进行通信,包括发送指令、接收反馈、处理错误等方面,是...
赠送jar包:zt-exec-1.9.jar; 赠送原API文档:zt-exec-1.9-javadoc.jar; 赠送源代码:zt-exec-1.9-sources.jar; 赠送Maven依赖信息文件:zt-exec-1.9.pom; 包含翻译后的API文档:zt-exec-1.9-javadoc-API文档-...
斑马zt210是一款专为中国市场设计的工业条码打印机,非常适合不需要频繁更换标签的条码标签应用。这里给大家提供斑马zt210驱动下载,推荐有需要的用户下载安装。斑马zt210打印机优势:◆ 节省空间* 小巧紧凑和流线型...
### zebra ZT400系列打印机技术手册 #### 知识点概述: 1. **版权及法律声明**:Zebra ZT400系列打印机技术手册的版权及相关软件固件的所有权归属ZIH Corp.及其许可证持有者,未经授权复制会受到法律制裁。 2. **...
《ZT210 230加载介质和碳带》 在条形码和标签打印领域,Zebra公司的ZT210和ZT230打印机是广泛应用的设备,以其可靠性和效率赢得了广大用户的青睐。这两个型号的打印机都属于入门级工业级条码打印机,适用于各种商业...