code: protected void doCreate()
      {
          getDetailForm().commit();
          Object newObject = null;
          try
          {
              newObject = createNewEntity(getDetailForm().getFormObject());
              // select row only if user hasn't made another selection in
              // table and this commit is triggered by the save-changes
              // dialog and if not in quick add mode
              if (newObject != null && !getTableWidget().hasSelection())
              {
                  if (getTableWidget().selectRowObject(newObject, null) == -1)
                  {
                      // select row wasn't succesfull, maybe search string
                      // was filled in?
                      setSearchString(null);
                      getTableWidget().selectRowObject(newObject, null);
                  }
              }
          }
          catch (RuntimeException e)
          {
              Object changedFormObject = getDetailForm().getFormObject();
              newRow(null);
              ObjectUtils.mapObjectOnFormModel(getDetailForm().getFormModel(), changedFormObject);
              throw e;
              // make form dirty, show error in messagepane and throw exception to display error dialog
          }
      }
docs: Creates a new data object according to following steps:
  <p/>
  <ol>
  <li>form commit</li>
  <li>formObject sent to back-end</li>
  <li>back-end creates item</li>
  <li>back-end returns new item to client</li>
  <li>new item is selected in dataEditor if possible</li>
  </ol>