Bug 350459 [Compatibility] NPE with GEF editor
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuHelper.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuHelper.java
index 88fa51f..41c310b 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuHelper.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuHelper.java
@@ -717,16 +717,22 @@
 		} else {
 			MDirectToolItem toolItem = MenuFactoryImpl.eINSTANCE.createDirectToolItem();
 			String itemId = item.getId();
-			toolItem.setElementId(itemId == null ? id : itemId);
+			toolItem.setElementId(itemId);
 			String iconURI = getIconURI(action.getImageDescriptor());
 			if (iconURI == null) {
-				iconURI = getIconURI(id, application.getContext());
-				if (iconURI == null) {
+				if (itemId == null) {
 					if (action.getText() != null) {
 						toolItem.setLabel(action.getText());
 					}
 				} else {
-					toolItem.setIconURI(iconURI);
+					iconURI = getIconURI(itemId, application.getContext());
+					if (iconURI == null) {
+						if (action.getText() != null) {
+							toolItem.setLabel(action.getText());
+						}
+					} else {
+						toolItem.setIconURI(iconURI);
+					}
 				}
 			} else {
 				toolItem.setIconURI(iconURI);
@@ -894,6 +900,10 @@
 	}
 
 	private static String getIconURI(String commandId, IEclipseContext workbench) {
+		if (commandId == null) {
+			return null;
+		}
+
 		ICommandImageService imageService = workbench.get(ICommandImageService.class);
 		ImageDescriptor descriptor = imageService.getImageDescriptor(commandId);
 		return getIconURI(descriptor);