Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 319070

Summary: The preload message shows in system tray is not readable
Product: [Eclipse Project] PDE Reporter: yyliuyan <yyliuyan>
Component: API ToolsAssignee: PDE API Tools Inbox <pde-apitools-inbox>
Status: CLOSED DUPLICATE QA Contact:
Severity: normal    
Priority: P3 CC: darin.eclipse, Michael_Rennie
Version: 4.0   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Attachments:
Description Flags
Program examples
none
results none

Description yyliuyan CLA 2010-07-06 23:02:25 EDT
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
Comment 1 yyliuyan CLA 2010-07-06 23:07:31 EDT
Created attachment 173613 [details]
Program examples
Comment 2 yyliuyan CLA 2010-07-06 23:08:56 EDT
Created attachment 173614 [details]
results
Comment 3 Darin Wright CLA 2010-07-12 15:45:09 EDT

*** This bug has been marked as a duplicate of bug 318964 ***