docs: public String buildSelectPreferredEditors(String htmlAttributes) {
  
          StringBuffer result = new StringBuffer(1024);
          HttpServletRequest request = getJsp().getRequest();
          if (htmlAttributes != null) {
              htmlAttributes += " name=\"" + PARAM_PREFERREDEDITOR_PREFIX;
          }
          Map<String, SortedMap<Float, CmsWorkplaceEditorConfiguration>> resourceEditors = OpenCms.getWorkplaceManager().getWorkplaceEditorManager().getConfigurableEditors();
          if (resourceEditors != null) {
              // first: iterate over the resource types and consider order from configuration
              Iterator<String> i = resourceEditors.keySet().iterator();
  
              SortedMap<Float, String> rankResources = new TreeMap<Float, String>();
              while (i.hasNext()) {
                  String currentResourceType = i.next();
                  CmsExplorerTypeSettings settings = OpenCms.getWorkplaceManager().getExplorerTypeSetting(
                      currentResourceType);
                  rankResources.put(new Float(settings.getNewResourceOrder()), currentResourceType);
              }
  
              while (rankResources.size() > 0) {
                  // get editor configuration with lowest order
                  Float keyVal = rankResources.firstKey();
                  String currentResourceType = rankResources.get(keyVal);
  
                  SortedMap<Float, CmsWorkplaceEditorConfiguration> availableEditors = resourceEditors.get(
                      currentResourceType);
                  if ((availableEditors != null) && (availableEditors.size() > 0)) {
                      String preSelection = computeEditorPreselection(request, currentResourceType);
                      List<String> options = new ArrayList<String>(availableEditors.size() + 1);
                      List<String> values = new ArrayList<String>(availableEditors.size() + 1);
                      options.add(key(Messages.GUI_PREF_EDITOR_BEST_0));
                      values.add(INPUT_DEFAULT);
                      // second: iteration over the available editors for the resource type
                      int selectedIndex = 0;
                      int counter = 1;
                      while (availableEditors.size() > 0) {
                          Float key = availableEditors.lastKey();
                          CmsWorkplaceEditorConfiguration conf = availableEditors.get(key);
                          options.add(keyDefault(conf.getEditorLabel(), conf.getEditorLabel()));
                          values.add(conf.getEditorUri());
                          if (conf.getEditorUri().equals(preSelection)) {
                              selectedIndex = counter;
                          }
                          counter++;
                          availableEditors.remove(key);
                      }
  
                      // create the table row for the current resource type
                      result.append("<tr>\n\t<td style=\"white-space: nowrap;\">");
                      String localizedName = keyDefault("label.editor.preferred." + currentResourceType, "");
                      if (CmsStringUtil.isEmpty(localizedName)) {
                          localizedName = CmsWorkplaceMessages.getResourceTypeName(this, currentResourceType);
                      }
                      result.append(localizedName);
                      result.append("</td>\n\t<td>");
                      result.append(
                          buildSelect(htmlAttributes + currentResourceType + "\"", options, values, selectedIndex));
                      result.append("</td>\n</tr>\n");
                  }
                  rankResources.remove(keyVal);
              }
          }
          return result.toString();
      }