public void onOk() { final NormalFilterModel modelFilter = new NormalFilterModel(); for (RowModel row : rows) { modelFilter.add(row.getModel()); } org.zkoss.zk.ui.event.Events.postEvent( new Event("onSave", self, clearFilterModel(modelFilter))); self.detach(); }
@Override @SuppressWarnings("unchecked") public void doAfterCompose(final org.zkoss.zk.ui.Component comp) throws Exception { super.doAfterCompose(comp); comp.setAttribute("ctl", this, Component.SPACE_SCOPE); // save masterController masterController = (DLListboxExtController) arg.get("master"); // save model, which is setted in the main model final NormalFilterModel modelFilter = (NormalFilterModel) arg.get(DLNormalFilterKeys.FILTERS.toString()); // load informations about columns and data types modelTemplates = (NormalFilterModel) arg.get(DLNormalFilterKeys.TEMPLATES.toString()); // sort by column labels java.util.Collections.sort( modelTemplates, new java.util.Comparator<NormalFilterUnitModel>() { public int compare(final NormalFilterUnitModel unit1, final NormalFilterUnitModel unit2) { return unit1.getLabel().compareTo(unit2.getLabel()); } }); for (NormalFilterUnitModel unit : modelFilter) { // if column was added manally, template might not be set - enforce template if (unit.getTemplate() == null) unit.setTemplate(modelTemplates.findUnitModelByColumnName(unit.getColumn())); rows.add(new RowModel(unit)); } }
@SuppressWarnings("unchecked") public void onAdd() { final NormalFilterUnitModel unit = new NormalFilterUnitModel(); unit.update(modelTemplates.get(0)); rows.add(new RowModel(unit)); ZKBinderHelper.loadComponent(self); }
/** * Removes invalid units from the model * * @param model filter model * @return model valid filter model */ protected NormalFilterModel clearFilterModel(final NormalFilterModel model) { for (final Iterator<NormalFilterUnitModel> it = model.iterator(); it.hasNext(); ) { final NormalFilterUnitModel unit = it.next(); if (unit.getColumn() == null || unit.getColumn().length() == 0 || unit.getOperator() == null || !isValuesValid(unit)) { it.remove(); continue; } } return model; }