Bug 462936 - NPE when using system key (i.e. DELETE) as key binding

Signed-off-by: Christoph Keimel <c.keimel@emsw.de>
diff --git a/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/DefMenuItemRenderer.java b/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/DefMenuItemRenderer.java
index c17bb74..f9e1455 100755
--- a/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/DefMenuItemRenderer.java
+++ b/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/DefMenuItemRenderer.java
@@ -10,8 +10,10 @@
  *******************************************************************************/
 package org.eclipse.fx.ui.workbench.renderers.fx;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
 
 import javafx.application.Platform;
 import javafx.event.ActionEvent;
@@ -209,8 +211,16 @@
 			if (sequence != null && sequence.getKeyStrokes().length == 1) {
 				KeyStroke k = sequence.getKeyStrokes()[0];
 
-				getWidget().setAccelerator(new KeyCodeCombination(KeyCode.getKeyCode(Character.toUpperCase((char) k.getKeyCode()) + ""), //$NON-NLS-1$
-						k.hasShiftModifier() ? ModifierValue.DOWN : ModifierValue.ANY, k.hasCtrlModifier() ? ModifierValue.DOWN : ModifierValue.ANY, k.hasAltModifier() ? ModifierValue.DOWN : ModifierValue.ANY, k.hasCommandModifier() ? ModifierValue.DOWN : ModifierValue.ANY, ModifierValue.ANY));
+				KeyCode keyCode = null;
+				List<KeyCode> collect = Arrays.asList(KeyCode.values()).stream().filter(code -> {
+					return code.impl_getCode() == k.getKeyCode();
+				}).collect(Collectors.toList());
+				if (collect.size() > 0)
+					keyCode = collect.get(0);
+
+				getWidget().setAccelerator(
+						new KeyCodeCombination(keyCode, k.hasShiftModifier() ? ModifierValue.DOWN : ModifierValue.ANY, k.hasCtrlModifier() ? ModifierValue.DOWN : ModifierValue.ANY, k.hasAltModifier() ? ModifierValue.DOWN : ModifierValue.ANY, k.hasCommandModifier() ? ModifierValue.DOWN
+								: ModifierValue.ANY, ModifierValue.ANY));
 			} else {
 				getWidget().setAccelerator(null);
 			}