免费预览已结束,剩余47页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
厦门大学本科毕业论文 本科毕业论文(科研训练、毕业设计)题 目:核磁共振仪器控制软件开发RCP程序设计姓 名:学 院:软件学院系:专 业:软件工程年 级: 学 号:指导教师(校内): 职称: 指导教师(校内): 职称: 年 月 日核磁共振仪器控制软件开发RCP程序设计摘要 本文的重点关注于RCP的设计,它出现于上个世纪90年代初。富客户端(RCP)提供给用户高质量的用户体验,能让界面元素更加丰富,用户更容易操作,使应用程序的设计贴近用户。并且,由于RCP采用了本地接口的调用,让RCP的处理速度比起B/S结构的应用速度快。好的RCP,提供了例如拖拽操作、系统剪切板、导航、用户自定义等用户界面(UIs)元素,让程序的UIs更为人性化。本文首先介绍了项目的一些基本条件和要求。作为500MHz超导核磁共振谱仪系统的随机软件,要对谱仪进行控制,并能完成NMR实验设计及采样,还有对数据的处理及仪器、用户管理等等。对于项目的各个模块也在项目初期定义完成。本文接下来着重介绍了RCP的详细设计过程。包括RCP的总体设计,以及各种小功能的实现。对于RCP的所有功能进行了一次概括性示范。特别是对RCP中的一些关键问题都详细说明。本文也介绍了项目中的一个小模块:GEF。GEF允许开发者使用已有的应用模型简便的开发出一个图形化编辑器。关键词 RCP(富客户端) 界面 视图 编辑器 EclipseAbstract The main body of the book priority pays close attention to the RCP design. it appears in the beginning of the nineties last century. RCP provides customer with height mass experience. It makes interface elements especially rich, and customer could more easy to handle it, and application designing close to customer. Moreover, RCP has adopt this locality interface invoking, make the RCP treatment speed more quickly than B/S structure. Better RCP, has provided Uis(User Interfaces) elements such as drag operation, systematic shear plate, navigation, customer self definition and so on. So the procedure being personalization more.Some main conditions and request of the project in the book has been introduced first. As systematic random of 500 MHz superconductivity nuclear magnetic resonance spectroscopy instruments software, need to control the instrument being in progress, still have the treatment to the data and instrument, customer administration etc. can accomplish NMR experiment design and sampling together. To the project each, the module is completed also in project initial stage definition.The main body of the book is emphasized then having introduced RCP detailed design process. Include the RCP population design, and various small functions realization. All functions to RCP have carried out a general example. Explain at some especial questions in RCP.A small module in the project of the book has also been introduced: GEF. GEF allows developer to use simple and convenient exploitation of some application model to produce a artwork-rization editor implement.Keyword RCP (Rich Client Platform) Interface View Editor Eclipse目录第一章 引言9第二章 系统的总体设计102.1项目简介102.1.1核磁共振项目的需求分析102.1.2项目模块划分102.1.3实验设计模块102.1.4数据处理模块112.1.5用户管理模块112.1.6项目流程图112.2界面预览112.2.1启动界面122.2.2登录界面122.3透视图122.3.1实验透视图122.3.2数据处理透视图132.3.3用户管理透视图13第三章 系统的详细设计153.1了解 Eclipse RCP153.1.1RCP 简要介绍153.1.2Eclipse RCP的组成部分153.2Eclipse RCP 开发153.2.1Eclipse的目录框架153.2.2Eclipse的插件安装163.2.3Eclipse 插件结构173.3编写一个插件173.3.1Application类183.3.2Advisor类183.3.3SimplebrowserPlugin 类193.3.4Perspective 类193.3.5Plugin.xml 文件193.3.6perties 文件193.4在透视图中加入视图(views)193.4.1修改plugin.xml文件,设置视图的扩展点203.4.2创建视图类203.4.3修改透视图类SamplePerspective203.4.4运行插件203.5在视图之间实现事件监听203.5.1修改View1.java、View2.java213.5.2小结213.6给视图加下拉菜单和按钮213.6.1创建ActionGroup类223.6.2修改View1类223.7加入编辑器(editors)223.7.1修改plugin.xml文件,设置三个编辑器的扩展点223.7.2创建三个编辑器类223.7.3创建IEditorInput233.7.4打开编辑器233.8编辑器类(EditorPart)方法使用说明233.8.1各方法的作用及含义243.8.2运行结果243.9加入首选项(preferencePages)253.9.1修改plugin.xml文件,设置首选项的扩展点253.9.2建立首选项各结点对应的类253.9.3运行插件253.9.4小结263.10加入帮助(toc)263.10.1修改plugin.xml文件,设置三个帮助的扩展点263.10.2编写帮助目录文件toc263.10.3创建相应的帮助文档273.10.4小结273.11弹出信息式的帮助(contexts)273.11.1修改plugin.xml文件,设置弹出信息的扩展点283.11.2编写弹出信息的设置文件HelpContexts.xml283.11.3在界面组件中设置弹出信息283.11.4运行插件283.11.5小结283.12自定义Eclipse扩展点293.12.1定义扩展点293.12.2实现扩展303.12.3编写界面部分303.13GEF&EMF303.14使用 WebStart 发布 RCP 应用程序313.15小技巧及其他相关技术323.15.1语音提示技术323.15.2脚本引擎323.15.3动态实现接口323.16RCP程序的启动进度条333.17在Eclipse RCP中屏蔽第三方插件的扩展点333.18Eclipse提供的几个常用公共视图的ID33第四章 总结35致谢36参考文献37附录381核磁共振及脉冲序列原理382常用脉冲序列38ContentsChapter 1. Introduction9Chapter 2. The total design of system102.1Project synopsis102.1.1Nuclear magnetic resonance project demand analysis102.1.2Project module division102.1.3Experiment designing module102.1.4Data processing module112.1.5User administration module112.1.6Project flow chart112.2The interface previews112.2.1Start interface122.2.2Login interface122.3Perspective122.3.1Experimental Perspective122.3.2Data Processing Perspective132.3.3User Management Perspective13Chapter 3. The detailed design153.1Understand Eclipse RCP153.1.1RCP briefed153.1.2Eclipse RCP component153.2Eclipse RCP development153.2.1Eclipse directory framework153.2.2Eclipse plugin installed163.2.3Eclipse plugin structure173.3Preparation of a plug-in173.3.1Application Class183.3.2Advisor Class183.3.3SimplebrowserPlugin Class193.3.4Perspective Class193.3.5Plugin.xml perties file193.4In addition Perspective View(views)193.4.1Change plugin.xml file, set views expansion point203.4.2Create view class203.4.3Change perspective class:SamplePerspective203.4.4Plug-operation203.5Realizes the event between the view to monitor203.5.1Change View1.java、View2.java213.5.2Summary213.6Adds pull menu and the button to the view213.6.1Create ActionGroup class223.6.2Change View1 class223.7Add the editor(editors)223.7.1Change plugin.xml file,set three editors expansion point223.7.2Create three editors class223.7.3Create IEditorInput233.7.4Open editors233.8Editor Class(EditorPart)methods for use233.8.1The role and meaning of the various methods243.8.2Operation Results243.9Add preferenceage(preferencePages)253.9.1Change plugin.xml file,set preferencePage expansion point253.9.2Create preferencePage nodes Corresponding to the class253.9.3Plug-operation253.9.4Summary263.10Add help(toc)263.10.1Change plugin.xml file,set three help expansion point263.10.2Prepared help contents file toc263.10.3Create corresponding Help documents273.10.4Summary273.11Pop-help information(contexts)273.11.1Change plugin.xml file,set pop-help information expansion point283.11.2Pop-up information to prepare document HelpContexts.xml283.11.3Interface components in the set while the information283.11.4Plug-operation283.11.5Summary283.12Customizing Eclipse expansion point293.12.1Define expansion point293.12.2Implementation of the extended303.12.3Part of the preparation of the interface303.13GEF&EMF303.14Published RCP using WebStart application313.15Tips and other related technologies323.15.1Voice Technology323.15.2Script engine323.15.3Dynamic Interface Implementation323.16RCP procedures for the initiation of progress333.17 Eclipse RCP in which shield the expansion of third-party plug-points333.18Eclipse provides several commonly used public view ID33Chapter 4. Conclusion35Acknowledgement36Reference37Appendix381NMR pulse sequence and Principle382Common pulse sequence38第一章 引言Eclipse 是替代IBM Visual Age for Java(以下简称IVJ)的下一代IDE开发环境。2001 年11 月 IBM 宣布捐出了价值四千万美金的开发软件给开放源码的 Eclipse 项目。自其面世以来,其以独特的插件开发模式广受众人青睐。但一直以来关于eclipse进行软件设计,特别是用eclipse设计RCP的中文教材较少,给软件开发人员带来不小的困难1。谨以本文,介绍eclipse RCP开发及其他核磁共振软件开发所需的相关知识和技巧,并记录详细的开发过程。第二章 系统的总体设计2.1 项目简介2.1.1 核磁共振项目的需求分析作为500MHz超导核磁共振谱仪系统的随机软件,要对谱仪进行控制,并能完成NMR实验设计及采样,还有对数据的处理及仪器、用户管理等等1。具体要求如下:1. 实时准确灵活控制谱仪硬件2. 丰富易用的实验设计(图形化脉冲序列设计)3. 强大易用的数据处理(达到现有的商业化NMR数据处理软件水平)4. 跨平台(Windows、Linux和Unix)5. 人性化的用户界面开发环境:Eclipse 3.2。开发语言:Java jdk1.6.0。开发平台:Windows XP、Linux。2.1.2 项目模块划分如图21所示:图21 NMR系统模块划分2.1.3 实验设计模块1. 图形化的脉冲序列设计界面2. 支持硬脉冲、软脉冲、梯度脉冲、组合脉冲、自定义脉冲波形等3. 支持顺序、随机、条件、循环等脉冲执行次序。4. 脉冲源文件以文本方式保存,支持手工编辑5. 脉冲序列执行结果模拟2.1.4 数据处理模块1. 对1D和2D谱的完全处理能力,包括傅氏变换、差谱、相位矫正、半自动和手工基线校正、峰积分、相加减。2. 可以在时域和频域对2D谱进行剪辑变换,均衡变换、旋转、投影。3. 1D谱(组)的峰拟合。4. 计算信噪比。5. 化学位移定标。6. 驰豫分析。7. 参考去卷积。2.1.5 用户管理模块1. 权限管理丰富的权限管理(不同的使用者等级:谱仪管理员、实验测试员、开放实验的学生等,体现在可否改动谱仪设置、可否进行脉冲序列设计、可否进行梯度实验、变温实验等)2. 文件管理(各人的实验数据、脉冲序列)3. 机时管理(使用机时、采样机时等的统计、安排)2.1.6 项目流程图如图22所示:图22 项目流程图2.2 界面预览2.2.1 启动界面如图23所示:图23 系统启动界面2.2.2 登录界面如图24所示:图24 系统登陆界面2.3 透视图2.3.1 实验透视图如图25所示:图25 实验透视图2.3.2 数据处理透视图如图26所示:图26 数据处理透视图2.3.3 用户管理透视图如图27所示:图27 用户管理透视图第三章 系统的详细设计3.1 了解 Eclipse RCP3.1.1 RCP 简要介绍RCP 是Rich Client Platform的缩写,即富客户端平台。他提供了一个Eclipse 工作平台,允许开发人员通过编写扩展来构造自己的应用程序一个RCP应用程序包括至少一个定制插件。3.1.2 Eclipse RCP的组成部分Eclipse RCP是Eclipse Platform的一个子集(如图),从Eclipse3.0版本开始,Eclipse项目组对代码进行了重构,将IDE与Workbench(工作台)彻底分离,实现了一个Generic Workbench,使得特殊的RCP应用中不再有IDE的影子。而其它的可选部件及丰富的工具集更是让RCP应用在各个领域都可以大展拳脚2。如图31所示:图31 Eclipse RCP的组成3.2 Eclipse RCP 开发3.2.1 Eclipse的目录框架Eclipse RCP 整个系统最顶层的文件架是 RCP安装目录,它的子目录中包含了一个 plugins 目录,这里是所有 RCP 所需要的 plugin,以及开发者所部署的 plugin。此外还有一些 RCP 的启动代码和可执行文件 eclipse.exe。如图32所示3:图32 Eclipse的目录框架3.2.2 Eclipse的插件安装Eclipse的插件安装有两种方式,一种是直接解压到plugins和features目录下;还有一种是用links方法安装:1.解压到D:eclipseGEF-ALLeclipse(D: eclipse为Elipse的安装目录)该目录下就有如下子目录D:GEF-ALLeclipsefeaturesD:GEF-ALLeclipseplugins2.在eclipse目录下新建一个目录名为links在该目录新建文件1.link,用文本编辑器打开,输入:Path=GEF-ALL保存,重启eclipse就可以了。3.2.3 Eclipse 插件结构Eclipse 插件其实和一般的 Java 工程类似,但是不同于普通的 Java 工程的是,Eclipse 插件工程的组织安排都有一些特殊的配置文件进行维护。一个插件工程是有一系列的Java文件和一个进行描述和连接其他依赖插件的manifest 文件组成,其中还包括一个名为 plugin.xml 的配置文件,该文件是描述该插件项目具体扩展了哪些 Eclipse 的扩展点。一个 Eclipse 工程的截图如图33所示:图33 Eclipse 工程的截图插件工程包括有代码或者一系列的资源文件,例如图片、Html 文件等、Web 页面、文档等,如上图所示,该插件工程的代码包含在 org/eclipse/ui.文件架下,另外还包括了 about.html 文件以及 perties 资源文件。从Eclipse3.1开始,大部分信息比如classpath、依赖插件项等信息,都储存在了 manifest.mf 文件中。plugin.xml 的功能延续了 Eclipse 以前的扩展点描述以及扩展点的定义4。3.3 编写一个插件启动Eclispe, 从Eclispe的 File菜单创建一个插件工程:File - New- Project Plug-in Development - Plug-in Project按提示操作,最后在模板中选择最基本的Hello RCP 模板, 点击 “Finish” 按钮, Eclispe将会创建一个简单的RCP应用并且自动打开插件清单编辑器的主页面。在这里你可以方便的配置你的RCP应用, 免去手工编写和修改配置文件的麻烦。工程创建完成后, Eclipse将自动生成以下内容: Application类 ApplicationActionBarAdvisor 类 ApplicationWorkbenchAdvisor 类 ApplicationWorkbenchWindowAdvisor类XnmrPlugin 类 Perspective 类 plugin.xml 文件 perties 文件3.3.1 Application类Application类是RCP应用的主程序, 相当于整个RCP应用的控制器。Application类的职责是创建一个工作台(Workbench)然后添加一个工作台顾问类(WorkbenchAdvisior)。 它是启动RCP应用运行的第一个程序。3.3.2 Advisor类(1)ApplicationWorkbenchAdvisor在主程序 Application 类的run() 方法中引用了 ApplicationWorkbenchAdvisor 类。这个 Workbench Advisor 类对 Workbench 的外观进行了配置。ApplicationWorkbenchAdvisor 继承了WorkbenchWindowAdvisor 抽象类, 插件工程向导自动填充了createWorkbenchWindowAdvisor和getInitialWindowPerspectiveId方法体, 我们同样可以覆写( override )父类的其他方法。 这个类的方法会在工作台( Workbench )的生命周期的各个关键时刻由RCP平台调用。 是最重要的一个Advisor类。(2)ApplicationWorkbenchWindowAdvisorApplicationWorkbenchWindowAdvisor 继承了WorkbenchWindowAdvisor 类, 这个类主要负责对 Worbench Window 进行控制, 例如状态栏, 工具条, 标题, 窗口尺寸等。这个类中的方法在 Workbench Window 的生命周期中起着重要作用。(3)ApplicationActionBarAdvisorActionBarAdvisor 类继承了ActionBarAdvisor 类。 这个类负责为Workbench Window 的Action Bar ( 菜单, 工具条和状态栏等 ) 创建Action。 也可以通过插件清单 plugin.xml 文件动态地提供action。3.3.3 SimplebrowserPlugin 类Plugin类继承了 AbstractUIPlugin 抽象类并且是一个单例 ( singleton ) 类。这个类提供了对插件 Preferences , dialog store 和 image registry 的支持, 前面两个对象提供了保存插件和对话框设置的有效途径, 后者为整个插件提供了可能在插件中频繁使用的 Image 资源 。 由此可以看出, 这个类主要用来存储插件的全局信息。由于是单例类, 也是放置插件中其他类要用到的静态工具方法的好地方。现在我们不需要对这个类进行任何修改。3.3.4 Perspective 类这是RCP应用的默认的透视图。 实现了 IPerspectiveFactory 接口, 并且通过org。eclipse.ui.perspectives 扩展点的className 属性指定。透视图是一套可见的视图, 编辑器, 和菜单等。 在RCP应用中, 必须定义至少一个透视图并且设置为默认的透视图。所有启动RCP应用后希望用户看到的视图或编辑器都必须在这个类的createInitialLayout 方法中设置。3.3.5 Plugin.xml 文件Plugin.xml文件是 Eclipse 的扩展点清单, 这个文件用来定义和使用 Eclipse 扩展点。扩展点是关联 Eclipse 插件的基本方式。 例如, 这里的 Application 类就是通过org.eclipse.core.runtime.applications 扩展点定义的。Eclipse 提供了插件清单编辑器, 使用这个编辑器可以方便的修改 plugin.xml 文件的内容, 使用这个编辑器可以减少手工编辑这个 xml 文件的工作和错误。 在使用插件向导创建完工程后你看到的就是这个编辑器。3.3.6 perties 文件在导出插件的时候这个文件指定了要build的内容和相关资源的路径。 如果你向应用新增了一些资源, 如图标文件, 要记得把他们添加到 perties 文件的bin.include 一节中。在插件清单编辑器的 Build Configuration 页面可以很方便的在导出应用前对这个文件进行配置。3.4 在透视图中加入视图(views)3.4.1 修改plugin.xml文件,设置视图的扩展点显示视图如图34所示:图 34 显示视图窗口3.4.2 创建视图类视图的类必须继承抽象类ViewPart,此类有两种方法createPartControl、setFocus。我们要在createPartControl方法创建两个视图的界面组件,第一个视图创建一个列表,第二个视图创建一个文本框。而setFocus是关于视图焦点的方法,一般都不用写,让它空实现。3.4.3 修改透视图类SamplePerspective建立了一个透视图类SamplePerspective,有一个继承自接口的方法createInitialLayout,修改这种方法,将两个视图加入到透视图中。3.4.4 运行插件运行插件后,打开myplugin透视图。如果两个视图还没有显示在透视图上,则需要把透视图先关闭,再打开,以应用新的透视图设置。效果如图 35所示:图35 加入两视图后的透视图3.5 在视图之间实现事件监听两个视图中的组件之间的互动,在开发插件时是经常碰到的问题。例如,单击视图1列表中的某项时,视图2的文本框也作相应显示。3.5.1 修改View1.java、View2.java首先,要在两视图中互动就必须先解决“如何在视图1中取得视图2的对象”的问题。Eclipse通过plugin.xml来加载插件和插件中的扩展点(如视图),所以可以由视图的id标识来取得视图对象,具体语句如下:IWorkbenchPage wbp = getViewSite().getPage();IViewPart view2 = wbp.findView(.chengang.View2);得到了视图2的对象后,其他一切就都好办了,先给出修改后View1,然后将View2的文本框对象改成类的实例变量,并编写它相应的set/get方法。3.5.2 小结(1)在插件中IWorkbenchPage对象比较重要,在这里再给出一种获得此对象的方法。当不是在视图里而是在Action里要取IWorkbenchPage对象时,就可以用下面的方法:Myplugin2Plugin.getDefault().getWorkbench().getActiveWorkbenchWindow(). getActivePage();(2)IWorkbenchPage.findView(.chengang.View2),中的参数为“视图2”在plugin.xml中设置的id标识,由此可见plugin.xml文件在插件中的地位是极其重要的。IWorkbenchPage除了findView方法之外,还有findEditor方法是用来得到编辑器的。像“.chengang.View2”这种标识符在系统开发中会经常用到,最好建立一个常量专用类来集中放置这些字符串常量,然后系统中用的时候只用其常量名就行了,否则把标识符的字串分散在代码中,以后改起来会让你痛不欲生。常量类的示意代码如下:public final class StringConstants public final static String VIEW1 = .chengang.View1; public final static String VIEW2 = .chengang.View2;3.6 给视图加下拉菜单和按钮给视图加入下拉菜单和按钮,同时再为列表添加一个右键菜单,这样读者可以用来和视图的下拉菜单进行比较阅读。如图36所示:图36 效果图3.6.1 创建ActionGroup类加入菜单和按钮的方法与SWT/JFace组件的一样,先创建一个ActionGroup。3.6.2 修改View1类在View1中增加了三种方法,分别用来加入视图的导航栏按钮、下拉菜单,以及加入列表List的右键菜单。视图加按钮、菜单的方式和以前SWT/JFace的方式是一样的。只不过以前用自己生成MenuManager对象等,而现在的插件就只需要使用视图已有的MenuManager 对象。3.7 加入编辑器(editors)双击视图1中的列表项,将在透视图中加入相应的编辑器。这种效果就像在Eclipse中双击Java源文件,就会打开该源文件相对应的编辑器一样。效果如图37所示:图 37 编辑器效果图3.7.1 修改plugin.xml文件,设置三个编辑器的扩展点修改plugin.xml文件将编辑器的扩展点加入。3.7.2 创建三个编辑器类编辑器必须实现IEditorPart接口,但通常是继承抽象类EditorPart类(EditorPart是IEditorPart的子类)。如果继承EditorPart则必须实现该抽象类的七种方法,在此先实现方法init、createPartControl。3.7.3 创建IEditorInput获取视图对象是用IWorkbenchPage的findView方法,方法参数是视图在plugin.xml中的id标识。获取编辑器对象是用findEditor方法,但该方法的参数却不是id标识的字符串,而是一个IEditorInput对象。另外,加载一个编辑器是用IWorkbenchPage的openEditor (editorInput, editorID)方法5。由上可知,编辑器都会要对应一个IEditorInput和一个EditorPart,而且在IWorkbenchPage中是根据IEditorInput来取得EditorPart,如图 38所示:图 38 编辑器的组成所以要创建三个Editor相对应的IEditorInput。3.7.4 打开编辑器有了EditorPart和IEditorInput后,就可以在Eclipse中打开编辑器了。本程序是要实现双击视图1的列表,则会打开列表项相对应的编辑器,因此在View1类的List对象添加一个鼠标双击事件监听器。另外还要考虑到,如果已经打开了列表项对应的编辑器,则下次再双击时就不再打开该项的编辑器,而是将其设成当前选择的编辑器。查找编辑器的方法是:IEditorPart editor = IWorkbenchPage.findEditor(IEditorInput);打开编辑器的方法是:IWorkbenchPage.openEditor(IEditorInput, editorID);3.8 编辑器类(EditorPart)方法使用说明要使用好EditorPart,首先得了解其方法在各种情况下的执行流程,我们在类的每一种方法前加上System.out.println(方法名:*),运行后就可以得到如下的结果。(1)双击列表项打开编辑器时:initisDirtycreatePartControlisDirtyisDirtyisDirtyisDirtyisDirtysetFocusisDirtyisSaveAsAllowed。(2)关闭编辑器时:setFocusisDirtyisSaveAsAllowedisDirtyisSaveAsAllowedsetFocusisDirty,如果保存编辑器,则最后还会执行doSave方法。(3)单击编辑器标题时:setFocus。(4)编辑器失去焦点时:isDirtyisSaveAsAllowedisDirtyisSaveAsAllowed。(5)编辑器得到焦点时:setFocusisDirtyisSaveAsAllowedisDirtyisSaveAs Allowed。(6)当编辑器可以保存,并在主菜单“文件保存”选项或按Ctrl+S键时:isDirtydoSave。3.8.1 各方法的作用及含义1boolean isDirty()由此方法获知编辑器是否脏了(所谓“脏”是指编辑器中的值已经发生了改变),true表示脏。当其返回true时,会出现两个效果:编辑器的标题前出现一个“*”号,主菜单“文件”下的“保存”项可用。特别要注意的是,编辑器不会自已判断是否脏了,这需要在程序中用语句手动设置,例如,在编辑器的文本框加入一个键盘监听事件,当在文本框中输入字符时,则将isDirty方法返回值设为true(脏)。在方法执行情况中,可以看到此方法的执行是最频繁的,所以不要在这种方法中加入太多的执行语句,否则会影响程序执行速度。2void doSave ()在这种方法中编写保存编辑器的代码,当在主菜单中选择“文件保存”选项时会执行此方法,但在isDirty返回true时“保存”菜单和Ctrl+S键才可以用,也即isDirty方法控制着doSave方法的执行。当保存成功时,要注意将脏的状态设回false,并调用firePropertyChange方法将编辑器的界面状态更新(编辑器标题前的“*”号及“保存”菜单)。3boolean isSaveAsAllowed()是否允许编辑器使用“另存为”功能。如果此项返回false,则不能使用“另存为”功能,而且主菜单“文件”下的“另存为”项被置灰。4void doSaveAs() 和doSave的作用相似,在这里书写“另存为”功能的处理代码。5void setFocus()当编辑器获得焦点时执行该方法。3.8.2 运行结果在程序中,当修改ChinaEditor编辑器中文本框的文字时,编辑器标题前出现“*”且主菜单“文件”下的“保存”选项可用。当保存了编辑器后,“*”消失并且“保存”菜单不可用。当编辑器为脏时,关闭编辑器会弹出一个提示框(如图 39所示)。图 39 关闭脏编辑器时的效果图3.9 加入首选项(preferencePages)选择主菜单“窗口首选项”选项打开“首选项”窗口,如图 310所示。这个窗口是Eclipse所有设置项的集中地,同样也常是第三方插件进行设置的窗口。图中左边两个方框标注的就是SWT Designer插件的设置树和本书插件MyPlugin的设置树。图 310 “首选项”窗口3.9.1 修改plugin.xml文件,设置首选项的扩展点修改plugin.xml文件将首选项的扩展点加入。3.9.2 建立首选项各结点对应的类首选项的类必须继承PreferencePage抽象类和实现IWorkbenchPreferencePage接口,实现接口只有一种方法init,抽象类则有一些“首选项”窗口的按钮的执行方法。3.9.3 运行插件运行插件后,打开新Eclipse环境的“首选项”窗口,选择“DB数据库”选项,将其中的密码删除后可得到如图 311所示的出错效果。图 311 首选项出错的效果图3.9.4 小结本例程的核心是IPreferenceStore对象的使用,用它的getString方法来取值、setValue方法来存值。其次和以前的事件代码写法有所不同的是:本类实现了ModifyListener接口,也成为了一个监听器,这样在各文本框的加入监听器的代码就会简洁很多,不过其事件代码必须保证三个文本框可以共用才行。3.10 加入帮助(toc)如图312所示,本程序为插件加入帮助。图 312 帮助3.10.1 修改plugin.xml文件,设置三个帮助的扩展点修改plugin.xml文件将帮助的扩展点加入。3.10.2 编写帮助目录文件toc这两个文件应放置在项目的根目录下,和src目录平级,如图313所示。图 313 目录结构图3.10.3 创建相应的帮助文档帮助文件都是一些标准的html格式的网页文件。3.10.4 小结创建帮助一般都分三步走:(1)在plugin.xml添加扩展点。(2)编写帮助目录的toc文件。(3)编写相应的帮助文档。还有一种做法是将帮助单独写成一个插件,这种插件和myplugin2插件没有什么不同,其开发过程也和本节一样,只不过该插件里只含有帮助的文件。这种方式适合比较大的项目使用,因为分成了没有什么联系的两个插件,这样就可以让一批人开发myplugin2插件,另一批人开发帮助插件,两队人马互不干扰6。3.11 弹出信息式的帮助(contexts)弹出信息可以和窗口组件关联在一起,给用户显示有针对性的帮助,其效果如图314所示。如果组件设置有弹出信息,按F1键就可以激活它。图 314 弹出信息3.11.1 修改plugin.xml文件,设置弹出信息的扩展点修改plugin.xml文件将弹出信息的扩展点加入。3.11.2 编写弹出信息的设置文件HelpContexts.xmlHelpContexts.xml文件应放置在项目的根目录下,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 疗养区水电安装费用报销申请书
- 人力资源加班管理与加班费核算手册
- 《淡水鱼养殖产业链水质管理与销售手册》
- 监控设备操作与异常情况处置手册
- 企业年度财务报告利润表编制工作手册
- 新型师生关系建设与育人氛围营造手册
- 网络游戏合作运营协议范文
- 2024年黄河水利职业技术学院高职单招职业技能考试题库【模拟题】附答案详解
- 2025年河南工学院单招综合素质考试题库附参考答案详解【典型题】
- 2026年湖南浏阳河职业学院高职单招职业适应性测试考试模拟试卷(各地真题)附答案详解
- 2026福建省农业融资担保有限公司招聘3人备考题库含答案详解
- 2026年中式烹调师高级技师考试题
- 慢性肾脏病的代谢紊乱与干预
- 雨课堂学堂在线学堂云《走进军事理论(空军工程)》单元测试考核答案
- (正式版)DB43∕T 1973-2020 《涉路工程安全技术规范》
- 护理基础操作标准化流程
- 塔顶钢架结构施工方案(3篇)
- 天主教管理工作制度汇编
- 社团党支部工作制度
- 美容科院感工作制度
- CBT在精神分裂症治疗中的应用
评论
0/150
提交评论