ItEr41S20CUGravacionModelosUnidadesTraballoItEr40S25: Adding edition form with save and cancel buttons

This commit is contained in:
Óscar González Fernández 2010-01-03 17:18:32 +01:00
parent d30bad1994
commit 679d5a8c49
6 changed files with 154 additions and 5 deletions

View file

@ -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);
}
}

View file

@ -32,5 +32,9 @@ public interface IOrderTemplatesModel {
List<OrderElementTemplate> getTemplates();
OrderElementTemplate createTemplateFrom(OrderElement orderElement);
void createTemplateFrom(OrderElement orderElement);
OrderElementTemplate getTemplate();
void confirmSave();
}

View file

@ -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<String, Object> topId(String value) {
Map<String, Object> arguments = new HashMap<String, Object>();
arguments.put("top_id", value);
return arguments;
}
@Override

View file

@ -45,19 +45,31 @@ public class OrderTemplatesModel implements IOrderTemplatesModel {
@Autowired
private IOrderElementTemplateDAO dao;
private OrderElementTemplate template;
@Override
public List<OrderElementTemplate> 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) {

View file

@ -0,0 +1,67 @@
<!--
This file is part of ###PROJECT_NAME###
Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e
Desenvolvemento Tecnolóxico de Galicia
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<window id="${arg.top_id}">
<tabbox>
<tabs>
<tab id="tabGeneralData" label="${i18n:_('General data')}" />
</tabs>
<tabpanels>
<tabpanel>
<grid fixedLayout="true">
<columns>
<column width="200px" />
<column />
</columns>
<rows>
<row>
<label value="${i18n:_('Name')}" />
<textbox value="@{templateController.template.name}" width="500px"/>
</row>
<row>
<label value="${i18n:_('Code')}" />
<hbox>
<textbox value="@{templateController.template.code}" width="250px" />
</hbox>
</row>
<row>
<label value="${i18n:_('Days from Beginning to Start')}" />
<intbox
value="@{templateController.template.startAsDaysFromBeginning}" constraint="no negative"/>
</row>
<row>
<label value="${i18n:_('Days from Beginning to Deadline')}" />
<intbox
value="@{templateController.template.deadlineAsDaysFromBeginning}" constraint="no negative"/>
</row>
</rows>
</grid>
</tabpanel>
</tabpanels>
</tabbox>
<hbox>
<button label="${i18n:_('Save')}" onClick="templateController.saveAndExit()"
sclass="save-button global-action" />
<button label="${i18n:_('Save &amp; Continue')}" onClick="templateController.saveAndContinue()"
sclass="saveandcontinue-button global-action" />
<button label="${i18n:_('Cancel')}" onClick="templateController.cancel()"
sclass="cancel-button global-action" />
</hbox>
</window>

View file

@ -26,6 +26,7 @@
<?taglib uri="/WEB-INF/tld/i18n.tld" prefix="i18n"?>
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
<?component name="list" inline="true" macroURI="_list.zul"?>
<?component name="edition" inline="true" macroURI="_list.zul"?>
<zk>
<zscript><![CDATA[
templateController = orderTemplatesController;