在RCP中实现系统托盘功能
2008-03-11 16:30
302 查看
在RCP中实现系统托盘功能在RCP中加入系统托盘功能,类似msn和QQ。功能就不说了。在RCP的WorkbenchWindowAdvisor的postWindowOpen()中创建系统托盘,另外要override preWindowShellClose()方法,否则按程序右上角的X,整个程序就会被关闭,重写后实现程序最小化的功能。ApplicationWorkbenchWindowAdvisor.java
程序执行后效果
/** * ApplicationWorkbenchWindowAdvisor.java */ package com.mi.pwdgate; import org.eclipse.swt.graphics.Point; import org.eclipse.ui.IWorkbenchPreferenceConstants; import org.eclipse.ui.PlatformUI; 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.mi.pwdgate.util.SystemTrayMaster; public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor { private SystemTrayMaster trayMaster; /* * (non-Javadoc) * * @see org.eclipse.ui.application.WorkbenchWindowAdvisor#postWindowOpen() */ public void postWindowOpen() { createSystemTray(); } private void createSystemTray() { trayMaster = new SystemTrayMaster(); trayMaster.createSystemTray(); } /* * (non-Javadoc) * * @see org.eclipse.ui.application.WorkbenchWindowAdvisor#preWindowShellClose() */ public boolean preWindowShellClose() { trayMaster.minimizeWindow(); return false; } } |
/** * SystemTrayMaster.java */ package com.mi.pwdgate.util; 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; /** * @author moneyice 2006-5-9 */ public class SystemTrayMaster implements SelectionListener, Listener { private final class RestoreWindowListener extends SelectionAdapter { public void widgetSelected(SelectionEvent e) { restoreWindow(); } } private Menu menu; private MenuItem[] menuItems = new MenuItem[0]; private RestoreWindowListener restoreWindowListener; public SystemTrayMaster() { this.restoreWindowListener = new RestoreWindowListener(); } // Closes the Application protected void closeApplication() { PlatformUI.getWorkbench().close(); } // click the tray public void widgetSelected(SelectionEvent e) { } // double click the tray public void widgetDefaultSelected(SelectionEvent e) { restoreWindow(); } // Gets system shell private Shell getShell() { return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); } // Minimizes the Window public void minimizeWindow() { getShell().setMinimized(true); getShell().setVisible(false); } // Restores the window protected void restoreWindow() { Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow() .getShell(); shell.open(); shell.setMinimized(false); shell.forceActive(); shell.forceFocus(); } public void showMenu() { clearItems(); MenuItem openItem; MenuItem closeItem; openItem = new MenuItem(this.menu, SWT.PUSH); closeItem = new MenuItem(this.menu, SWT.NONE); closeItem.setText("Close"); closeItem.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { closeApplication(); } }); this.menuItems = new MenuItem[] { openItem, closeItem }; openItem.setText("Open Password Gate"); openItem.addSelectionListener(this.restoreWindowListener); this.menu.setVisible(true); } private void clearItems() { for (int i = 0; i < this.menuItems.length; i++) { MenuItem item = this.menuItems[i]; item.removeSelectionListener(this.restoreWindowListener); this.menuItems[i].dispose(); } } public void handleEvent(Event event) { showMenu(); } public void createSystemTray() { // Gets system tray Tray tray = Display.getDefault().getSystemTray(); // Creates tray item TrayItem item = new TrayItem(tray, SWT.NONE); item.setText("Password Gate"); item.setToolTipText("Password Gate"); // Sets image for tray Image image = ImageShop.get("default"); item.setImage(image); item.addSelectionListener(this); item.addListener(SWT.MenuDetect, this); menu = new Menu(getShell(), SWT.POP_UP); } } |
程序执行后效果
相关文章推荐
- 在RCP中实现系统托盘功能
- 在RCP中实现系统托盘功能
- 在RCP中实现系统托盘功能
- 在RCP中实现系统托盘功能
- Swing实现系统托盘功能
- C#实现右下角图标(系统托盘)功能
- JFrame实现系统托盘功能缩放在任务栏,窗体图标自定义
- 使用Java实现系统托盘功能的介绍(附源码以及截图)
- Java中实现系统托盘功能(代码全贴,附加运行截图)
- RCP工程系统托盘功能
- Air实现系统托盘功能
- VC实现程序最小化到系统托盘功能
- 实现系统托盘的功能
- Delphi中实现系统托盘的功能
- java jdk1.5、 windows 32位字节 ----->实现系统托盘功能
- Spring(17):新增功能:在超市订单系统中实现订单表的查询(采用MapperScannerConfigurer)
- Nodejs+express 实战,实现系统监控功能
- C#实现WinForm窗口最小化到系统托盘
- 数字天堂HBuilder+MUI(五)基于native.js的文件系统管理功能实现
- 简单实现windows系统普通或强制关机重启注销的功能