快速业务通道

[Eclipse]GEF入门系列(六、添加菜单和工具条) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

[Eclipse]GEF入门系列(六、添加菜单和工具条)

时间:2011-04-19 cnblogs bjzhanghao

我发现一旦稍稍体会到GEF的妙处,就会很自然的被它吸引住。不仅是因为用它做出的图 形界面好看,更重要的是,UI中最复杂和细微的问题,在GEF的设计中无不被周到的考虑并以 适当的模式解决,当你了解了这些,完全可以把这些解决方法加以转换,用来解决其他领域 的设计问题。去年黄老大在一个GEF项目结束后,仍然没有放弃对它的继续研究,现在甚至利 用业余时间开发了基于GEF的SWT/JFace增强软件包,Eclipse和GEF的魅力可见一斑。我相信 在未来的两年里,由于RCP/GEF等技术的成熟,Java Standalone应用程序必将有所发展,在 B/S模式难以实现的那部分领域里扮演重要的角色。

本篇的主题是实现菜单功能,由于Eclipse的可扩展设计,在GEF应用程序中添加菜单要多 几处考虑,所以我首先介绍Eclipse里关于菜单的一些概念,然后再通过实例描述如何在GEF 里添加菜单、工具条和上下文菜单。

我们知道,Eclipse本身只是一个平台(Platform),用户并不能直接用它来工作,它的 作用是为那些提供实际功能的部件提供一个基础环境,所有部件都通过平台指定的方式构造 界面和使用资源。在Eclipse里,这些部件被称为插件(Plugins),例如Java开发环境(JDT )、Ant支持、CVS客户端和帮助系统等等都是插件,由于我们从eclipse.org下载的Eclipse 本身已经包含了这些常用插件,所以不需要额外的安装,就好象Windows本身已经包含了记事 本、画图等等工具一样。如果我们需要新功能,就要通过下载安装或在线更新的方式把它们 安装到Eclipse平台上,常见的如XML编辑器、Properties文件编辑器,J2EE开发支持等等, 包括GEF开发包也是这类插件。插件一般都安装在Eclipse安装目录的plugins子目录下,也可 以使用link方式安装在其他位置。

Eclipse平台的一个优秀之处在于,如此众多的插件能够完美的集成在同一个环境中,要 知道,每个插件都可能具有编辑器、视图、菜单、工具条、文件关联等等复杂元素,要让它 们能够和平共处可不是件容易事。为此,Eclipse提供了一系列机制来解决由此带来的各种问 题。由于篇幅限制,这里只能简单讲一下菜单和工具条的部分,更多内容请参考Eclipse随机 提供的插件开发帮助文档。

大多数情况下,我们说开发一个基于Eclipse的应用程序就是指开发一个Eclipse插件 (plugin),Eclipse里的每个插件都有一个名为plugin.xml的文件用来定义插件里的各种元 素,例如这个插件都有哪些编辑器,哪些视图等等。在视图中使用菜单和工具条请参考以前 的贴子,本篇只介绍编辑器的情况,因为GEF应用程序大多数是基于编辑器的。

[Eclipse]GEF入门系列(六、添加菜单和工具条) - 编程入门网

图1 Eclipse平台的几个组成部分

首先要介绍Retarget Action的概念,这是一种具有一定语义但没有实际功能的Action, 它唯一的作用就是在主菜单条或主工具条上占据一个项位置,编辑器可以将具有实际功能的 Action映射到某个Retarget Action,当这个编辑器被激活时,主菜单/工具条上的那个 Retarget Action就会具有那个Action的功能。举例来说,Eclipse提供了 IWorkbenchActionConstants.COPY这个Retarget Action,它的文字和图标都是预先定义好的 ,假设我们的编辑器需要一个"复制节点到剪贴板"功能,因为"复制节点"和"复制"这两个词 的语义十分相近,所以可以新建一个具有实际功能的CopyNodeAction(extends Action), 然后在适当的位置调用下面代码实现二者的映射:

IActionBars.setGlobalActionHandler(IWorkbenchActionConstants.COPY, copyNodeAction)

当这个编辑器被激活时,Eclipse会检查到这个映射,让COPY项变为可用状态,并且当用 户按下它时去执行CopyNodeAction里定义

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号