diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/VocabularyTermSelectionWidget.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/VocabularyTermSelectionWidget.java
index c2453c2d7fdfcc63ac25a0b8be96fba9ad34fd68..0f42a739876267d9ea6ccbe7894140f5808f57d6 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/VocabularyTermSelectionWidget.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/field/VocabularyTermSelectionWidget.java
@@ -25,6 +25,7 @@ import com.extjs.gxt.ui.client.event.EventType;
 import com.extjs.gxt.ui.client.event.Events;
 import com.extjs.gxt.ui.client.event.KeyListener;
 import com.extjs.gxt.ui.client.event.Listener;
+import com.extjs.gxt.ui.client.widget.form.LabelField;
 import com.extjs.gxt.ui.client.widget.form.TextField;
 import com.google.gwt.user.client.rpc.AsyncCallback;
 
@@ -36,7 +37,6 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewConte
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.framework.DatabaseModificationAwareField;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.ModelDataPropertyNames;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.model.VocabularyTermModel;
-import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.CodeField.CodeFieldKind;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractRegistrationDialog;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.DropDownList;
 import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.FieldUtil;
@@ -64,7 +64,7 @@ public class VocabularyTermSelectionWidget extends
 
         private final IViewContext<?> viewContext;
 
-        private final CodeField codeField;
+        private final LabelField codeField;
 
         private final DescriptionField descriptionField;
 
@@ -86,17 +86,16 @@ public class VocabularyTermSelectionWidget extends
             form.setFieldWidth(FIELD_WIDTH);
             this.setWidth(LABEL_WIDTH + FIELD_WIDTH + 50);
 
-            codeField =
-                    new CodeField(viewContext, viewContext.getMessage(Dict.CODE),
-                            CodeFieldKind.CODE_WITH_COLON);
-            codeField.setMaxLength(GenericConstants.COLUMN_LABEL);
+            codeField = new LabelField();
+            codeField.setLabelSeparator(":");
+            codeField.setFieldLabel(viewContext.getMessage(Dict.CODE));
             codeField.setReadOnly(true);
-            // FIXME GWT hangs if this field is disabled, but we want disabled style
-            // codeField.disable();
+
             addField(codeField);
 
             boolean mandatory = false;
             labelField = createTextField(viewContext.getMessage(Dict.LABEL), mandatory);
+            labelField.setEmptyText("enter label");
             FieldUtil.setValueWithUnescaping(labelField, refreshAction.code);
             FieldUtil.setValueWithUnescaping(codeField, labelField.getValue() == null ? ""
                     : CodeNormalizer.normalize(labelField.getValue()));
@@ -125,12 +124,14 @@ public class VocabularyTermSelectionWidget extends
 
             termSelectionWidget = createTermSelectionWidget();
             addField(termSelectionWidget);
+
+            setFocusWidget(labelField);
         }
 
         @Override
         protected void register(AsyncCallback<Void> registrationCallback)
         {
-            refreshAction.code = codeField.getValue();
+            refreshAction.code = (String) codeField.getValue();
             viewContext.getCommonService().addUnofficialVocabularyTerm(
                     TechId.create(vocabularyOrNull), refreshAction.code,
                     labelField.getValue().trim(), descriptionField.getValue(),
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/FieldUtil.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/FieldUtil.java
index bc716b3523f83dcd5c09d65e0e8328a8711cbca5..2fc0108607508819b258b8cd34b5cac739981741 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/FieldUtil.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/client/web/client/application/ui/widget/FieldUtil.java
@@ -24,6 +24,7 @@ import com.extjs.gxt.ui.client.widget.ComponentHelper;
 import com.extjs.gxt.ui.client.widget.MessageBox;
 import com.extjs.gxt.ui.client.widget.WidgetComponent;
 import com.extjs.gxt.ui.client.widget.form.Field;
+import com.extjs.gxt.ui.client.widget.form.LabelField;
 import com.extjs.gxt.ui.client.widget.form.TextField;
 import com.google.gwt.user.client.Element;
 import com.google.gwt.user.client.ui.Image;
@@ -116,6 +117,11 @@ public class FieldUtil
         field.setValue(StringEscapeUtils.unescapeHtml(value));
     }
 
+    public static void setValueWithUnescaping(LabelField field, String value)
+    {
+        field.setValue(StringEscapeUtils.unescapeHtml(value));
+    }
+
     //
     // info icon support
     // WORKAROUND: Based on GXT functionality for displaying error icon, until there is no
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/public/images/trigger-plus.png b/openbis/source/java/ch/systemsx/cisd/openbis/public/images/trigger-plus.png
index 0f25d2a1ba310c7da6d0e844c73e003e9e97eb98..334c64c9474ab06b48361293d0900ae425a4afa8 100644
Binary files a/openbis/source/java/ch/systemsx/cisd/openbis/public/images/trigger-plus.png and b/openbis/source/java/ch/systemsx/cisd/openbis/public/images/trigger-plus.png differ