Partial fix for  Bug 269269 - [Compatibility] Need support for legacy toolbars. Adding necessary API at this point...
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/workbench/ui/renderers/swt/SWTPartFactory.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/workbench/ui/renderers/swt/SWTPartFactory.java
index b4a236e..5f758e8 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/workbench/ui/renderers/swt/SWTPartFactory.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/workbench/ui/renderers/swt/SWTPartFactory.java
@@ -24,9 +24,11 @@
 import org.eclipse.e4.ui.model.application.MMenu;
 import org.eclipse.e4.ui.model.application.MMenuItem;
 import org.eclipse.e4.ui.model.application.MPart;
+import org.eclipse.e4.ui.model.application.MToolBar;
 import org.eclipse.e4.ui.model.application.MToolBarItem;
 import org.eclipse.e4.ui.workbench.swt.util.ISWTResourceUtiltities;
 import org.eclipse.e4.workbench.ui.IHandlerService;
+import org.eclipse.e4.workbench.ui.ILegacyHook;
 import org.eclipse.e4.workbench.ui.IResourceUtiltities;
 import org.eclipse.e4.workbench.ui.renderers.PartFactory;
 import org.eclipse.emf.common.notify.Notification;
@@ -55,6 +57,16 @@
 	public void createMenu(MPart<?> part, Object widgetObject, MMenu menu) {
 		Widget widget = (Widget) widgetObject;
 		org.eclipse.swt.widgets.Menu swtMenu;
+
+		if (menu != null && menu.getId() != null
+				&& menu.getId().equals("org.eclipse.ui.main.menu") //$NON-NLS-1$
+				&& menu.getItems().size() == 0) {
+			// Pre-populate the main menu
+			ILegacyHook lh = (ILegacyHook) context.get(ILegacyHook.class
+					.getName());
+			lh.loadMenu(menu);
+		}
+
 		if (widget instanceof MenuItem) {
 			swtMenu = new org.eclipse.swt.widgets.Menu(((MenuItem) widget)
 					.getParent().getShell(), SWT.DROP_DOWN);
@@ -77,7 +89,17 @@
 	}
 
 	public void createToolBar(MPart<?> part, Object widgetObject,
-			org.eclipse.e4.ui.model.application.MToolBar toolbar) {
+			MToolBar toolbar) {
+
+		if (toolbar != null && toolbar.getId() != null
+				&& toolbar.getId().equals("org.eclipse.ui.main.toolbar") //$NON-NLS-1$
+				&& toolbar.getItems().size() == 0) {
+			// Pre-populate the main toolbar
+			ILegacyHook lh = (ILegacyHook) context.get(ILegacyHook.class
+					.getName());
+			lh.loadToolbar(toolbar);
+		}
+
 		Composite composite = (Composite) widgetObject;
 		org.eclipse.swt.widgets.ToolBar swtToolBar = new ToolBar(composite,
 				SWT.FLAT | SWT.NO_FOCUS);
@@ -118,7 +140,9 @@
 			final org.eclipse.e4.ui.model.application.MToolBarItem toolBarItem) {
 		int style = SWT.PUSH;
 		final ToolItem newToolItem = new ToolItem(swtMenu, style);
-		newToolItem.setText(toolBarItem.getName());
+
+		if (toolBarItem.getName() != null)
+			newToolItem.setText(toolBarItem.getName());
 		newToolItem.setToolTipText(toolBarItem.getTooltip());
 		newToolItem.setImage(getImage(toolBarItem));
 		toolBarItem.eAdapters().add(new AdapterImpl() {
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/workbench/ui/renderers/swt/StackModelFactory.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/workbench/ui/renderers/swt/StackModelFactory.java
index 428c619..b1d5c18 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/workbench/ui/renderers/swt/StackModelFactory.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/workbench/ui/renderers/swt/StackModelFactory.java
@@ -55,8 +55,31 @@
 		Widget parentWidget = getParentWidget(part);
 		if (parentWidget instanceof Composite) {
 			IEclipseContext parentContext = getContextForParent(part);
+
+			// HACK!! Set up the close button style based on the 'Policy'
+			// Perhaps this should be CSS-based ?
+			boolean showCloseAlways = false;
+			boolean showMinMax = false;
+			int styleModifier = 0;
+			if (part.getPolicy() != null && part.getPolicy().length() > 0) {
+				String policy = part.getPolicy();
+				if (policy.indexOf("ViewStack") >= 0) { //$NON-NLS-1$
+					styleModifier = SWT.CLOSE;
+					showMinMax = true;
+				}
+				if (policy.indexOf("EditorStack") >= 0) { //$NON-NLS-1$
+					styleModifier = SWT.CLOSE;
+					showCloseAlways = true;
+					showMinMax = true;
+				}
+			}
+
 			final CTabFolder ctf = new CTabFolder((Composite) parentWidget,
-					SWT.BORDER);
+					SWT.BORDER | styleModifier);
+			ctf.setUnselectedCloseVisible(showCloseAlways);
+			ctf.setMaximizeVisible(showMinMax);
+			ctf.setMinimizeVisible(showMinMax);
+
 			bindWidget(part, ctf);
 			ctf.setVisible(true);
 			ctf.setSimple(false);
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/ILegacyHook.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/ILegacyHook.java
index 7a444e2..1240313 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/ILegacyHook.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/ILegacyHook.java
@@ -11,9 +11,13 @@
 package org.eclipse.e4.workbench.ui;
 
 import org.eclipse.e4.ui.model.application.MMenu;
+import org.eclipse.e4.ui.model.application.MToolBar;
 import org.eclipse.e4.ui.model.workbench.MPerspective;
 
 public interface ILegacyHook {
 	public void loadMenu(MMenu menuModel);
+
+	public void loadToolbar(MToolBar toolbar);
+
 	public void loadPerspective(MPerspective<?> perspModel);
 }
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/Workbench.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/Workbench.java
index 4e06424..40cf136 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/Workbench.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/workbench/ui/internal/Workbench.java
@@ -33,7 +33,6 @@
 import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.MApplicationElement;
 import org.eclipse.e4.ui.model.application.MContributedPart;
-import org.eclipse.e4.ui.model.application.MMenu;
 import org.eclipse.e4.ui.model.application.MPart;
 import org.eclipse.e4.ui.model.application.MWindow;
 import org.eclipse.e4.ui.model.workbench.MWorkbenchWindow;
@@ -283,13 +282,7 @@
 		globalContext.set(MApplication.class.getName(), workbench);
 
 		// Initialize the workbench for legacy support if required
-		ILegacyHook legacyHook = (ILegacyHook) globalContext
-				.get(ILegacyHook.class.getName());
-		MWindow<?> wbw = workbench.getWindows().get(0);
-		if (legacyHook != null && wbw.getMenu() == null) {
-			MMenu mainMenu = wbw.getMenu();
-			legacyHook.loadMenu(mainMenu);
-		}
+		globalContext.get(ILegacyHook.class.getName());
 	}
 
 	public int run() {