code: @Override
      protected boolean performDialogOperation() throws CmsException {
  
          // check if the current resource is a folder for single operation
          boolean isFolder = isOperationOnFolder();
          // on folder undo changes or multi operation display "please wait" screen, not for simple file undo changes
          if ((isMultiOperation() || isFolder) && !DIALOG_WAIT.equals(getParamAction())) {
              // return false, this will trigger the "please wait" screen
              return false;
          }
  
          // get the flag if the undo changes is recursive from request parameter
          boolean undoRecursive = Boolean.valueOf(getParamRecursive()).booleanValue();
          boolean undoMove = Boolean.valueOf(getParamMove()).booleanValue();
  
          CmsResourceUndoMode mode = CmsResource.UNDO_CONTENT;
          if (undoRecursive) {
              mode = CmsResource.UNDO_CONTENT_RECURSIVE;
          }
          if (undoMove) {
              mode = mode.includeMove();
          }
  
          Iterator<String> i = getResourceList().iterator();
          // iterate the resources to delete
          while (i.hasNext()) {
              String resName = i.next();
              try {
                  // lock resource if autolock is enabled
                  checkLock(resName);
                  // undo changes on the resource
                  getCms().undoChanges(resName, mode);
              } catch (CmsException e) {
                  if (isMultiOperation()) {
                      // collect exceptions to create a detailed output
                      addMultiOperationException(e);
                  } else {
                      // for single operation, throw the exception immediately
                      throw e;
                  }
              }
          }
          // check if exceptions occurred
          checkMultiOperationException(Messages.get(), Messages.ERR_UNDO_CHANGES_MULTI_0);
  
          return true;
      }
docs: Performs the undo changes operation on a resource.<p>
  
  @return true, if the changes on a resource were undone, otherwise false
  @throws CmsException if undo changes is not successful