public TagInputDialog(String locatorId) {
      super(locatorId);

      setIsModal(true);
      setShowHeader(false);
      setShowEdges(false);
      setEdgeSize(10);
      setWidth(200);
      setHeight(30);
      setShowToolbar(false);
      setDismissOnEscape(true);
      setDismissOnOutsideClick(true);
      Map<String, Integer> bodyDefaults = new HashMap<String, Integer>(2);
      bodyDefaults.put("layoutLeftMargin", 5);
      bodyDefaults.put("membersMargin", 10);
      setBodyDefaults(bodyDefaults);

      final LocatableDynamicForm form = new LocatableDynamicForm(extendLocatorId("tagInputForm"));
      addItem(form);

      tagInputItem = new ComboBoxItem("tag");
      tagInputItem.setShowTitle(false);
      tagInputItem.setHideEmptyPickList(true);
      tagInputItem.setValueField("tag");
      tagInputItem.setDisplayField("tag");
      tagInputItem.setType("comboBox");
      tagInputItem.setTextMatchStyle(TextMatchStyle.SUBSTRING);
      tagInputItem.setTooltip(MSG.view_tags_tooltip_3());
      tagInputItem.addKeyPressHandler(
          new KeyPressHandler() {
            public void onKeyPress(KeyPressEvent event) {
              if ((event.getCharacterValue() != null)
                  && (event.getCharacterValue() == KeyCodes.KEY_ENTER)) {
                // String tag = form.getValueAsString("tag");
                String tag = tagInputItem.getEnteredValue();
                if (tag != null) {
                  Tag newTag = new Tag(tag);
                  tags.add(newTag);
                  TagEditorView.this.save();
                  TagInputDialog.this.hide();
                }
              }
            }
          });
      form.setFields(tagInputItem);
    }