catch up with branch daily

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLJvmModelInferrer.xtend b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLJvmModelInferrer.xtend
index afb8994..719075f 100644
--- a/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLJvmModelInferrer.xtend
+++ b/org.eclipse.osbp.xtext.statemachine/src/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLJvmModelInferrer.xtend
@@ -988,7 +988,7 @@
 					'''
 					pcs.firePropertyChange("«dto.name.toFirstLower»", this.«dto.name», this.«dto.name» = («dto.attributeType.attributeType.name»)«dto.name»);
 					«IF dto.hasEvent»
-						if(statemachine != null) {
+						if(statemachine != null && !(this.«dto.name» == null && «dto.name» == null) && !(this.«dto.name».equals((«dto.attributeType.attributeType.name»)«dto.name»))) {
 							statemachine.processEvent(statemachine, new MessageEvent(MessageEvent.EventType.TRIGGER, "«dto.event.name»"));
 						}«ENDIF»
 					«IF dto.isAttached && dto.display !== null»
@@ -1317,14 +1317,18 @@
 					if(postFix.empty) {
 						append(
 							'''
+						if(«buttonName».longValue() != 0) {
 						«IF event instanceof FSMControlButtonAttributeEventKeyboard»
-							statemachine.processEvent(statemachine, new MessageEvent(EventType.KEYBOARD, "«(event as FSMControlButtonAttributeEventKeyboard).
-								keystroke»"));
+						
+							statemachine.processEvent(statemachine, new MessageEvent(EventType.KEYBOARD, "«(event as FSMControlButtonAttributeEventKeyboard).keystroke»"));
 						«ELSEIF event instanceof FSMControlButtonAttributeEventIdentity»
+						
 							statemachine.processEvent(statemachine, new MessageEvent(EventType.ID, "«(event as FSMControlButtonAttributeEventIdentity).identity»"));
 						«ELSEIF event instanceof FSMControlButtonAttributeEventEvent»
+						
 							statemachine.processEvent(statemachine, new MessageEvent(EventType.TRIGGER, "«(event as FSMControlButtonAttributeEventEvent).event.name»"));
 						«ENDIF»
+						}
 						this.«buttonName» = «buttonName»;''')
 					} else {
 						append(
diff --git a/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLJvmModelInferrer.java b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLJvmModelInferrer.java
index a03dcd9..8969d42 100644
--- a/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLJvmModelInferrer.java
+++ b/org.eclipse.osbp.xtext.statemachine/xtend-gen/org/eclipse/osbp/xtext/statemachine/jvmmodel/StatemachineDSLJvmModelInferrer.java
@@ -1929,12 +1929,27 @@
           {
             boolean _isHasEvent = dto.isHasEvent();
             if (_isHasEvent) {
-              _builder_3.append("if(statemachine != null) {");
-              _builder_3.newLine();
+              _builder_3.append("if(statemachine != null && !(this.");
+              String _name_4 = dto.getName();
+              _builder_3.append(_name_4);
+              _builder_3.append(" == null && ");
+              String _name_5 = dto.getName();
+              _builder_3.append(_name_5);
+              _builder_3.append(" == null) && !(this.");
+              String _name_6 = dto.getName();
+              _builder_3.append(_name_6);
+              _builder_3.append(".equals((");
+              String _name_7 = dto.getAttributeType().getAttributeType().getName();
+              _builder_3.append(_name_7);
+              _builder_3.append(")");
+              String _name_8 = dto.getName();
+              _builder_3.append(_name_8);
+              _builder_3.append("))) {");
+              _builder_3.newLineIfNotEmpty();
               _builder_3.append("\t");
               _builder_3.append("statemachine.processEvent(statemachine, new MessageEvent(MessageEvent.EventType.TRIGGER, \"");
-              String _name_4 = dto.getEvent().getName();
-              _builder_3.append(_name_4, "\t");
+              String _name_9 = dto.getEvent().getName();
+              _builder_3.append(_name_9, "\t");
               _builder_3.append("\"));");
               _builder_3.newLineIfNotEmpty();
               _builder_3.append("}");
@@ -1955,8 +1970,8 @@
                   String _firstUpper_5 = StringExtensions.toFirstUpper(match.getName());
                   _builder_3.append(_firstUpper_5);
                   _builder_3.append("(");
-                  String _name_5 = dto.getName();
-                  _builder_3.append(_name_5);
+                  String _name_10 = dto.getName();
+                  _builder_3.append(_name_10);
                   _builder_3.append(");");
                 }
               }
@@ -1973,8 +1988,8 @@
                   String _firstUpper_7 = StringExtensions.toFirstUpper(match_1.getName());
                   _builder_3.append(_firstUpper_7);
                   _builder_3.append("(");
-                  String _name_6 = dto.getName();
-                  _builder_3.append(_name_6);
+                  String _name_11 = dto.getName();
+                  _builder_3.append(_name_11);
                   _builder_3.append(");");
                 }
               }
@@ -2775,31 +2790,43 @@
         boolean _isEmpty = postFix.isEmpty();
         if (_isEmpty) {
           StringConcatenation _builder_1 = new StringConcatenation();
+          _builder_1.append("if(");
+          _builder_1.append(buttonName);
+          _builder_1.append(".longValue() != 0) {");
+          _builder_1.newLineIfNotEmpty();
           {
             if ((event instanceof FSMControlButtonAttributeEventKeyboard)) {
+              _builder_1.newLine();
+              _builder_1.append("\t");
               _builder_1.append("statemachine.processEvent(statemachine, new MessageEvent(EventType.KEYBOARD, \"");
               String _keystroke = ((FSMControlButtonAttributeEventKeyboard) event).getKeystroke();
-              _builder_1.append(_keystroke);
+              _builder_1.append(_keystroke, "\t");
               _builder_1.append("\"));");
               _builder_1.newLineIfNotEmpty();
             } else {
               if ((event instanceof FSMControlButtonAttributeEventIdentity)) {
+                _builder_1.newLine();
+                _builder_1.append("\t");
                 _builder_1.append("statemachine.processEvent(statemachine, new MessageEvent(EventType.ID, \"");
                 int _identity = ((FSMControlButtonAttributeEventIdentity) event).getIdentity();
-                _builder_1.append(_identity);
+                _builder_1.append(_identity, "\t");
                 _builder_1.append("\"));");
                 _builder_1.newLineIfNotEmpty();
               } else {
                 if ((event instanceof FSMControlButtonAttributeEventEvent)) {
+                  _builder_1.newLine();
+                  _builder_1.append("\t");
                   _builder_1.append("statemachine.processEvent(statemachine, new MessageEvent(EventType.TRIGGER, \"");
                   String _name = ((FSMControlButtonAttributeEventEvent) event).getEvent().getName();
-                  _builder_1.append(_name);
+                  _builder_1.append(_name, "\t");
                   _builder_1.append("\"));");
                   _builder_1.newLineIfNotEmpty();
                 }
               }
             }
           }
+          _builder_1.append("}");
+          _builder_1.newLine();
           _builder_1.append("this.");
           _builder_1.append(buttonName);
           _builder_1.append(" = ");