package com.idega.idegaweb.egov.bpm.report.presentation; import is.idega.idegaweb.egov.bpm.IWBundleStarter; import is.idega.idegaweb.egov.cases.presentation.CasesSearcher; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import com.idega.idegaweb.IWResourceBundle; import com.idega.jbpm.bean.VariableInstanceType; import com.idega.jbpm.data.VariableInstanceQuerier; import com.idega.presentation.CSSSpacer; import com.idega.presentation.IWContext; import com.idega.presentation.Layer; import com.idega.presentation.ui.GenericButton; import com.idega.presentation.ui.InterfaceObject; import com.idega.presentation.ui.TextInput; import com.idega.util.StringUtil; import com.idega.util.expression.ELUtil; public abstract class CasesReportFilter extends CasesSearcher { @Autowired private VariableInstanceQuerier variablesQuerier; @Override protected abstract void addHeader(); protected abstract void addStyleSheets(IWContext iwc); protected abstract void addJavaScript(IWContext iwc, String containerId); protected abstract String getPersonalIdFieldName(); @Override public abstract void main(IWContext iwc) throws Exception; protected abstract List<String> getProcesses(); protected abstract String getReportType(); protected abstract String getFilterAction(); protected abstract String getExportAction(); @Override protected void present(IWContext iwc) throws Exception { addInputs(iwc); addButtons(iwc); } protected void addButtons(IWContext iwc) { inputsContainer.add(new CSSSpacer()); Layer buttonsContainer = getContainer("buttonLayer"); inputsContainer.add(buttonsContainer); IWResourceBundle iwrb = iwc.getIWMainApplication().getBundle(IWBundleStarter.IW_BUNDLE_IDENTIFIER).getResourceBundle(iwc); GenericButton filter = new GenericButton(iwrb.getLocalizedString("filter", "Filter")); buttonsContainer.add(filter); filter.setOnClick(getFilterAction()); GenericButton export = new GenericButton(iwrb.getLocalizedString("export_search_results", "Export")); export.setOnClick(getExportAction()); buttonsContainer.add(export); GenericButton clear = new GenericButton(iwrb.getLocalizedString("clear_search_results", "Clear")); clear.setOnClick(getClearAction()); buttonsContainer.add(clear); } protected String getClearAction() { return "clearSearchForCases(null);"; } protected abstract void addInputs(IWContext iwc); protected void addHiddenInput(String varName) { addHiddenInput(varName, null); } protected void addHiddenInput(String varName, String value) { TextInput input = getTextInput(varName, null); if (value != null) input.setValue(value); Layer hiddenElement = addFormItem(inputsContainer, null, input, VariableInstanceType.STRING.getTypeKeys().get(0), false); hiddenElement.setStyleAttribute("display", "none"); } protected void addFormItem(Layer layer, String localizedLabelText, InterfaceObject input, String type) { addFormItem(layer, localizedLabelText, input, type, Boolean.FALSE); } protected Layer addFormItem(Layer layer, String localizedLabelText, InterfaceObject input, String type, Boolean flexibleSearh) { input.getId(); if (!StringUtil.isEmpty(type)) { input.setName(input.getName().concat("@").concat(type)); } if (flexibleSearh != null) { input.setName(input.getName().concat("@").concat(String.valueOf(flexibleSearh))); } input.setStyleClass(getFormItemStyleClass()); return super.addFormItem(layer, localizedLabelText, input); } protected abstract String getFormItemStyleClass(); protected VariableInstanceQuerier getVariablesQuerier() { if (variablesQuerier == null) ELUtil.getInstance().autowire(this); return variablesQuerier; } }