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
* of the dialog. Subclasses should override this method when they wish to
	 * persist the bounds of the dialog.
	 * 
	 * @return settings the dialog settings used to store the dialog's location
	 *         and/or size, or <code>null</code> if the dialog's bounds should
	 *         never be stored.
	 */
	protected IDialogSettings getDialogSettings() {
		return null;
	}
	/**
	 * Saves the bounds of the shell in the appropriate dialog settings. The
	 * bounds are recorded relative to the parent shell, if there is one, or
	 * display coordinates if there is no parent shell. Subclasses typically
	 * need not override this method, but may extend it (calling
	 * <code>super.saveDialogBounds</code> if additional bounds information
	 * should be stored. Clients may also call this method to persist the bounds
	 * at times other than closing the dialog.
	 * 
	 * @param shell
	 *            The shell whose bounds are to be stored
	 */
	protected void saveDialogBounds(Shell shell) {
		IDialogSettings settings = getDialogSettings();
		if (settings != null) {
			Point shellLocation = shell.getLocation();
			Point shellSize = shell.getSize();
			Shell parent = getParentShell();
			if (parent != null) {
				Point parentLocation = parent.getLocation();