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 6b058033a..f6337910c 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 @@ -28,6 +28,8 @@ 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.event.KeyEvent; +import org.zkoss.zk.ui.event.MouseEvent; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Bandbox; import org.zkoss.zul.Checkbox; @@ -130,9 +132,6 @@ 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()); @@ -406,6 +405,16 @@ public class CriterionsController extends GenericForwardComposer { bd.open(); } + public void onCtrlKey(Event event) { + Bandbox bd = (Bandbox) event.getTarget(); + Listbox listbox = (Listbox) bd.getFirstChild().getFirstChild(); + List items = listbox.getItems(); + if (!items.isEmpty()) { + listbox.setSelectedIndex(0); + items.get(0).setFocus(true); + } + } + private ListModel getSubModel(String text) { List list = new ArrayList(); text = text.trim().toLowerCase(); @@ -418,4 +427,29 @@ public class CriterionsController extends GenericForwardComposer { } return new SimpleListModel(list); } + + public void onOK(KeyEvent event) { + Component listitem = event.getReference(); + if (listitem instanceof Listitem) { + Bandbox bandbox = (Bandbox) listitem.getParent().getParent() + .getParent(); + CriterionSatisfactionDTO criterionSatisfactionDTO = (CriterionSatisfactionDTO) ((Row) bandbox + .getParent().getParent()).getValue(); + + selectCriterionAndType((Listitem) listitem, bandbox, + criterionSatisfactionDTO); + + bandbox.close(); + } + } + + public void onClick(MouseEvent event) { + Component listitem = event.getTarget(); + if (listitem instanceof Listitem) { + Bandbox bandbox = (Bandbox) listitem.getParent().getParent() + .getParent(); + bandbox.close(); + } + } + } diff --git a/navalplanner-webapp/src/main/webapp/resources/worker/_criterions.zul b/navalplanner-webapp/src/main/webapp/resources/worker/_criterions.zul index 77178779e..1806dd97d 100644 --- a/navalplanner-webapp/src/main/webapp/resources/worker/_criterions.zul +++ b/navalplanner-webapp/src/main/webapp/resources/worker/_criterions.zul @@ -26,17 +26,20 @@ + value = "@{criterionSatisfactionDTO.criterionAndType}" + ctrlKeys="#down" onCtrlKey="assignedCriterionsController.onCtrlKey(event);"> + self.parent.parent,self.parent.parent.parent.parent.value);" + onOk="assignedCriterionsController.onOK(event);"> - +