- 浏览: 7331401 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 6952Eclipse不提示的解决办法 我们知道,在Eclips ... -
RCP自定义扩展点的应用
2010-05-06 14:21 3036打开plugin.xml文件中Extensi ... -
Nebula 的几个常用的widgets的使用
2010-05-06 14:15 5644package com.easyway.tbs.commons ... -
RCP GridViewer的学习应用
2010-05-05 21:47 4204package com.easyway.tbs.commons ... -
多项编辑页的学习应用
2010-05-05 20:41 2761package com.easyway.plugin.dev. ... -
gef中自身实现的常用功能的原理和实现
2010-04-23 21:35 2378在gef中关于常用功能对应的action在org.eclip ... -
gef中几何对齐功能原理以及实现
2010-04-23 21:34 2745几何对齐功能也是为了方便用户排列图形元素的,如果打开了此功 ... -
gef中打印功能的原理和实现
2010-04-23 21:33 2816在gef中关于打印的功能,采用PrintGraphicalV ... -
gef中采用公共的快捷键功能的原理和实现
2010-04-23 21:27 2561在gef相关的编辑器类中采用快捷键处理器KeyHandler ... -
gef 上下文菜单的应用
2010-04-23 21:26 2872在gef的编辑器视图中添加相关的上下文菜单,经常需要是实 ... -
网上流传的一个RCP Table Grid打印实现原理和局限性
2010-04-22 20:11 3254package com.easyway.tbs.common ... -
gef中编辑图中添加背景图片原理以及实现
2010-04-22 20:01 2920GEF的RootEditPart对应的Figure是一个 ... -
gef中将流程图转换图片复制粘贴原理以及实现
2010-04-22 19:59 2914设计思路如下:将一个gef图元转换为一个图片(create ... -
gef编辑器中需要采用向导页
2010-04-22 19:57 2635在一般的gef编辑器中需要采用向导页,生成一个格式的 ... -
gef中拖动拽动原理以及实现(一)
2010-04-22 19:49 3229gef中拖动拽动原理以及实现 方案一: 创 ... -
gef中添加可折叠调色板原理以及实现(二)
2010-04-22 19:47 3159gef中添加可折叠调色板原理以及实现 中主要的Palette ... -
gef中添加可折叠调色板原理以及实现(一)
2010-04-22 19:45 3150最近心情不好,写 ... -
一个用RCP实现的简单的GEF程序
2010-04-17 22:02 3493最近在学习GEF,本例 ... -
RCP 线程的开发应用
2010-03-16 15:22 2430http://www.blogjava.net/gembin/ ... -
使用Eclipse自带的PropertySheet
2010-03-03 17:36 2714在项目中遇到一些小问 ...
相关推荐
教程中提到了一个实例,它可能包含一个简单的RCP应用程序的代码和运行示例。通过这些实例,开发者能够更直观地了解如何使用上述组件构建应用程序。 ### 注意事项 - RCP应用程序的开发涉及到对Eclipse插件和扩展点的...
通过以上步骤,可以实现一个完整的RCP应用程序的系统托盘功能,使得程序在不占用桌面空间的情况下,仍然可以方便地被用户访问和控制。同时,通过右键菜单可以提供更多的操作选项,增强了用户体验。
- **程序VS产品**:区分程序与产品的概念,产品是RCP应用程序的打包形式,包含特定的配置和依赖。 - **维护LAUNCH配置**:学习如何管理和修改程序的启动配置。 - **可能的APPLICATION ID 错误**:解释应用程序ID...
系统托盘是放置在屏幕右下角(Windows系统)的一个小图标区域,RCP应用程序可以通过此区域显示图标并提供快捷方式。实现系统托盘的关键步骤如下: 1. **定义托盘图标**:在插件中定义托盘图标的资源。 2. **注册托盘...
在Eclipse RCP中,应用程序是由一系列插件组成的,每个插件都可以独立地进行开发、部署和更新。 Eclipse RCP的核心特性之一是它的灵活性和可扩展性。这种灵活性体现在多个方面,例如通过插件机制可以轻松地添加新...
- **定义**:Eclipse RCP(Rich Client Platform)是一种基于Java的框架和技术集合,允许开发者构建灵活且可扩展的桌面应用程序。 - **目标**:通过提供强大的插件体系结构和支持工具,帮助开发人员构建高度可定制的...
- **RCP**: 强调的是整体框架,用于构建可扩展的应用程序。 - **PLUGIN**: 单个功能模块,可以被其他插件引用或扩展。 #### 二、创建第一个RCP程序 **2.1 创建一个RCP程序** - **步骤**: 1. 在Eclipse IDE中创建...
的用法,向一个 RCP应用程序产品中添加标志和帮助。 每一章都基本独立于其他章节。 目录 1 富客户端平台 ......................................................................................................
15.2 应用程序窗口ApplicationWindow类 292 15.3 带有菜单栏的主程序窗口 293 15.3.1 简单写字板程序示例 293 15.3.2 添加菜单栏的基本步骤 297 15.3.3 创建菜单项 297 15.3.4 菜单项的事件处理 298 ...