diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/CriterionsController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/CriterionsController.java index d28aca3e0..04f0cfe16 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/CriterionsController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/worker/CriterionsController.java @@ -14,6 +14,7 @@ import java.util.List; import org.hibernate.validator.InvalidValue; import org.navalplanner.business.common.exceptions.ValidationException; +import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.CriterionSatisfaction; import org.navalplanner.business.resources.entities.CriterionWithItsType; import org.navalplanner.business.resources.entities.Worker; @@ -25,6 +26,8 @@ import org.navalplanner.web.common.MessagesForUser; import org.navalplanner.web.common.Util; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.WrongValueException; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.InputEvent; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Bandbox; import org.zkoss.zul.Column; @@ -34,10 +37,13 @@ import org.zkoss.zul.Constraint; import org.zkoss.zul.Datebox; import org.zkoss.zul.Grid; import org.zkoss.zul.Hbox; +import org.zkoss.zul.ListModel; import org.zkoss.zul.ListModelExt; +import org.zkoss.zul.Listbox; import org.zkoss.zul.Listitem; import org.zkoss.zul.Row; import org.zkoss.zul.Rows; +import org.zkoss.zul.SimpleListModel; /** * Controller for {@link Criterion} worker
@@ -125,6 +131,9 @@ public class CriterionsController extends GenericForwardComposer { public void selectCriterionAndType(Listitem item,Bandbox bandbox, CriterionSatisfactionDTO criterionSatisfactionDTO){ + bandbox.close(); + Listbox listbox = (Listbox) bandbox.getFirstChild().getFirstChild(); + listbox.setModel(new SimpleListModel(getCriterionWithItsTypes())); if(item != null){ CriterionWithItsType criterionAndType = (CriterionWithItsType)item.getValue(); bandbox.setValue(criterionAndType.getNameAndType()); @@ -132,7 +141,6 @@ public class CriterionsController extends GenericForwardComposer { }else{ bandbox.setValue(""); } - bandbox.close(); } public void setCriterionWithItsType(CriterionWithItsType criterionAndType, @@ -389,4 +397,26 @@ public class CriterionsController extends GenericForwardComposer { public void validateConstraints() { ConstraintChecker.isValid(self); } + + public void onChangingText(Event event) { + Bandbox bd = (Bandbox) event.getTarget(); + final String inputText = ((InputEvent) event).getValue(); + Listbox listbox = (Listbox) bd.getFirstChild().getFirstChild(); + listbox.setModel(getSubModel(inputText)); + listbox.invalidate(); + bd.open(); + } + + private ListModel getSubModel(String text) { + List list = new ArrayList(); + text = text.trim().toLowerCase(); + for (CriterionWithItsType criterion : this.getCriterionWithItsTypes()) { + if ((criterion.getCriterion().getName().toLowerCase() + .contains(text) || criterion.getType().getName() + .toLowerCase().contains(text))) { + list.add(criterion); + } + } + return new SimpleListModel(list); + } } diff --git a/navalplanner-webapp/src/main/webapp/resources/worker/_criterions.zul b/navalplanner-webapp/src/main/webapp/resources/worker/_criterions.zul index ecf7978cf..cf13dd7bd 100644 --- a/navalplanner-webapp/src/main/webapp/resources/worker/_criterions.zul +++ b/navalplanner-webapp/src/main/webapp/resources/worker/_criterions.zul @@ -25,8 +25,8 @@ -