/**
   * Обработчик события сохранения 'save' В зависимости от состояния выполняет сохранение
   * существующего или создание нового объекта.
   *
   * <p>Метод используется в случае использования стандартного сервиса работы с данными
   * JepStandardService. При реализации в прикладном модуле собственного сервиса необходимо в
   * презентере-наследнике прикладного модуля реализовать перекрывающий метод onSave().
   */
  public void onSave(SaveEvent event) {
    if (fields.isValid()) {
      JepRecord formProperties = fields.getValues();

      logger.debug(this.getClass() + ".onSave(): formProperties = " + formProperties);

      // Для подчинённых объектов добавляется foreignKey.
      if (JepScopeStack.instance.size() > 1 || !JepScopeStack.instance.peek().isMainActive()) {
        JepClientUtil.addForeignKey(formProperties);
      }

      // Для режима редактирования текущую запись
      // необходимо дополнить или переписать значениями с формы.
      if (EDIT.equals(_workstate)) {
        JepRecord updatedRecord = new JepRecord(currentRecord);
        updatedRecord.update(formProperties);
        formProperties = updatedRecord;
      }

      // Если не выполнены первоначальные условия проверки, то выходим из сохранения.
      if (!beforeSave(formProperties)) return;

      eventBus.setSaveButtonEnabled(false);

      if (CREATE.equals(_workstate)) {
        saveOnCreate(formProperties);
      } else if (EDIT.equals(_workstate)) {
        saveOnEdit(formProperties);
      }

    } else {
      messageBox.showError(clientFactory.getTexts().errors_dialog_form_incorrectInputData());
    }
  }
 /**
  * {@inheritDoc}<br>
  * Обрабатываем лишь специфичные для детальной формы состояния.
  */
 @Override
 protected boolean isAcceptableWorkstate(WorkstateEnum workstate) {
   return SEARCH.equals(workstate)
       || CREATE.equals(workstate)
       || VIEW_DETAILS.equals(workstate)
       || EDIT.equals(workstate);
 }
示例#3
0
  @Override
  public void actionPerformed(ActionEvent e) {
    if (EDIT.equals(e.getActionCommand())) {
      // The user has clicked the cell, so
      // bring up the dialog.

      RMSetterDialog<T> dialog = new RMSetterDialog<T>();
      dialog.setTitle(title);
      dialog.setButtonEnabler(buttonEnabler);
      T result = dialog.showDialog(button, remoteConfig, panelClass, value);
      if ((result != null) && !result.toString().equals(value.toString())) {
        value = result;
        fireEditingStopped();
        // Fire any list selection listeners by clearing and reselecting cell
        int row = table.getSelectedRow();
        int col = table.getSelectedColumn();
        if (row >= 0 && col >= 0) {
          table.clearSelection();
          table.setRowSelectionInterval(row, row);
          table.setColumnSelectionInterval(col, col);
        }
      } else {
        fireEditingCanceled();
      }
    }
  }
 /**
  * Обработчик события Удалить.<br>
  * Метод вызывает диалог подтверждения удаления и, в обработчике ConfirmCallback, взывает
  * обработчик непосредственно удаления {@link #onDeleteConfirmation(Boolean, JepRecord)
  * onDeleteConfirmation}.
  *
  * @param event событие Удалить
  */
 public void onDoDelete(DoDeleteEvent event) {
   // Проверим состояние, чтобы обеспечить срабатывание данного обработчика только при активной
   // детальной форме.
   if (VIEW_DETAILS.equals(_workstate) || EDIT.equals(_workstate)) {
     messageBox.confirmDeletion(
         false,
         new ConfirmCallback() {
           public void onConfirm(Boolean yes) {
             onDeleteConfirmation(yes, currentRecord);
           }
         });
   }
 }
  protected void onChangeWorkstate(WorkstateEnum workstate) {
    fields.changeWorkstate(workstate);

    if (VIEW_DETAILS.equals(workstate)) {
      fields.setValues(currentRecord);
      updateScope(workstate);
    } else if (EDIT.equals(workstate)) {
      fields.setValues(currentRecord);
      updateScope(workstate);
    } else if (CREATE.equals(workstate)) {
      fields.clear();
      resetScope();
    } else if (SEARCH.equals(workstate)) {
      if (searchTemplate != null) {
        // Если есть сохраненные поисковые параметры, то восстановим их.
        fields.setValues(searchTemplate);
      } else {
        // Очистим поля, если сохраненные поисковые параметры отсутствуют.
        fields.clear();
      }

      resetScope();
    }
  }
 /**
  * Обработчик нового состояния.
  *
  * @param newWorkstate новое состояние
  */
 protected void onChangeWorkstate(WorkstateEnum newWorkstate) {
   if (EDIT.equals(newWorkstate)) {
     resetEditableCard();
   }
   super.onChangeWorkstate(newWorkstate);
 }