一、概述

在做项目的过程中,处理编辑区的保存机制的时候。发现,同样是扩展eclipse 自带的保存和全部保存按钮时候,rcp 工程下,保存按钮可以正常的灰显和可用,但是rap 的按钮就是始终呈现灰显的状态,无论编辑区是否有变化。为了解决这个问题,经过研究在rap 上做了以下处理,问题得以解决。

二、rap 保存按钮显示的处理

在项目中保存按钮和全部保存按钮是通过扩展点的方式加载的,而且这个扩展点是eclipse 自身带有的扩展点,可以直接调用,并且调用这个保存扩展点,可以直接拥有和eclipse 编辑区类似的功能操作扩展点的添加方式:

1 、保存的commandId 直接扩展:org.eclipse.ui.file.save

2 、全部保存的commandId 扩展:org.eclipse.ui.file.saveAll

这样保存和全部保存添加上了。处理rap 下保存按钮可用的处理逻辑和代码如下,处理了类 ApplicationActionBarAdvisor 中的相关方法 。

处理之前的类:

  1. public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
  2. public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
  3. super(configurer);
  4. }
  5. protected void makeActions(IWorkbenchWindow window) {
  6. }
  7. protected void fillMenuBar(IMenuManager menuBar) {
  8. }
  9. }

在 ApplicationActionBarAdvisor 这个类中,在 makeActions (IWorkbenchWindow window) 方法中将按钮注册进去就可以了。

处理之后的类:

  1. /**
  2. *
  3. * 工具按钮等相关功能注册
  4. *
  5. */
  6. public class ApplicationActionBarAdvisor extends ActionBarAdvisor
  7. {
  8. public ApplicationActionBarAdvisor(IActionBarConfigurer configurer){
  9. super(configurer);
  10. }
  11. /**
  12. * 工具栏保存、全部保存按钮注册
  13. */
  14. protected void makeActions(IWorkbenchWindow window) {
  15. //保存、全部保存按钮的注册
  16. register(ActionFactory.SAVE.create(window));
  17. register(ActionFactory.SAVE_ALL.create(window));
  18. //历史记录回退、重做按钮的注册。
  19. register(ActionFactory.UNDO.create(window));
  20. register(ActionFactory.REDO.create(window));
  21. }
  22. protected void fillMenuBar(IMenuManager menuBar) {
  23. }
  24. }

Eclipse rap 富客户端开发总结(13) :Rap/Rcp保存按钮处理方式的更多相关文章

  1. Eclipse rap 富客户端开发总结(3):rcp/rap目前界面上的一些差异

    1. Label和Button按钮的显示的差异 当Label 和 Button显示的文字过长显示不开的时候,rcp.rap的处理方式就不一样了,rap显示不开会自己截取掉后面的文字,rcp会在文字的中 ...

  2. Eclipse rap 富客户端开发总结(11) : rcp/rap与spring ibatis集成

    1. rcp/rap 与 spring 集成 Activator 是rcp/rap 启动时需要加载的类, 只需要加载一遍,所以与spring 集成的时候一般是在这个类里面加载spring 的Appli ...

  3. Eclipse rap 富客户端开发总结(15) :rap如何使用js

    1. 把输入的字符串当 javascript 执行 try { RWT.getResponse().getWriter().println("alert('123');"); }  ...

  4. Eclipse rap 富客户端开发总结(14) :rap 图片、数据缓存处理

    一.概述 在进行了 rap 的基本学习之后,您对 rap 的理解是否进入了更高的一个层次呢,个人觉得,对学习 rap 的人来说,进行 rap 的学习是一个探索的过程,在编程中不断的对其进行理解和分析, ...

  5. Eclipse rap 富客户端开发总结(4):如何搭建 rap 中文开发环境

    Rap中文开发环境搭建大约分为2个部分 1.  rap国际化,详细参加文章(rap开发经验总结(5)-rap国际化之路) 2.rap自带的JFace ,Dialog 等国际化 1.中文包下载地址: h ...

  6. Eclipse rap 富客户端开发总结(2):rap项目目前的进度和存在的问题

    1. Eclipse rap项目目前的进度 目前rap 的最新版本是 rap 1.5M4,最稳定版本是 rap 1.4.1,我们项目目前使用的版本是rap 1.4.1,Rap目前已经支持的部分是 sw ...

  7. Eclipse rap 富客户端开发总结(1) :rap简单介绍和开发环境搭建

    一.rap简单介绍 1 基本概念     RAP可以让开发人员使用JAVA API和按照Eclipse 插件的开发模式构建基于AJAX的Web 2.0应用程序, RAP的工作原理是采用交叉编译的方式将 ...

  8. Eclipse rap 富客户端开发总结(9) : rap上传与下载

    一 上传 上传即将文件上传到服务器上,在客户端需要写相应的脚本,服务器端需要注册相应的 handle 接受客户端的请求. 原理: Rap 的上传和下载是通过普通的 web 的方式进行上传和下载的 ,  ...

  9. Eclipse rap 富客户端开发总结(7) : 如何修改rap的样式

    1. Rap样式原理  Rap的界面样式目前是以css来配置的,程序启动后加载相应的css配置文件再对组件进行样式设置,界面上的所有组件 Label button composit等的样式最开始都是通 ...

随机推荐

  1. .Net之用户控件笔记

    前端初始化: 记录点:不需要写jquery的onload,只需要在<script></script>里面直接调用 <script type="text/java ...

  2. ExoPlayer Talk 01 缓存策略分析与优化

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Android studio 2.3.3 | ExoPlayer r2.5.1 使用 ExoPlayer已经有一段时间了, ...

  3. 【Linux笔记(000) 】-- 系统启动过程

    一.   启动流程 BIOS --> MBR(Boot Code) --> 引导程序(GRUB) --> 加载内核 --> 执行Init --> runlevel 二.  ...

  4. 第5天:js-系统时间对象

    今天听了一小节,js中如何获取系统时间.最后做了一个轮播图效果,是在别人的代码上修改的,一开始做了好半天,都没做好,最后,在我的坚持下,终于做出来了.今天先到这儿,去休息了! 获取时间对象:new D ...

  5. JSON异步及跨域

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. PHP迭代与递归实现无限级分类

    无限级分类是开发中常见的情况,因此本文对常见的无限极分类算法进行总结归纳. 1.循环迭代实现 $arr = [ 1=>['id'=>1,'name'=>'父1','father'=& ...

  7. python+selenium自动化软件测试(第3章):unittest

    3.1 unittest简介 前言(python基础比较弱的,建议大家多花点时间把基础语法学好,这里有套视频,可以照着练习下:http://pan.baidu.com/s/1i44jZdb 密码:92 ...

  8. Android Studio发布项目到jcenter,一行代码引入Module

    前面我们使用自己封装的okhttp项目时候,只需要app/build.gradle文件中加一行代码就能使用项目. compile 'com.ansen.http:okhttpencapsulation ...

  9. 深入浅出数据结构C语言版(17)——有关排序算法的分析

    这一篇博文我们将讨论一些与排序算法有关的定理,这些定理将解释插入排序博文中提出的疑问(为什么冒泡排序与插入排序总是执行同样数量的交换操作,而选择排序不一定),同时为讲述高级排序算法做铺垫(高级排序为什 ...

  10. Thinkphp3.2.3框架下封装公共的函数,例如封装CURL函数来获取接口数据

    当我们需要在控制层调用相同的封装函数时,写多次相同的函数,显得代码十分的拉杂,不精简: TP框架有一个很好的机制,可以再Common定义一个function.php函数,当我们在控制层调用的时候直接调 ...