diff --git a/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/editor/DiagramEditorActionBarContributor.java b/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/editor/DiagramEditorActionBarContributor.java
index b1603ef..6ddeee3 100644
--- a/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/editor/DiagramEditorActionBarContributor.java
+++ b/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/editor/DiagramEditorActionBarContributor.java
@@ -1,7 +1,7 @@
 /*******************************************************************************
  * <copyright>
  *
- * Copyright (c) 2005, 2011 SAP AG.
+ * Copyright (c) 2005, 2012 SAP AG.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,6 +13,7 @@
  *    jpasch - Bug 323025 ActionBarContributor cleanup
  *    mwenz - Fixed NPE in RCP usecase
  *    Felix Velasco (mwenz) - Bug 323351 - Enable to suppress/reactivate the speed buttons
+ *    mwenz - Bug 381437 - IllegalArgumentException when edit menu missing
  *
  * </copyright>
  *
@@ -36,6 +37,7 @@
 import org.eclipse.graphiti.ui.internal.action.UpdateAction;
 import org.eclipse.graphiti.ui.services.GraphitiUi;
 import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
 import org.eclipse.jface.action.IMenuManager;
 import org.eclipse.jface.action.IToolBarManager;
 import org.eclipse.jface.action.MenuManager;
@@ -202,12 +204,34 @@
 			editMenu.insertAfter(RemoveAction.ACTION_ID, getAction(UpdateAction.ACTION_ID));
 		}
 
+		// Create view menu ...
 		MenuManager viewMenu = new MenuManager(Messages.GraphicsActionBarContributor_0_xmen);
 		viewMenu.add(getAction(GEFActionConstants.ZOOM_IN));
 		viewMenu.add(getAction(GEFActionConstants.ZOOM_OUT));
 		viewMenu.add(getAction(GEFActionConstants.TOGGLE_GRID_VISIBILITY));
 		viewMenu.add(getAction(GEFActionConstants.TOGGLE_SNAP_TO_GEOMETRY));
-		menubar.insertAfter(IWorkbenchActionConstants.M_EDIT, viewMenu);
+
+		// ... and add it. The position of the view menu differs depending on
+		// which menus exist (see Bugzilla
+		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=381437)
+		if (editMenu != null) {
+			// Edit menu exists --> place view menu directly in front of it
+			menubar.insertAfter(IWorkbenchActionConstants.M_EDIT, viewMenu);
+		} else if (menubar.findMenuUsingPath(IWorkbenchActionConstants.M_FILE) != null) {
+			// File menu exists --> place view menu behind it
+			menubar.insertAfter(IWorkbenchActionConstants.M_FILE, viewMenu);
+		} else {
+			// Add view menu as first entry
+			IContributionItem[] contributionItems = menubar.getItems();
+			if (contributionItems != null && contributionItems.length > 0) {
+				// Any menu exists --> place view menu in front of it it
+				menubar.insertBefore(contributionItems[0].getId(), viewMenu);
+			} else {
+				// No item exists --> simply add view menu
+				menubar.add(viewMenu);
+			}
+		}
+
 
 		IMenuManager fileMenu = menubar.findMenuUsingPath(IWorkbenchActionConstants.M_FILE);
 		if (fileMenu != null) {
