Community
Participate
Working Groups
Build Identifier: Build id: M20090211-1700 For details, please refer to the attached example in package unbuntutray; import java.awt.PopupMenu; import java.net.MalformedURLException; import java.net.URL; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.SWT; import org.eclipse.swt.events.MenuDetectEvent; import org.eclipse.swt.events.MenuDetectListener; 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.ToolTip; import org.eclipse.swt.widgets.Tray; import org.eclipse.swt.widgets.TrayItem; import org.eclipse.ui.PlatformUI; public class SystemTrayMaster implements SelectionListener, Listener { private PopupMenu popup=new PopupMenu(); private Menu menu; private MenuItem[] menuItems; private RestoreWindowListener restoreWindowListener; private SelectionListener selectionListener = null; public SystemTrayMaster() { restoreWindowListener = new RestoreWindowListener(); } /** * Close application */ 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(); } /** * Remove the menu resource */ public void clearItems() { for (MenuItem menuItem : menuItems) { menuItem.removeSelectionListener(restoreWindowListener); menuItem.dispose(); } } /** * Display the menu */ public void showMenu() { clearItems(); MenuItem openItem = new MenuItem(menu, SWT.PUSH); MenuItem closeItem = new MenuItem(menu, SWT.NONE); closeItem.setText("close"); closeItem.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { } public void widgetSelected(SelectionEvent e) { closeApplication(); } }); menuItems = new MenuItem[] { openItem, closeItem }; openItem.setText("activate"); openItem.addSelectionListener(restoreWindowListener); menu.setVisible(true); } /** * Click on the tray */ public void widgetSelected(SelectionEvent e) { } /** * Processing applications */ public void handleEvent(Event e) { showMenu(); } /** * Double-click the tray */ public void widgetDefaultSelected(SelectionEvent e) { restoreWindow(); } /** * Acquisition system shell * * @return */ private Shell getShell() { return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); } /** *Pictures of minimizing the operation */ public void minimizeWindow() { getShell().setMinimized(true); getShell().setVisible(false); } /** * Create tray */ public void createSystemTray() { Tray tray = Display.getDefault().getSystemTray(); TrayItem item = new TrayItem(tray, SWT.NONE); item.setText("rcp System"); item.setToolTipText("rcp System"); final ToolTip tip = new ToolTip(getShell(), SWT.BALLOON | SWT.ICON_INFORMATION); tip.setAutoHide(true); item.setToolTip(tip); URL url = null; try { url = new URL( "file:\\root\\rpm\\UnbuntuTray\\IBM\\workstation\\menu\\UnbuntuTray\\icons\\alt_window_32.gif"); } catch (MalformedURLException e) { e.printStackTrace(); } ImageDescriptor imageDesc = ImageDescriptor.createFromURL(url); Image image = imageDesc.createImage(); item.setImage(image); tip.setMessage("System tray is running"); tip.setVisible(true); item.addSelectionListener(this); item.addListener(SWT.MenuDetect, this); menu = new Menu(getShell(), SWT.POP_UP); } } Reproducible: Always Steps to Reproduce: 1. OS: Ubuntu 10.04 2. Open plugin.xml , Launch an eclipse application 3. System running. 4. The preload message shows in system tray
Created attachment 173613 [details] Program examples
Created attachment 173614 [details] results
*** This bug has been marked as a duplicate of bug 318964 ***