code: @Override
      public void executeListMultiActions() throws CmsRuntimeException {
  
          if (getParamListAction().equals(LIST_MACTION_DELETE)) {
              // execute the delete multiaction
              List<String> removedItems = new ArrayList<String>();
              try {
                  Iterator<CmsListItem> itItems = getSelectedItems().iterator();
                  while (itItems.hasNext()) {
                      CmsListItem listItem = itItems.next();
                      CmsUUID pId = new CmsUUID(listItem.getId());
                      getCms().deleteProject(pId);
                      removedItems.add(listItem.getId());
                  }
              } catch (CmsException e) {
                  throw new CmsRuntimeException(Messages.get().container(Messages.ERR_DELETE_SELECTED_PROJECTS_0), e);
              }
          } else if (getParamListAction().equals(LIST_MACTION_UNLOCK)) {
              // execute the unlock multiaction
              try {
                  Iterator<CmsListItem> itItems = getSelectedItems().iterator();
                  while (itItems.hasNext()) {
                      CmsListItem listItem = itItems.next();
                      CmsUUID pId = new CmsUUID(listItem.getId());
                      getCms().unlockProject(pId);
                  }
              } catch (CmsException e) {
                  throw new CmsRuntimeException(Messages.get().container(Messages.ERR_UNLOCK_SELECTED_PROJECTS_0), e);
              }
          } else {
              throwListUnsupportedActionException();
          }
          listSave();
      }
docs: This method should handle every defined list multi action,
  by comparing <code>{@link #getParamListAction()}</code> with the id
  of the action to execute.<p>
  
  @throws CmsRuntimeException to signal that an action is not supported