Bug 136244 [Dialogs] PopupDialog - API - overriding default colors should be simpler
PopupDialog has protected methods that allow you to dictate which controls in the dialog should have their foreground/background color set. However, it is not simple to override the colors themselves. The method applyColors is private, and in order to use applyForegroundColor(...), etc., you must override createContents to ensure that the subclasses' colors get set after the default colors. Instead, the method applyColors should either be made protected, or it should call protected methods that specify the foreground and background color, rather than assuming it is always the system info colors.
bundles/org.eclipse.jface/src/org/eclipse/jface/dialogs/PopupDialog.java
/**
	 * Show the dialog's menu. This message has no effect if the receiver was
	 * not configured to show a menu. Clients may call this method in order to
	 * trigger the menu via keystrokes or other gestures. Subclasses typically
	 * do not override method.
	 */
	protected void showDialogMenu() {
		if (!showDialogMenu) {
			return;
		}
		if (menuManager == null) {
			menuManager = new MenuManager();
			fillDialogMenu(menuManager);
		}
		
		
		listenToDeactivate = !"gtk".equals(SWT.getPlatform()); 
		Menu menu = menuManager.createContextMenu(getShell());
		Rectangle bounds = toolBar.getBounds();
		Point topLeft = new Point(bounds.x, bounds.y + bounds.height);
		topLeft = getShell().toDisplay(topLeft);
		menu.setLocation(topLeft.x, topLeft.y);
		menu.setVisible(true);
	}
	/**
	 * Set the text to be shown in the popup's info area. This message has no
	 * effect if there was no info text supplied when the dialog first opened.
	 * Subclasses may override this method.
	 * 
	 * @param text