private void showTagInput() {
    TagCriteria criteria = new TagCriteria();
    criteria.addSortNamespace(PageOrdering.ASC);
    criteria.addSortSemantic(PageOrdering.ASC);
    criteria.addSortName(PageOrdering.ASC);
    GWTServiceLookup.getTagService()
        .findTagsByCriteria(
            criteria,
            new AsyncCallback<PageList<Tag>>() {
              public void onFailure(Throwable caught) {
                CoreGUI.getErrorHandler().handleError(MSG.view_tags_error_1(), caught);
              }

              public void onSuccess(PageList<Tag> result) {
                String[] values = new String[result.size()];
                int i = 0;
                for (Tag tag : result) {
                  values[i++] = tag.toString();
                }
                tagInputDialog.setTagSuggestions(values);
              }
            });

    tagInputDialog.show();
    tagInputDialog.place(addImg);
    markForRedraw();
  }