catch up with branch daily

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractStateMachine.java b/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractStateMachine.java
index 7ef81f4..274c959 100644
--- a/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractStateMachine.java
+++ b/org.eclipse.osbp.abstractstatemachine/src/org/eclipse/osbp/abstractstatemachine/AbstractStateMachine.java
@@ -42,6 +42,7 @@
 import org.apache.http.util.EntityUtils;
 import org.eclipse.e4.core.contexts.IEclipseContext;
 import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.preferences.ProductConfiguration;
 import org.eclipse.osbp.runtime.common.filter.IQuery;
 import org.eclipse.osbp.runtime.common.session.ISession;
 import org.eclipse.osbp.ui.api.customfields.IBlobService;
@@ -92,24 +93,16 @@
 	protected String lastTrigger;
 	protected IEclipseContext eclipseContext;
 	protected LinkedBlockingQueue<MessageEvent> queue = new LinkedBlockingQueue<>();
+	protected boolean remotePortOverridden = false;
 
 	protected Map<Integer, String> keyMapper = new HashMap<Integer, String>() {
 		private static final long serialVersionUID = 8801421284339992078L;
 		{
-			put(KeyCode.BACKSPACE, "BACKSPACE");
 			put(KeyCode.TAB, "TAB");
 			put(KeyCode.ENTER, "ENTER");
 			put(KeyCode.ESCAPE, "ESC");
 			put(KeyCode.PAGE_UP, "PGUP");
 			put(KeyCode.PAGE_DOWN, "PGDOWN");
-			put(KeyCode.END, "END");
-			put(KeyCode.HOME, "HOME");
-			put(KeyCode.ARROW_LEFT, "LEFTARROW");
-			put(KeyCode.ARROW_UP, "UPARROW");
-			put(KeyCode.ARROW_RIGHT, "RIGHTARROW");
-			put(KeyCode.ARROW_DOWN, "DOWNARROW");
-			put(KeyCode.INSERT, "INSERT");
-			put(KeyCode.DELETE, "DELETE");
 			put(KeyCode.F1, "F1");
 			put(KeyCode.F2, "F2");
 			put(KeyCode.F3, "F3");
@@ -159,16 +152,47 @@
 		return null;
 	}
 
-	protected void keyPressed(org.eclipse.osbp.vaadin.addons.keyevents.client.Event event) {
-		if (Character.isAlphabetic(event.charCode) || Character.isDigit(event.charCode)) {
-			String evtCode = Character.toString((char) event.charCode);
-			logger.debug("alpha or digit {}", evtCode);
-			processEvent(this, new MessageEvent(EventType.KEYBOARD, Character.toString((char) event.charCode)));
-		} else if (keyMapper.containsKey(event.charCode)) {
-			logger.debug("keymapper code {}", keyMapper.get(event.charCode));
-			processEvent(this, new MessageEvent(EventType.FUNCTIONALKEYBOARD, keyMapper.get(event.charCode)));
+	protected void keyPressed(org.eclipse.osbp.vaadin.addons.keyevents.client.Event e) {
+		if (keyMapper.containsKey(e.charCode)) {
+			logger.debug("keymapper code {}", keyMapper.get(e.charCode));
+			processEvent(this, new MessageEvent(EventType.FUNCTIONALKEYBOARD, keyMapper.get(e.charCode)));
 		} else {
-			logger.debug("unprocessed code {}", event.charCode);
+			if(e.charCode > 95 && e.charCode < 106 ) {
+				e.charCode -= 48;
+			} else if(!e.shiftKeyDown && e.charCode > 57 && e.charCode < 91) {
+				e.charCode += 32; 
+			} else if(e.shiftKeyDown && e.charCode > 47 && e.charCode < 58) {
+				e.charCode -= 16; 
+			} else if(e.charCode == 192) {	// ö
+				if(e.shiftKeyDown) {
+					e.charCode = 0xD6;
+				} else {
+					e.charCode = 0xF6;
+				}
+			} else if(e.charCode == 222) {	// ä
+				if(e.shiftKeyDown) {
+					e.charCode = 0xC4;
+				} else {
+					e.charCode = 0xE4;
+				}
+			} else if(e.charCode == 186) {	// ü
+				if(e.shiftKeyDown) {
+					e.charCode = 0xDC;
+				} else {
+					e.charCode = 0xFC;
+				}
+			} else if(e.charCode == 219) {	// ß
+				if(e.shiftKeyDown) {
+					e.charCode = 63;
+				} else {
+					e.charCode = 0xDF;
+				}
+			}
+			if (Character.isLetterOrDigit(e.charCode) || Character.isSpace((char)e.charCode)) {
+				String evtCode = Character.toString((char) e.charCode);
+				logger.debug("alpha or digit {}", evtCode);
+				processEvent(this, new MessageEvent(EventType.KEYBOARD, Character.toString((char) e.charCode)));
+			}
 		}
 	}
 
@@ -533,11 +557,17 @@
 	
 	@Override
 	public int getRemotePort() {
+		if(!remotePortOverridden) {
+			if(ProductConfiguration.getJavaPosPortConfiguration() != null) {
+				return Integer.parseInt(ProductConfiguration.getJavaPosPortConfiguration());
+			}
+		}
 		return remotePort;
 	}
 	
 	@Override
 	public void setRemotePort(int port) {
+		remotePortOverridden = true;
 		this.remotePort = remotePort;
 	}
 
@@ -799,6 +829,10 @@
 	@Override
 	public void setEclipseContext(IEclipseContext eclipseContext) {
 		this.eclipseContext = eclipseContext;
+		this.dslMetadataService = eclipseContext.get(IDSLMetadataService.class);
+		this.themeResourceService = eclipseContext.get(IThemeResourceService.class);
+		this.reportProvider = eclipseContext.get(IReportProvider.class);
+		this.blobService = eclipseContext.get(IBlobService.class);
 	}
 
 	@Override