package com.qcadoo.mes.materialFlowResources.hooks;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.qcadoo.mes.materialFlowResources.constants.MaterialFlowResourcesConstants;
import com.qcadoo.mes.materialFlowResources.constants.PalletBalanceFields;
import com.qcadoo.model.api.Entity;
import com.qcadoo.view.api.ViewDefinitionState;
import com.qcadoo.view.api.components.FormComponent;
import com.qcadoo.view.api.components.WindowComponent;
import com.qcadoo.view.api.ribbon.RibbonActionItem;
import com.qcadoo.view.api.ribbon.RibbonGroup;
import com.qcadoo.view.api.utils.NumberGeneratorService;
@Service
public class PalletBalanceDetailsHooks {
@Autowired
private NumberGeneratorService numberGeneratorService;
public void onBeforeRender(final ViewDefinitionState view) {
numberGeneratorService.generateAndInsertNumber(view, MaterialFlowResourcesConstants.PLUGIN_IDENTIFIER,
MaterialFlowResourcesConstants.MODEL_PALLET_BALANCE, "form", PalletBalanceFields.NUMBER);
FormComponent form = (FormComponent) view.getComponentByReference("form");
Entity palletBalance = form.getPersistedEntityWithIncludedFormValues();
boolean generated = palletBalance.getBooleanField(PalletBalanceFields.GENERATED);
Date dateTo = palletBalance.getDateField(PalletBalanceFields.DATE_TO);
if (dateTo == null) {
palletBalance.setField(PalletBalanceFields.DATE_TO, new Date());
form.setEntity(palletBalance);
}
changeRibbonState(view, generated);
form.setFormEnabled(!generated);
}
private void changeRibbonState(final ViewDefinitionState view, final boolean generated) {
WindowComponent window = (WindowComponent) view.getComponentByReference("window");
RibbonGroup reportGroup = window.getRibbon().getGroupByName("report");
RibbonActionItem generate = reportGroup.getItemByName("generate");
RibbonActionItem print = reportGroup.getItemByName("print");
generate.setEnabled(!generated);
generate.requestUpdate(true);
print.setEnabled(generated);
print.requestUpdate(true);
}
}