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 @@
-