Package pl.net.bluesoft.rnd.processtool.ui.buttons

Source Code of pl.net.bluesoft.rnd.processtool.ui.buttons.StandardValidatingButton$PerformedActionParams

package pl.net.bluesoft.rnd.processtool.ui.buttons;

import com.vaadin.ui.Button;
import pl.net.bluesoft.rnd.processtool.model.BpmTask;
import pl.net.bluesoft.rnd.processtool.model.ProcessInstance;
import pl.net.bluesoft.rnd.processtool.model.UserData;
import pl.net.bluesoft.rnd.processtool.model.config.ProcessStateAction;
import pl.net.bluesoft.rnd.processtool.ui.WidgetContextSupport;
import pl.net.bluesoft.rnd.processtool.ui.buttons.dialog.DialogWindow;
import pl.net.bluesoft.rnd.processtool.ui.buttons.dialog.SkipSavingDialog;
import pl.net.bluesoft.rnd.processtool.ui.widgets.ProcessToolDataWidget;
import pl.net.bluesoft.rnd.processtool.ui.widgets.annotations.AliasName;

import java.util.Collection;
import java.util.Map;
import java.util.logging.Logger;

/**
* @author tlipski@bluesoft.net.pl
* @author amichalak@bluesoft.net.pl
*/

@AliasName(name = "Default")
public class StandardValidatingButton extends BaseProcessToolVaadinActionButton {
    protected Logger logger = Logger.getLogger(StandardValidatingButton.class.getName());
    private ProcessStateAction psa;

    protected static class PerformedActionParams {
    private WidgetContextSupport support;
    private Map<ProcessToolDataWidget, Collection<String>> validationErrors;
    private boolean saveData;

    public PerformedActionParams(WidgetContextSupport support, Map<ProcessToolDataWidget, Collection<String>> validationErrors, boolean saveData) {
      this.support = support;
      this.validationErrors = validationErrors;
      this.saveData = saveData;
    }

    public WidgetContextSupport getSupport() {
      return support;
    }

    public Map<ProcessToolDataWidget, Collection<String>> getValidationErrors() {
      return validationErrors;
    }

    public boolean isSaveData() {
      return saveData;
    }
  }

    @Override
    protected void performAction(WidgetContextSupport support) {
        showValidationErrorsOrSave(support, support.getWidgetsErrors(task, false));
    }

    protected void showValidationErrorsOrSave(WidgetContextSupport support, Map<ProcessToolDataWidget, Collection<String>> validationErrors) {
        if (validationErrors.isEmpty()) {
      doShowValidationErrorsOrSave(new PerformedActionParams(support, validationErrors, true));
        }
        else if (skipSaving) {
      showSkipSavingDialog(new PerformedActionParams(support, validationErrors, false));
        }
        else {
      support.displayValidationErrors(validationErrors);
        }
    }

  protected void doShowValidationErrorsOrSave(PerformedActionParams params) {
    finalizeAction(params.isSaveData());
  }

  protected void finalizeAction(boolean saveData) {
    if (saveData) {
      invokeSaveTask();
    }
    else {
      invokeSaveTaskWithoutData();
    }
    invokeBpmTransition();
    callback.actionPerformed(definition);
  }

    @Override
    public boolean isVisible(BpmTask task) {
        return true//To change body of implemented methods use File | Settings | File Templates.
    }

    @Override
    public boolean isEnabled(BpmTask task) {
        return true//To change body of implemented methods use File | Settings | File Templates.
    }

    @Override
    public void changeButton(Button button) {

    }

    @Override
    public String getLabel(BpmTask task) {
        return label;
    }

    @Override
    public String getDescription(BpmTask task) {
        return description;  //To change body of implemented methods use File | Settings | File Templates.
    }

    @Override
    public void setLoggedUser(UserData userData) {
       //nothing
    }

    @Override
    public boolean isAutoHide() {
        return autoHide;
    }

    @Override
    public void setDefinition(ProcessStateAction psa) {
        this.psa = psa;
    }

    @Override
  public void saveData(BpmTask task) {
    super.saveData(task);
    ProcessInstance pi = task.getProcessInstance();
   
    pi.setSimpleAttribute("commentAdded", "false");
  }

  private void showSkipSavingDialog(final PerformedActionParams params) {
    SkipSavingDialog dialog = showDialog(new SkipSavingDialog(params.getValidationErrors()));
    dialog.getSaveIgnoringErrorsButton().addListener(new Button.ClickListener() {
      @Override
      public void buttonClick(Button.ClickEvent clickEvent) {
        handleSaveIgnoringErrorsButtonClick(params);
      }
    });
  }
 
  protected <DialogType extends DialogWindow> DialogType showDialog(DialogType dialog) {
    dialog.setI18NSource(messageSource);
    dialog.buildLayout();
    application.getMainWindow().addWindow(dialog);
    return dialog;
  }

  protected void handleSaveIgnoringErrorsButtonClick(PerformedActionParams params) {
    doShowValidationErrorsOrSave(params);
  }
}
TOP

Related Classes of pl.net.bluesoft.rnd.processtool.ui.buttons.StandardValidatingButton$PerformedActionParams

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.