Bug 491293 - [Quick Access] Make initial hint larger in result popup 

The hint is now stored in a Text, placed on top of the result Table.
The Text is displayed only on need: as initial hint and for no results.
The hint text is now extended to be more descriptive.

Change-Id: I14df80729844072b25c18cc3546f71f37847e127
Signed-off-by: Patrik Suzzi <psuzzi@gmail.com>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessContents.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessContents.java
index 0082910..8cebb41 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessContents.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/QuickAccessContents.java
@@ -10,7 +10,7 @@
  *     Tom Hochstein (Freescale) - Bug 393703 - NotHandledException selecting inactive command under 'Previous Choices' in Quick access
  *     Lars Vogel <Lars.Vogel@vogella.com> - Bug 472654, 491272, 491398
  *     Leung Wang Hei <gemaspecial@yahoo.com.hk> - Bug 483343
- *     Patrik Suzzi <psuzzi@gmail.com> - Bug 491291, Bug 491529
+ *     Patrik Suzzi <psuzzi@gmail.com> - Bug 491291, 491529, 491293
  *******************************************************************************/
 package org.eclipse.ui.internal.quickaccess;
 
@@ -136,14 +136,11 @@
 
 			if (table.getItemCount() > 0) {
 				table.setSelection(selectionIndex);
+				hideHintText();
 			} else if (filterTextEmpty) {
-				TableItem item = new TableItem(table, SWT.NONE);
-				item.setText(0, QuickAccessMessages.QuickAccess_StartTypingToFindMatches);
-				item.setForeground(0, grayColor);
+				showHintText(QuickAccessMessages.QuickAccess_StartTypingToFindMatches, grayColor);
 			} else {
-				TableItem item = new TableItem(table, SWT.NONE);
-				item.setText(0, QuickAccessMessages.QuickAccessContents_NoMatchingResults);
-				item.setForeground(0, grayColor);
+				showHintText(QuickAccessMessages.QuickAccessContents_NoMatchingResults, grayColor);
 			}
 
 			// update info as-you-type
@@ -592,6 +589,48 @@
 		});
 	}
 
+	private Text hintText;
+	private boolean displayHintText;
+
+	/** Create HintText as child of the given parent composite */
+	Text createHintText(Composite composite, int defaultOrientation) {
+		hintText = new Text(composite, SWT.FILL);
+		hintText.setOrientation(defaultOrientation);
+		displayHintText = true;
+		return hintText;
+	}
+
+	/** Hide the hint text */
+	void hideHintText() {
+		if (displayHintText) {
+			setHintTextToDisplay(false);
+		}
+	}
+
+	/** Show the hint text with the given color */
+	void showHintText(String text, Color color) {
+		hintText.setText(text);
+		if (color != null) {
+			hintText.setForeground(color);
+		}
+		if (!displayHintText) {
+			setHintTextToDisplay(true);
+		}
+	}
+
+	/**
+	 * Sets hint text to be displayed and requests the layout
+	 *
+	 * @param toDisplay
+	 */
+	private void setHintTextToDisplay(boolean toDisplay) {
+		GridData data = (GridData) hintText.getLayoutData();
+		data.exclude = !toDisplay;
+		hintText.setVisible(toDisplay);
+		hintText.requestLayout();
+		this.displayHintText = toDisplay;
+	}
+
 	/**
 	 * Creates the table providing the contents for the quick access dialog
 	 *
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/SearchField.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/SearchField.java
index 1a1a494..27f0295 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/SearchField.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/SearchField.java
@@ -12,7 +12,7 @@
  *     Brian de Alwis - Fix size computation to account for trim
  *     Markus Kuppe <bugs.eclipse.org@lemmster.de> - Bug 449485: [QuickAccess] "Widget is disposed" exception in errorlog during shutdown due to quickaccess.SearchField.storeDialog
  *     Elena Laskavaia <elaskavaia.cdt@gmail.com> - Bug 433746: [QuickAccess] SWTException on closing quick access shell
- *     Patrik Suzzi <psuzzi@gmail.com> - Bug 488926, 491278, 491291, 491312
+ *     Patrik Suzzi <psuzzi@gmail.com> - Bug 488926, 491278, 491291, 491312, 491293
  ******************************************************************************/
 package org.eclipse.ui.internal.quickaccess;
 import java.util.ArrayList;
@@ -223,6 +223,7 @@
 		shell.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_WHITE));
 		shell.setText(QuickAccessMessages.QuickAccess_EnterSearch); // just for debugging, not shown anywhere
 		GridLayoutFactory.fillDefaults().applyTo(shell);
+		quickAccessContents.createHintText(shell, Window.getDefaultOrientation());
 		table = quickAccessContents.createTable(shell, Window.getDefaultOrientation());
 		txtQuickAccess.addMouseListener(new MouseAdapter() {
 			@Override
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/messages.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/messages.properties
index 01e3563..64065e1 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/messages.properties
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/quickaccess/messages.properties
@@ -7,7 +7,7 @@
 #
 # Contributors:
 #     IBM Corporation - initial API and implementation
-#     Patrik Suzzi <psuzzi@gmail.com> - Bug 488926
+#     Patrik Suzzi <psuzzi@gmail.com> - Bug 488926, 491293
 ###############################################################################
 QuickAccess_Editors=Editors
 QuickAccess_Views=Views
@@ -19,7 +19,7 @@
 QuickAccess_Previous=Previous Choices
 QuickAccess_Properties=Properties
 QuickAccess_PressKeyToShowAllMatches=Press ''{0}'' to remove 5 result per category limit
-QuickAccess_StartTypingToFindMatches=Start typing...
+QuickAccess_StartTypingToFindMatches=Start typing to search commands and more...
 QuickAccess_AvailableCategories=Available categories:
 QuickAccess_EnterSearch=Quick Access
 QuickAccess_TooltipDescription=Access commands and other items ({0})