From 679d5a8c49174c0b41c17655c30e11d29bb1417c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Sun, 3 Jan 2010 17:18:32 +0100 Subject: [PATCH] ItEr41S20CUGravacionModelosUnidadesTraballoItEr40S25: Adding edition form with save and cancel buttons --- .../entities/OrderElementTemplate.java | 20 ++++++ .../web/templates/IOrderTemplatesModel.java | 6 +- .../templates/OrderTemplatesController.java | 47 ++++++++++++- .../web/templates/OrderTemplatesModel.java | 18 ++++- .../src/main/webapp/templates/_edition.zul | 67 +++++++++++++++++++ .../src/main/webapp/templates/templates.zul | 1 + 6 files changed, 154 insertions(+), 5 deletions(-) create mode 100644 navalplanner-webapp/src/main/webapp/templates/_edition.zul diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderElementTemplate.java b/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderElementTemplate.java index d9759ab6f..b9ebe50c9 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderElementTemplate.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/templates/entities/OrderElementTemplate.java @@ -113,15 +113,35 @@ public abstract class OrderElementTemplate extends BaseEntity { return startAsDaysFromBeginning; } + public void setStartAsDaysFromBeginning(Integer days) { + this.startAsDaysFromBeginning = days; + } + + public void setDeadlineAsDaysFromBeginning(Integer days) { + this.deadlineAsDaysFromBeginning = days; + } + public String getCode() { return getInfoComponent().getCode(); } + public void setCode(String code) { + getInfoComponent().setCode(code); + } + public String getDescription() { return getInfoComponent().getDescription(); } + public void setDescription(String description) { + getInfoComponent().setDescription(description); + } + public String getName() { return getInfoComponent().getName(); } + + public void setName(String name) { + getInfoComponent().setName(name); + } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/IOrderTemplatesModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/IOrderTemplatesModel.java index 33b4c5539..30acba987 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/IOrderTemplatesModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/IOrderTemplatesModel.java @@ -32,5 +32,9 @@ public interface IOrderTemplatesModel { List getTemplates(); - OrderElementTemplate createTemplateFrom(OrderElement orderElement); + void createTemplateFrom(OrderElement orderElement); + + OrderElementTemplate getTemplate(); + + void confirmSave(); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesController.java index bf36443d7..e9ea90456 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesController.java @@ -19,17 +19,21 @@ */ package org.navalplanner.web.templates; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.navalplanner.business.orders.entities.OrderElement; import org.navalplanner.business.templates.entities.OrderElementTemplate; import org.navalplanner.web.common.OnlyOneVisible; +import org.navalplanner.web.common.Util; import org.navalplanner.web.common.entrypoints.IURLHandlerRegistry; import org.navalplanner.web.common.entrypoints.URLHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Window; @@ -49,6 +53,8 @@ public class OrderTemplatesController extends GenericForwardComposer implements private Window listWindow; + private Window editWindow; + @Autowired private IURLHandlerRegistry handlerRegistry; @@ -63,9 +69,48 @@ public class OrderTemplatesController extends GenericForwardComposer implements return cachedOnlyOneVisible; } + public OrderElementTemplate getTemplate() { + return model.getTemplate(); + } + @Override public void goToCreateTemplateFrom(OrderElement orderElement) { - OrderElementTemplate template = model.createTemplateFrom(orderElement); + model.createTemplateFrom(orderElement); + show(getEditWindow()); + } + + private void show(Component window) { + Util.reloadBindings(window); + getVisibility().showOnly(window); + } + + private Component getEditWindow() { + if (editWindow == null) { + editWindow = (Window) Executions.createComponents( + "/templates/_edition.zul", self, topId("editWindow")); + Util.createBindingsFor(editWindow); + Util.reloadBindings(editWindow); + } + return editWindow; + } + + public void saveAndExit() { + model.confirmSave(); + show(listWindow); + } + + public void cancel() { + show(listWindow); + } + + public void saveAndContinue() { + model.confirmSave(); + } + + private Map topId(String value) { + Map arguments = new HashMap(); + arguments.put("top_id", value); + return arguments; } @Override diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java index 812a6697e..83900a62c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/templates/OrderTemplatesModel.java @@ -45,19 +45,31 @@ public class OrderTemplatesModel implements IOrderTemplatesModel { @Autowired private IOrderElementTemplateDAO dao; + private OrderElementTemplate template; + @Override public List getTemplates() { return dao.list(OrderElementTemplate.class); } + @Override + public OrderElementTemplate getTemplate() { + return template; + } + + @Override + @Transactional + public void confirmSave() { + dao.save(template); + } + @Override @Transactional(readOnly = true) - public OrderElementTemplate createTemplateFrom(OrderElement orderElement) { + public void createTemplateFrom(OrderElement orderElement) { loadParentsInOrderToAvoidProxies(orderElement); OrderElement reloaded = orderElementDAO .findExistingEntity(orderElement.getId()); - OrderElementTemplate result = reloaded.createTemplate(); - return result; + template = reloaded.createTemplate(); } private void loadParentsInOrderToAvoidProxies(OrderElement orderElement) { diff --git a/navalplanner-webapp/src/main/webapp/templates/_edition.zul b/navalplanner-webapp/src/main/webapp/templates/_edition.zul new file mode 100644 index 000000000..38af1914c --- /dev/null +++ b/navalplanner-webapp/src/main/webapp/templates/_edition.zul @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +