diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/fields/TextField.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/fields/TextField.java
index 91c7580..89b1030 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/fields/TextField.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/fields/TextField.java
@@ -14,6 +14,7 @@
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.FocusListener;
 import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.VerifyListener;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.layout.FormAttachment;
@@ -86,6 +87,14 @@
     m_text.removeFocusListener(listener);
   }
 
+  public void addVerifyListener(VerifyListener verifyListener) {
+    m_text.addVerifyListener(verifyListener);
+  }
+
+  public void removeVerifyListener(VerifyListener verifyListener) {
+    m_text.removeVerifyListener(verifyListener);
+  }
+
   public void addModifyListener(ModifyListener listener) {
     m_text.addModifyListener(listener);
   }
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/util/UiUtility.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/util/UiUtility.java
index 3eb38d5..21376e7 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/util/UiUtility.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/util/UiUtility.java
@@ -116,7 +116,7 @@
       if (TypeUtility.exists(targetPackage)) {
         String pck = targetPackage.getElementName();
         IScoutBundle declaringBundle = ScoutTypeUtility.getScoutBundle(targetPackage);
-        if (declaringBundle != null && pck.startsWith(declaringBundle.getSymbolicName())) {
+        if (declaringBundle != null && pck.startsWith(declaringBundle.getSymbolicName()) && pck.length() > declaringBundle.getSymbolicName().length()) {
           return pck.substring(declaringBundle.getSymbolicName().length() + 1);
         }
       }
diff --git a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/view/properties/presenter/single/AbstractValuePresenter.java b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/view/properties/presenter/single/AbstractValuePresenter.java
index b124ded..88eff9e 100644
--- a/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/view/properties/presenter/single/AbstractValuePresenter.java
+++ b/org.eclipse.scout.sdk.ui/src/org/eclipse/scout/sdk/ui/view/properties/presenter/single/AbstractValuePresenter.java
@@ -39,8 +39,7 @@
     if (regexAllowedCharacters == null) {
       m_regexAllowedCharacters = null;
     }
-    else
-    {
+    else {
       m_regexAllowedCharacters = Pattern.compile(regexAllowedCharacters);
     }
   }
diff --git a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/sourcebuilder/annotation/AnnotationSourceBuilderFactory.java b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/sourcebuilder/annotation/AnnotationSourceBuilderFactory.java
index 7d6f312..693fc23 100644
--- a/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/sourcebuilder/annotation/AnnotationSourceBuilderFactory.java
+++ b/org.eclipse.scout.sdk/src/org/eclipse/scout/sdk/sourcebuilder/annotation/AnnotationSourceBuilderFactory.java
@@ -10,6 +10,7 @@
  ******************************************************************************/
 package org.eclipse.scout.sdk.sourcebuilder.annotation;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 
 import javax.annotation.Generated;
@@ -45,6 +46,13 @@
     return orderAnnoation;
   }
 
+  public static IAnnotationSourceBuilder createPriorityAnnotation(float priority) {
+    AnnotationSourceBuilder orderAnnoation = new AnnotationSourceBuilder(SignatureCache.createTypeSignature(RuntimeClasses.Ranking));
+    BigDecimal convert = new BigDecimal(priority);
+    orderAnnoation.addParameter(convert.toString() + "f");
+    return orderAnnoation;
+  }
+
   public static IAnnotationSourceBuilder createFormDataAnnotation() {
     return createFormDataAnnotation(null, null, null);
   }
