docs: @Override
      public String buildEditForm() {
  
          CmsMessages messages = Messages.get().getBundle(getLocale());
          StringBuffer retValue = new StringBuffer(2048);
  
          // check if the properties are editable
          boolean editable = isEditable();
          // create "disabled" attribute if properties are not editable
          String disabled = "";
          if (!editable) {
              disabled = " disabled=\"disabled\"";
          }
  
          retValue.append("<table border=\"0\">\n");
          retValue.append("<tr>\n");
          retValue.append("\t<td class=\"textbold\">" + messages.key(Messages.GUI_INPUT_PROPERTY_0) + "</td>\n");
          retValue.append("\t<td class=\"textbold\">" + messages.key(Messages.GUI_LABEL_VALUE_0) + "</td>\n");
          retValue.append(
              "\t<td class=\"textbold\" style=\"white-space: nowrap;\">"
                  + messages.key(Messages.GUI_INPUT_USEDPROPERTY_0)
                  + "</td>\n");
          retValue.append("</tr>\n");
          retValue.append("<tr><td><span style=\"height: 6px;\"></span></td></tr>\n");
  
          // create template select box row
          retValue.append(buildTableRowStart(messages.key(Messages.GUI_INPUT_TEMPLATE_0)));
          retValue.append(
              buildSelectTemplates(
                  "name=\"" + CmsPropertyDefinition.PROPERTY_TEMPLATE + "\" class=\"maxwidth noborder\"" + disabled));
          retValue.append("</td>\n");
          retValue.append("\t<td class=\"textcenter\">");
          retValue.append("&nbsp;");
          retValue.append(buildTableRowEnd());
  
          // create the text property input rows
          retValue.append(buildTextInput(editable));
  
          // show navigation properties if enabled in explorer type settings
          if (showNavigation()) {
              retValue.append(buildNavigationProperties(editable));
          }
  
          retValue.append("</table>");
  
          return retValue.toString();
      }