05 Eclipse RCP(四)(常用技术)(2)(进阶开发)_第1页
05 Eclipse RCP(四)(常用技术)(2)(进阶开发)_第2页
05 Eclipse RCP(四)(常用技术)(2)(进阶开发)_第3页
05 Eclipse RCP(四)(常用技术)(2)(进阶开发)_第4页
05 Eclipse RCP(四)(常用技术)(2)(进阶开发)_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EclipseRCP 四 常用技术 2 进阶开发 周甫 zoofchow 2 课程介绍 本课程主要讲授Eclipse及RCP进阶知识适用于Java开发工程师面向的学员是渴望了解EclipseRCP的各类开发工程师全部课程时间大约是40分钟 周甫 zoofchow 3 概要 菜单和工具栏托盘技术进度条状态栏 Job 属性监听器GCJFreeChart在线升级启动和停止Derby数据库 周甫 zoofchow 4 1菜单和工具栏 不同于SWT的菜单和工具栏需要分别创建menu和coolbar RCP的菜单和工具栏的菜单项和工具项可以统一起来创建一个Action类即可 这点和JFace类似 从Action的行为上来看 一般做三件事 执行某个后台任务 打开一个对话框打开视图或者编辑器 周甫 zoofchow 5 创建Action 创建一个Action需要继承自org eclipse jface action Action这个类 其代码结构为 publicclassSimpleActionextendsAction publicSimpleAction publicvoidrun 在构造方法中构建这个Action 常用API有 setId SimpleAction 注册ACTIONsetText 示例Action ALT S 设置菜单文字及快捷键setToolTipText 示例Action 作为工具栏使用时的提示文本setImageDescriptor AbstractUIPlugin imageDescriptorFormPlugin Demo icons simpleaction gif 设置图标注意imageDescriptorFormPlugin方法需要2个参数 项目ID号 和图片文件名 实际上这是找到图片的绝对路径在run 方法中实现需要的业务代码 打开某个视图或者执行某个任务等等 周甫 zoofchow 6 创建菜单 创建菜单的步骤 在ApplicationActionBarAdvisor类的makeAction 方法中实例化Action 在fileMenuBar 方法中将Action作为菜单项加入到菜单中 首先创建MenuManager 相当于顶级菜单 也可以作为子菜单用 MenuManagermenuCodeParse newMenuManager 代码分析 codeParse 参数为 菜单文本 菜单ID号将Action加入到MenuManager menuUserOption add simpleaction 将MenuManager添加到菜单栏 menuBar add menuUserOption menuBar是filemenuBar的参数 周甫 zoofchow 7 创建工具栏 在ApplicationActionBarAdvisor类的fillCoolBar 中将构建好的Action添加进来即可 如同菜单 工具栏也需要一个ToolBarManager来管理Action ToolBarManagertoolBarManager newToolBarManager SWT FLAT coolBar add toolBarManager coolBar是fillCoolBar的参数toolBarManager add simpleaction SWT FLAT设置工具栏的样式为平滑 工具项不凸出 如果工具项之间要分组可以用coolBar add newSeparator 加根竖的分离线 周甫 zoofchow 8 2托盘技术 托盘 Tray 技术主要实现以下2个目的 程序启动或关闭 非退出 时自动最小化到Windows右下角的系统托盘区用户可以随时通过托盘打开程序 恢复窗口 另外 托盘技术中应当关注的功能有 菜单项图标管理 周甫 zoofchow 9 托盘对象 托盘对象的获取方法 Traytray getWindowConfigurer getWindow getShell getDisplay getSystemTray 如同Table等容器一样 Tray也是一个容器 给Tray添加内容就要用TrayItem对象来管理 给Tray添加托盘项 TrayItem TrayItemtrayItem newTrayItem tray SWT NONE 给TrayItem设置文字和图标 trayItem setImage Image Of Tray trayItem setToolTipText 托盘示例 然后将这段代码放置在ApplicationWorkbenchWindowAdvisor的postWindowOpen 方法中 因为需要创建Display后 程序窗口没打开之前托盘就能开始工作 即实现其目的之一 周甫 zoofchow 10 托盘监听器 现在托盘看起来 但它还不能做事 现在给托盘添加事件以实现托盘功能之二 单击托盘图标打开程序trayItem addListener SWT Selection newListener publicvoidhandleEvent Eventevent 恢复程序界面 周甫 zoofchow 11 关闭程序窗口 关闭程序窗口而不是退出 只需要调用shell的setMinimized true 和setVisible false 即可 调用的切入点在ApplicationWorkbenchWindowAdvisor的preWindowShellClose 中 调用上述2个方法后shell仅仅只是隐藏而不会真的关闭了 周甫 zoofchow 12 加上菜单 如同系统菜单和工具栏一样 Tray的菜单项也是Action给托盘添加右键菜单 trayItem addListener SWT MenuDetect newListener publicvoidhandleEvent Eventevent 若干Action 现在托盘基本上可以工作了 周甫 zoofchow 13 完整的托盘 更好的托盘 其中有一个定时提示的线程 如果不需要就将线程屏蔽 见Code7 11 周甫 zoofchow 14 3进度条 当需要较长时间的操作而用户无法与程序交互时 应该向用户显示一个进度条以提示正在操作及操作进度 这有利于提高用户的耐心 也是软件友好性的体现之一 实现进度条可以用的有 SWT的ProgressBarJFace的ProgressMonitorDialog 周甫 zoofchow 15 ProgressMonitorDialog ProgressMonitorDialog构造方法 publicProgressMonitorDialog Shellparent ProgressMonitorDialog默认样式 SWT BORDER SWT TITLE SWT APPLICATION MODAL其运行示例 周甫 zoofchow 16 ProgressMonitorDialog详解 ProgressMonitorDialog重要方法 run booleanfork booleancancelable IRunnableWithProgressrunnable 调用这个方法 进度条才开始工作 其参数 fork是否 true 在单独的线程中运行cancelable对话框的取消按钮是否可用runnable是一个接口 需要我们来实现 IRunnableWithProgressrwp newIRunnableWithProgress publicvoidrun IProgressMonitormonitor throwsInvocationTargetException InterruptedException 操作代码 可见 这个接口的run 方法才是我们真正写代码的地方 周甫 zoofchow 17 IProgressMonitorAPI IProgressMonitor常用方法 beginTask Stringname inittotalWork 任务开始 必须调用的方法 其参数 name 任务的名称 即前图的 正在登录数据库 请稍候 文字部分 totalWork 大概的任务总数 如果无法估算 则用IProgressMonitor UNKNOWN Done 任务完成isCanceled 当前任务是否被取消setCanceled booleanvalue 设置任务的取消状态subTask String 子任务开始 其提示文字worked intwork 通知线程已经完成的任务数 如果任务数已知 则进度条前进1步 周甫 zoofchow 18 进度条对话框示例 任务数未知 任务数已知 周甫 zoofchow 19 进度条模板 总结前面的过程 可以得出进度条对话框的模板 见Code12 周甫 zoofchow 20 4状态栏 Eclipse状态栏位于窗口的底部 可以显示图标 文本信息和进度条 不同于ProgressMonitorDialog 要使状态栏可见 ApplicationWorkbenchWindowAdvisor的preWindowOpen 方法中设置了configurer setShowStatusLine true 状态栏常用区域 FastViews可以将视图拖入其中快速访问 或者临时信息 Contributions附加信息 JobsProgress执行的Job 形如进度条 周甫 zoofchow 21 临时信息 在ApplicationWorkbenchWindowAdvisor中的postWindowOpen 方法中添加代码即可 示例如下 IstatusLineManagerstatusline getWindowconfigurer getActionBarConfigurer getStatusLineManager statusline setMessage Image of yours 临时信息示例文字 这段信息在刚打开时出现 激活某个视图后将消失 周甫 zoofchow 22 Contributions 使用contributions区域 需要自定义一个扩展自ContributionItem的类 在该类的fill 方法中加入要显示的图片和文字 然后改写ApplicationActionBarAdvisor的fillStatusLine IStatusLineManagerstatusLine 方法 将自定义的类添加给statusLine即可 见Code13 周甫 zoofchow 23 Job 除了进度条这种对于耗时较长的任务友好提示外 还有一种在状态栏中使用的进图条即Job 一个Job可以看作是一个完成单一功能的处理单元 由Job管理器负责调度管理并可反复运行 周甫 zoofchow 24 示例 Job可以在视图内随处调用 见Code14 周甫 zoofchow 25 5属性监听器 在RCP程序开发当中常常会遇到数据同步的问题 也就是说某个视图的数据发生改变 而其他视图能够响应这个改变 这里就要用到属性监听器 属性监听器的原理来自设计模式 观察者 详见 07设计模式 五 Observer观察者模式 周甫 zoofchow 26 RCP的Observer RCP中属性改变监听模式就是对Observer模式的一个实践 其大致原理是 在这个模式中有一个属性提供方 主题提供方 暴露一个属性 主题 另外有一个或者多个属性监听方 订阅者 当属性提供方的主题发生改变时 监听方收到改变作出相应操作 属性监听方需要实现IPropertyChangeListener接口 在方法propertyChange中给出操作处理 周甫 zoofchow 27 实现属性监听模式 步骤如下 建立一个管理属性监听方的类 这个类用于注册对主题感兴趣各个视图 如果属性发生改变就立刻通知各监听者 调用监听者实现的propertyChange 方法 见Code15 监听者将自己注册到属性监听者管理类 如 监听属性改变CurrentProjectPropertyChange getInstance addPropertyChangeListener IConstants VIEW PIEDIAGRAM ID this 如果属性提供方的属性发生改变 就发出通知 激活所有监听项目改变的监听器相关事件CurrentProjectPropertyChange getInstance firePropertyChangeListener 周甫 zoofchow 28 6GC 当有特殊的需要比如特殊的按钮而SWT JFace不能提供时 就可以用GC GrphicsContext 来自己设计控件或者其他需求 一些报表图形 可以用开源的图表工具来完成 但简单的如饼形图 可以采用GC来制作 周甫 zoofchow 29 GCAPI 用GC画饼形图 常用画曲线的方法 drawArc intx inty intwidth intheight intstartAngle intarcAngle x y为左上角坐标width height为曲线的宽度和长度startAngle为横方向开始弧度arcAngle为曲线画过的弧度如果width height 则为圆形曲线画好后用以下方法填充颜色 fileArc intx inty intwidth intheight intstartAngle intarcAngle x y 窗口横座轴 窗口纵座轴 圆心坐标 x widht y height startAngle arcAngle 周甫 zoofchow 30 示例 代码如下 Canvasdrawing newCanvas this SWT NONE drawing addPaintListener newPaintListener publicvoidpaintControl PaintEventevent event gc setBackground Display getCurrent getSystemColor SWT COLOR BLUE event gc drawArc 50 50 200 160 60 210 event gc fillArc 50 50 200 160 60 210 周甫 zoofchow 31 7JFreeChart JFreeChart是开放源代码站点SourceF上的一个JAVA项目 它主要用来各种各样的图表 这些图表包括 饼图 柱状图 普通柱状图以及堆栈柱状图 线图 区域图 分布图 混合图 甘特图以及一些仪表盘等等 这些不同式样的图表基本上可以满足开发中的要求 如图是一个柱状图的示例 周甫 zoofchow 32 下载JFreeChart 下载地址 http www jfree org jfreechart download html该公司主要产品 JFreeReport 报表解决工具JFreeChart Java图形解决方案 Application Applet Servlet Jsp JCommon JFreeReport和JFreeChart的公共类库JFreeDesigner JFreeReport的报表设计工具而我们只需要下载JFreeChart即可 其中已经包含了JCommon 周甫 zoofchow 33 使用JFreeChart JFreeChart的使用非常简单 其机制为 先得到一个Dataset 数据 然后从它那里创造出一个Chart 图 见Code16 18 周甫 zoofchow 34 配置JFreeChart 按05Eclipse使用讲座 五 插件安装与制作 将JFreeChart的jfrechart 1 0 9 jar和jcommon 1 0 12 jar2个包制作成插件 将插件复制到目标平台的plugins目录下 回到开发平台重读目标平台的插件 Windows Preferences TargetPlatform 然后打开项目的plugin xml在Dependencies标签页中将其添加到插件依赖中 JFreeChart配置完毕 周甫 zoofchow 35 8在线升级 利用Eclipse提供的专门的Update组件 可以通过HTTP WEB实现在线升级 要实现产品在线升级 首先需要配置项目的update插件依赖项 步骤如下 Step1 配置Dependencies插件依赖打开plugin xml 切换到Dependencies页 Add 在Plug inSelection对话框中将 org eclipse update configuratororg eclipse update coreorg eclipse update uiorg eclipse update scheduler4个插件添加进来 保存退出 Step2 配置产品的Configuration打开产品配置 product 的Configuration页 点击AddRequiredPlug ins Eclipse会自动将org eclipse update configurator org eclipse update core win32等包添加到产品配置库中 周甫 zoofchow 36 创建Feature功能部件项目 Eclipse产品由若干插件组成 每个插件包含提供产品具体功能的代码 产品的各个插件一起组合成功能部件 功能部件用于描述并组合产品的不同功能 功能部件只包含描述相关插件的更新信息 不包含任何代码 功能部件可以独立下载和安装的最小单元 周甫 zoofchow 37 新建Feature项目 选择New Project Plug inDevelopment FeatureProject第一步中给Feature项目起个名字 一般和开发项目名相同加上 feature 周甫 zoofchow 38 新建Feature项目第二步 第二步 勾选要升级的项目或者插件 周甫 zoofchow 39 修改GeneralInformation 项目建成后将打开feature xml 在Overview页的GeneralInformation中输入 UpdateSiteURL http localhost 8080 net zoof kayaka update UpdateSiteName kayakaupdatesite 周甫 zoofchow 40 新建Update项目 项目类型 New Project Plug inDevelopment UpdateSiteProject 项目名称 这个要勾选 周甫 zoofchow 41 映射Feature项目 Update项目建好后会打开site xml文件 AddFeature 选择映射的Feature项目 如图 然后Build 对选择的feature进行构建 构建好的文件将会放在项目的feature和plugin文件夹下 周甫 zoofchow 42 Archives页 在site xml的Archives页分别填写 URL http localhost 8080 net zoof kayaka update Description kayakaupdatesite描述更新站点并指定更新站点的地址 周甫 zoofchow 43 Update实体站点 在tomcat webapps下建立一个j2ee站点 net zoof kayaka update 模板文件见附件 然后将 Eclipse workspace net zoof kayaka update下的所有文件复制到tomcat webapps net zoof kayaka update下 周甫 zoofchow 44 UpdateAction 在RCP项目中新建一个UpdateAction 这个Action或者作为系统菜单或者作为工具栏 方便用户傻瓜式在线升级软件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论