Bug 544142: Package Explorer should show explanatory text

This reverts commit 87b61c66067a1bd1bda08b1226e5e69caa705a08 and adds
the fix for not initialized key bindings.

Change-Id: I3dac29bf4dcb1b3dd07cb89cf3b06ecd0f971a11
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerPart.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerPart.java
index e82fefe..f8cda4c 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerPart.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerPart.java
@@ -87,6 +87,7 @@
 import org.eclipse.ui.WorkbenchException;
 import org.eclipse.ui.XMLMemento;
 import org.eclipse.ui.actions.ActionContext;
+import org.eclipse.ui.internal.views.helpers.EmptyWorkspaceHelper;
 import org.eclipse.ui.part.ISetSelectionTarget;
 import org.eclipse.ui.part.IShowInSource;
 import org.eclipse.ui.part.IShowInTarget;
@@ -192,6 +193,9 @@
 
 	private IMemento fMemento;
 
+	private EmptyWorkspaceHelper fEmptyWorkspaceHelper;
+	private Composite fDisplayArea;
+
 	/**
 	 * Helper to open and activate editors.
 	 * @since 3.5
@@ -487,9 +491,14 @@
 		final PerformanceStats stats= PerformanceStats.getStats(PERF_CREATE_PART_CONTROL, this);
 		stats.startRun();
 
-		fViewer= createViewer(parent);
+		fEmptyWorkspaceHelper = new EmptyWorkspaceHelper();
+		fDisplayArea= fEmptyWorkspaceHelper.getComposite(parent);
+
+		fViewer= createViewer(fDisplayArea);
 		fViewer.setUseHashlookup(true);
 
+		fEmptyWorkspaceHelper.setNonEmptyControl(fViewer.getControl());
+
 		initDragAndDrop();
 
 		setProviders();
@@ -996,7 +1005,7 @@
 	 * Create the KeyListener for doing the refresh on the viewer.
 	 */
 	private void initKeyListener() {
-		fViewer.getControl().addKeyListener(new KeyAdapter() {
+		fDisplayArea.addKeyListener(new KeyAdapter() {
 			@Override
 			public void keyReleased(KeyEvent event) {
 				fActionSet.handleKeyEvent(event);