- 浏览: 7261481 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
在一个rcp应用程序中添加托盘的代码如下:
添加托盘的代码如下:
package com.vnvntrip.plugin.dev.views.custom; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tray; import org.eclipse.swt.widgets.TrayItem; import org.eclipse.ui.PlatformUI; import com.vnvntrip.plugin.dev.commons.ImageManager; /** * RCP 项目程序的托盘实现类 * @author longgangbai * */ public class SystemTrayMaster implements SelectionListener ,Listener{ private Menu menu; private MenuItem[] menuItems=new MenuItem[0]; private RestoreWindowListener restoreWindowListener; public SystemTrayMaster(){ restoreWindowListener=new RestoreWindowListener(); } /** * 关闭应用程序 */ protected void closeApplication(){ PlatformUI.getWorkbench().close(); } private final class RestoreWindowListener extends SelectionAdapter{ @Override public void widgetDefaultSelected(SelectionEvent e) { restoreWindow(); } } public void restoreWindow(){ Shell shell=getShell(); shell.open(); shell.setMinimized(false); shell.forceActive(); shell.forceFocus(); } /** * 清除菜单所占的资源 */ public void clearItems() { for (MenuItem menuItem : menuItems) { menuItem.removeSelectionListener(restoreWindowListener); menuItem.dispose(); } } /** * 显示菜单的方法 */ public void showMenu(){ clearItems(); MenuItem openItem=new MenuItem(menu,SWT.PUSH); MenuItem closeItem=new MenuItem(menu,SWT.NONE); closeItem.setText("关闭"); closeItem.addSelectionListener(new SelectionListener(){ public void widgetDefaultSelected(SelectionEvent e) { } public void widgetSelected(SelectionEvent e) { closeApplication(); } }); menuItems=new MenuItem[]{openItem,closeItem}; openItem.setText("激活"); openItem.addSelectionListener(restoreWindowListener); menu.setVisible(true); } /** * 点击托盘的操作 */ public void widgetSelected(SelectionEvent e) { } /** * 处理的应用 */ public void handleEvent(Event e) { showMenu(); } /** * 双击托盘时的操作 */ public void widgetDefaultSelected(SelectionEvent e) { restoreWindow(); } /** * 获取系统个shell * @return */ private Shell getShell(){ return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); } /** * 图片最小化的操作 */ public void minimizeWindow(){ getShell().setMinimized(true); getShell().setVisible(false); } /** * 创建托盘方法 */ public void createSystemTray(){ Tray tray=Display.getDefault().getSystemTray(); TrayItem item=new TrayItem(tray,SWT.NONE); item.setText("rcp系统"); item.setToolTipText("rcp系统"); Image image=ImageManager.getImage("QQRCP"); //PlatformUI.getWorkbench(). // getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT); item.setImage(image); item.addSelectionListener(this); item.addListener(SWT.MenuDetect, this); menu=new Menu(getShell(),SWT.POP_UP); } }
在ApplicationWorkbenchWindowAdvisor类中添加创建托盘的方法:
package com.vnvntrip.plugin.dev; import org.eclipse.swt.graphics.Point; import org.eclipse.ui.application.ActionBarAdvisor; import org.eclipse.ui.application.IActionBarConfigurer; import org.eclipse.ui.application.IWorkbenchWindowConfigurer; import org.eclipse.ui.application.WorkbenchWindowAdvisor; import com.vnvntrip.plugin.dev.views.custom.SystemTrayMaster; /** * rcp的workbenchWindow ,隶属于当前的workbench,可以有多个workbechWindow. * * * 在rcp的workbenchWindowAdvisor的postWidowOpen()中创建一个系统托盘,另外要 * 重写ovveride divWindowShellClose()方法,否则按程序右上角的x,整个程序会被关闭, * 重写实现程序最小化的功能 * @author longgangbai * */ public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor { private SystemTrayMaster trayMaster; public ApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer) { super(configurer); } public ActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer) { return new ApplicationActionBarAdvisor(configurer); } /** * */ @Override public void preWindowOpen() { IWorkbenchWindowConfigurer configurer = getWindowConfigurer(); configurer.setInitialSize(new Point(600, 400)); //设置显示工具栏 configurer.setShowCoolBar(true); configurer.setShowStatusLine(false); configurer.setTitle("RCP 技术开发记事本"); } /** * 设置窗体最大化 */ @Override public void postWindowOpen() { super.postWindowOpen(); IWorkbenchWindowConfigurer configurer = getWindowConfigurer(); configurer.getWindow().getShell().setMaximized(true); createSystemTray(); } /** * 创建托盘的信息 */ private void createSystemTray(){ trayMaster=new SystemTrayMaster(); trayMaster.createSystemTray(); } /** * 此方法必须重写应用 * @return */ public boolean divWindowShellClose(){ trayMaster.minimizeWindow(); return false; } }
希望大家拍砖!!!
发表评论
-
Equinox OSGi系列之三 Equinox配置参数详解(转)
2013-03-22 15:20 6883Eclipse不提示的解决办法 我们知道,在Eclips ... -
RCP自定义扩展点的应用
2010-05-06 14:21 3007打开plugin.xml文件中Extensi ... -
Nebula 的几个常用的widgets的使用
2010-05-06 14:15 5596package com.easyway.tbs.commons ... -
RCP GridViewer的学习应用
2010-05-05 21:47 4148package com.easyway.tbs.commons ... -
多项编辑页的学习应用
2010-05-05 20:41 2714package com.easyway.plugin.dev. ... -
gef中自身实现的常用功能的原理和实现
2010-04-23 21:35 2337在gef中关于常用功能对应的action在org.eclip ... -
gef中几何对齐功能原理以及实现
2010-04-23 21:34 2696几何对齐功能也是为了方便用户排列图形元素的,如果打开了此功 ... -
gef中打印功能的原理和实现
2010-04-23 21:33 2774在gef中关于打印的功能,采用PrintGraphicalV ... -
gef中采用公共的快捷键功能的原理和实现
2010-04-23 21:27 2529在gef相关的编辑器类中采用快捷键处理器KeyHandler ... -
gef 上下文菜单的应用
2010-04-23 21:26 2843在gef的编辑器视图中添加相关的上下文菜单,经常需要是实 ... -
网上流传的一个RCP Table Grid打印实现原理和局限性
2010-04-22 20:11 3219package com.easyway.tbs.common ... -
gef中编辑图中添加背景图片原理以及实现
2010-04-22 20:01 2879GEF的RootEditPart对应的Figure是一个 ... -
gef中将流程图转换图片复制粘贴原理以及实现
2010-04-22 19:59 2873设计思路如下:将一个gef图元转换为一个图片(create ... -
gef编辑器中需要采用向导页
2010-04-22 19:57 2598在一般的gef编辑器中需要采用向导页,生成一个格式的 ... -
gef中拖动拽动原理以及实现(一)
2010-04-22 19:49 3194gef中拖动拽动原理以及实现 方案一: 创 ... -
gef中添加可折叠调色板原理以及实现(二)
2010-04-22 19:47 3125gef中添加可折叠调色板原理以及实现 中主要的Palette ... -
gef中添加可折叠调色板原理以及实现(一)
2010-04-22 19:45 3116最近心情不好,写 ... -
一个用RCP实现的简单的GEF程序
2010-04-17 22:02 3455最近在学习GEF,本例 ... -
RCP 线程的开发应用
2010-03-16 15:22 2398http://www.blogjava.net/gembin/ ... -
使用Eclipse自带的PropertySheet
2010-03-03 17:36 2681在项目中遇到一些小问 ...
相关推荐
Eclipse Rich Client Platform (RCP) 的目标是在各种不是集成开发环境 (IDE) 的最终用户应用程序中使用 Eclipse。随着 Eclipse V3.1 的发布,创建 RCP 应用程序变得容易。本教程将指导您一步步创建自己的 RCP 应用...
eclipse rcp应用系统开发 方法与实践 随书源代码
eclipse rcp应用系统开发方法与实战源代码.zip
eclipse rcp应用系统开发 随书源代码
开发你的第一个EclipseRCP应用程序汇编.pdf
Eclipse RCP 应用系统开发方法与实战 源代码
NULL 博文链接:https://wenhai.iteye.com/blog/677507
非常好的一本JAVA RCP入门实战的书,兼顾理论和实战。
eclipse icons,用来开发rcp桌面应用程序
eclipse rcp应用系统开发方法与实践 随书源代码
eclipse rcp应用系统开发方法与实践 随书源代码
NASA Maestro screen shot。 复杂的桌面应用界面,是否能够说明Java做桌面应用(或言C/S应用)的能力呢?
Eclipse RCP应用系统开发方法与实战
ECLIPSE+RCP应用系统开发方法与实战 PDF 比较清晰 有目录 本人在网上找了N久一直没找到,在taobao上买的。 所以收了5分,不要说我太黑哦。
rcp editor实例的项目代码,eclipse插件开发2,观察观察,学习学习
EclipseRcp 例子程序
The objective of the Eclipse Rich Client Platform (RCP) is to enable Eclipse to be used in a wide range of end-user applications that are not integrated development environments (IDEs). With the ...
Eclipse RCP 应用系统开发方法与实战
Eclipse RCP应用系统开发方法与实战(源代码)