在Eclipse RCP开发中利用Trim Areas
来源:互联网 发布:电子记账本软件 编辑:程序博客网 时间:2024/05/13 22:52
Trim Area指Eclipse Workbench的外围空间,共有底部状态栏(toolbar:org.eclipse.ui.trim.status),顶部工具栏(toolbar:org.eclipse.ui.main.toolbar),左上方trim(toolbar:org.eclipse.ui.trim.command1),右上方trim(toolbar:org.eclipse.ui.trim.command2),左边栏trim(toolbar:org.eclipse.ui.trim.vertical1),右边栏trim(toolbar:org.eclipse.ui.trim.vertical1)。
首先给一个底部状态栏trim区域的实例:
图中最右下方的"no internet"就是trim.status,从右向左依次是后台进度状态,编辑器状态,公共状态。每个区域边缘都有虚竖线条,说明这个区域可以拖拽D$D, Drag and Drop。
我们今天要做的就是加一个控件到右下方的trim status区域,这个控件的作用是显示当前的互联网连接情况。
这个控件必须继承WorkbenchWindowControlContribution类,并在createControl方法里生成想要达到的效果。
上图实例是添加了一个Hyperlink控件,设置为不显示下划线,添加MouseTrackListener,当鼠标进入时显示下划线,离开后不显示;又添加HyperlinkAdapter,当点击链接时,打开互联网配置对话框。
如果打开RCP时,状态是no internet, 但是在使用过程中,网络连接上了比如说上海电信,该怎么在程序中修改状态呢?
这个信息在网络上很少,推荐的使用Listener方法,这样程序的耦合性会更好。
假设网络状态的变化触发了Preference的PropertyChangeEvent,那只需要在程序中添加PlatformUI.getPreferenceStore().addPropertyChangeListener,然后在事件中判断哪个属性event.getProperty()发生了变化,如果是网络状态,就可以使用event.getNewValue()设置控件中链接的显示内容。
如下图所示,网络状态变成了Shanghai Telecom:
细心的网友会发现,Shanghai Telecom这几个字显示不全,当中被用省略号代替了。
为了让内容显示全,作者也费了不少劲。 首先发现如果把控件拖拽到其他trim area,比如右上方,就显示全了,可是这不是解决方案,也不是用户能接受的。
仔细研究WorkbenchWindowControlContribution类,发现它有个isDynamic方法,重写此方法并返回true之后,同时在修改控件内容的地方调用getParent().udpate(true);
结果如下:
需要注意的是update(true)会重新执行createControl方法,所以createControl方法里面的代码一定要精简,只需要首次执行并执行一次的,用一个boolean值判断下是否已经初始化。
毕竟程序的性能很重要,要避免运行重复的代码。
【完】
- 在Eclipse RCP开发中利用Trim Areas
- 在Eclipse RCP中开发JFreeChart示例
- 在Eclipse RCP中开发JFreeChart示例
- 在Eclipse RCP开发中使用jMock
- 在eclipse rcp 开发中 动态的显示视图
- 在Eclipse RCP应用中利用扩展点机制解藕插件的依赖关系
- 在Eclipse RCP应用中利用扩展点机制解藕插件的依赖关系
- 在Eclipse RCP中使用ResourceNavigator
- 在eclipse rcp项目中使用jni
- 在Eclipse RCP中使用JFreeChart报表
- 利用XMLBuddy在Eclipse中开发XML
- 利用XMLBuddy在Eclipse中开发XML
- 利用XMLBuddy在Eclipse中开发XML
- 利用XMLBuddy在Eclipse中开发XML
- 在Eclipse中利用XMLBuddy开发XML
- 在Eclipse中利用XMLBuddy开发XML
- 使用Eclipse RCP进行桌面程序开发(四):在Windows中使用Active X控件
- 使用Eclipse RCP进行桌面程序开发(四):在Windows中使用Active X控件
- 删除数据时,获取ID为空。注意检查请求时候的id能否获取到,或者是请求连接是否有误。
- 游戏程序员的学习相关资料
- linux 执行shell脚本的方式及一些区别
- js 控制只能输入数字、只能输入字母和汉字等。
- Oracle与MySQL的几点区别
- 在Eclipse RCP开发中利用Trim Areas
- 让嵌入式Linux支持LCD console
- sizeof运算符以及内存对齐
- 微博短链接解析ShortUrl
- 互加 求关注
- 文件读写操作总结
- 【Nunit入门系列讲座 1】Nunit的安装及功能介绍
- sql 实现md5加密的函数
- SOA 基础