diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/DynamicDatebox.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/DynamicDatebox.java index aab77d165..e7504f610 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/DynamicDatebox.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/DynamicDatebox.java @@ -230,7 +230,7 @@ public class DynamicDatebox extends GenericForwardComposer { setter.set(date); } - private void updateComponents() { + public void updateComponents() { getDateTextBox().setValue(asString(getter.get())); } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderElementTreeController.java b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderElementTreeController.java index 7d320c678..b7f800151 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderElementTreeController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/orders/OrderElementTreeController.java @@ -413,6 +413,7 @@ public class OrderElementTreeController extends TreeController { updateColumnsFor(currentOrderElement); } + @Override protected void addCodeCell(final OrderElement orderElement) { Textbox textBoxCode = new Textbox(); Util.bind(textBoxCode, new Util.Getter() { @@ -444,6 +445,10 @@ public class OrderElementTreeController extends TreeController { } addCell(textBoxCode); + putCodeTextbox(orderElement, textBoxCode); + + // FIXME remove this map as it's already in + // org.libreplan.web.tree.TreeController.Renderer.codeTextboxByElement orderElementCodeTextboxes.put(orderElement, textBoxCode); } @@ -467,6 +472,7 @@ public class OrderElementTreeController extends TreeController { dinamicDatebox.setDisabled(true); } addDateCell(dinamicDatebox, _("init")); + putInitDateDynamicDatebox(currentOrderElement, dinamicDatebox); } void addEndDateCell(final OrderElement currentOrderElement) { @@ -488,6 +494,7 @@ public class OrderElementTreeController extends TreeController { dinamicDatebox.setDisabled(true); } addDateCell(dinamicDatebox, _("end")); + putEndDateDynamicDatebox(currentOrderElement, dinamicDatebox); } @Override @@ -779,4 +786,16 @@ public class OrderElementTreeController extends TreeController { }; } + @Override + protected ICodeHandler getCodeHandler() { + return new ICodeHandler() { + + @Override + public String getCodeFor(OrderElement element) { + return element.getCode(); + } + + }; + } + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/templates/TemplatesTreeController.java b/libreplan-webapp/src/main/java/org/libreplan/web/templates/TemplatesTreeController.java index 1b38bbbc4..61d2f085a 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/templates/TemplatesTreeController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/templates/TemplatesTreeController.java @@ -294,6 +294,19 @@ public class TemplatesTreeController extends }; } + @Override + protected ICodeHandler getCodeHandler() { + return new ICodeHandler() { + + @Override + public String getCodeFor(OrderElementTemplate element) { + // Empty as OrderElementTemplate doesn't have code + return ""; + } + + }; + } + public void refreshRow(Treeitem item) { try { OrderElementTemplate orderElement = (OrderElementTemplate) item diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/tree/TreeController.java b/libreplan-webapp/src/main/java/org/libreplan/web/tree/TreeController.java index 718db04cd..a25735d1b 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/tree/TreeController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/tree/TreeController.java @@ -578,12 +578,18 @@ public abstract class TreeController> extends } + private Map codeTextboxByElement = new HashMap(); + private Map nameTextboxByElement = new HashMap(); private Map hoursIntBoxByElement = new HashMap(); private Map budgetDecimalboxByElement = new HashMap(); + private Map initDateDynamicDateboxByElement = new HashMap(); + + private Map endDateDynamicDateboxByElement = new HashMap(); + private KeyboardNavigationHandler navigationHandler = new KeyboardNavigationHandler(); private Treerow currentTreeRow; @@ -599,10 +605,24 @@ public abstract class TreeController> extends return nameTextboxByElement.get(key); } + protected void putCodeTextbox(T key, Textbox textbox) { + codeTextboxByElement.put(key, textbox); + } + protected void putNameTextbox(T key, Textbox textbox) { nameTextboxByElement.put(key, textbox); } + protected void putInitDateDynamicDatebox(T key, + DynamicDatebox dynamicDatebox) { + initDateDynamicDateboxByElement.put(key, dynamicDatebox); + } + + protected void putEndDateDynamicDatebox(T key, + DynamicDatebox dynamicDatebox) { + endDateDynamicDateboxByElement.put(key, dynamicDatebox); + } + protected void registerFocusEvent(final InputElement inputElement) { inputElement.addEventListener(Events.ON_FOCUS, new EventListener() { @@ -850,9 +870,19 @@ public abstract class TreeController> extends } public void updateColumnsFor(T element) { + updateCodeFor(element); updateNameFor(element); updateHoursFor(element); updateBudgetFor(element); + updateInitDateFor(element); + updateEndDateFor(element); + } + + private void updateCodeFor(T element) { + if (!readOnly) { + Textbox textbox = codeTextboxByElement.get(element); + textbox.setValue(getCodeHandler().getCodeFor(element)); + } } private void updateBudgetFor(T element) { @@ -870,6 +900,22 @@ public abstract class TreeController> extends } } + private void updateInitDateFor(T element) { + if (!readOnly) { + DynamicDatebox dynamicDatebox = initDateDynamicDateboxByElement + .get(element); + dynamicDatebox.updateComponents(); + } + } + + private void updateEndDateFor(T element) { + if (!readOnly) { + DynamicDatebox dynamicDatebox = endDateDynamicDateboxByElement + .get(element); + dynamicDatebox.updateComponents(); + } + } + public void refreshBudgetValueForThisNodeAndParents(T node) { List nodeAndItsParents = getModel().getParents(node); nodeAndItsParents.add(node); @@ -1196,6 +1242,14 @@ public abstract class TreeController> extends protected abstract IBudgetHandler getBudgetHandler(); + public interface ICodeHandler { + + String getCodeFor(T element); + + } + + protected abstract ICodeHandler getCodeHandler(); + public interface INameHandler { String getNameFor(T element);