docs: public void openDialog(
          final I_CmsEditableData editableData,
          final boolean isNew,
          final String dependingElementId,
          final String mode,
          final CmsEditHandlerData handlerDataForNew) {
  
          if (!m_editorOpened) {
              m_editorOpened = true;
              m_handler.disableToolbarButtons();
              m_handler.deactivateCurrentButton();
  
              if (!isNew && (editableData.getStructureId() != null) && editableData.hasEditHandler()) {
                  final String elementId = CmsContentEditor.getClientIdForEditable(editableData);
                  m_handler.m_controller.getEditOptions(
                      elementId,
                      true,
                      new I_CmsSimpleCallback<CmsDialogOptionsAndInfo>() {
  
                          public void execute(CmsDialogOptionsAndInfo editOptions) {
  
                              final I_CmsSimpleCallback<CmsUUID> editCallBack = new I_CmsSimpleCallback<CmsUUID>() {
  
                                  public void execute(CmsUUID arg) {
  
                                      I_CmsEditableData data = editableData;
                                      if (!data.getStructureId().equals(arg)) {
                                          // the content structure ID has changed, change the editableData
                                          data = new CmsEditableData(data);
                                          ((CmsEditableData)data).setStructureId(arg);
                                      }
                                      internalOpenDialog(data, isNew, dependingElementId, mode, null);
                                  }
                              };
                              if (editOptions == null) {
                                  internalOpenDialog(editableData, isNew, dependingElementId, mode, null);
                              } else if (editOptions.getOptions().getOptions().size() == 1) {
                                  m_handler.m_controller.prepareForEdit(
                                      elementId,
                                      editOptions.getOptions().getOptions().get(0).getValue(),
                                      editCallBack);
                              } else {
                                  CmsOptionDialog dialog = new CmsOptionDialog(
                                      Messages.get().key(Messages.GUI_EDIT_HANDLER_SELECT_EDIT_OPTION_0),
                                      editOptions.getOptions(),
                                      editOptions.getInfo(),
                                      new I_CmsSimpleCallback<String>() {
  
                                          public void execute(String arg) {
  
                                              m_handler.m_controller.prepareForEdit(elementId, arg, editCallBack);
                                          }
                                      });
                                  dialog.addDialogClose(new Command() {
  
                                      public void execute() {
  
                                          cancelEdit();
                                      }
                                  });
                                  dialog.center();
                              }
                          }
                      });
              } else {
                  internalOpenDialog(editableData, isNew, dependingElementId, mode, handlerDataForNew);
              }
  
          } else {
              CmsDebugLog.getInstance().printLine("Editor is already being opened.");
          }
      }