ItEr17S14CUListadoTiposPartesTraballo: Added basic support for CRUD operations over a WorkReportType.
Javier Moran Rua <jmoran@igalia.com>: Added the option to access to WorkReportType CRUD operations in CustomMenuController
This commit is contained in:
parent
9e87a571fb
commit
c907bf24c6
9 changed files with 497 additions and 2 deletions
|
|
@ -50,4 +50,11 @@ public class WorkReportType {
|
||||||
public void setCriterionTypes(Set<CriterionType> criterionTypes) {
|
public void setCriterionTypes(Set<CriterionType> criterionTypes) {
|
||||||
this.criterionTypes = criterionTypes;
|
this.criterionTypes = criterionTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void forceLoadCriterionTypes() {
|
||||||
|
for (CriterionType criterionType : criterionTypes) {
|
||||||
|
criterionType.getName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,9 @@ public class CustomMenuController extends Div {
|
||||||
l.add(ci);
|
l.add(ci);
|
||||||
|
|
||||||
ci = new CustomMenuItem("mainmenu.work_reports",
|
ci = new CustomMenuItem("mainmenu.work_reports",
|
||||||
"/navalplanner-webapp/");
|
"/navalplanner-webapp/workreports/workReportTypes.zul");
|
||||||
|
ci.appendChildren(new CustomMenuItem("mainmenu.work_report_types",
|
||||||
|
"navalplanner-webapp/workreports/workReportTypes.zul"));
|
||||||
l.add(ci);
|
l.add(ci);
|
||||||
|
|
||||||
ci = new CustomMenuItem("mainmenu.quality_management",
|
ci = new CustomMenuItem("mainmenu.quality_management",
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,91 @@
|
||||||
|
package org.navalplanner.web.workreports;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||||
|
import org.navalplanner.business.resources.entities.CriterionType;
|
||||||
|
import org.navalplanner.business.workreports.entities.WorkReportType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contract for {@link WorkRerportType}
|
||||||
|
*
|
||||||
|
* @author Manuel Rego Casasnovas <mrego@igalia.com>
|
||||||
|
*/
|
||||||
|
public interface IWorkReportTypeModel {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the current {@link WorkReportType}.
|
||||||
|
*
|
||||||
|
* @return A {@link WorkReportType}
|
||||||
|
*/
|
||||||
|
WorkReportType getWorkReportType();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the {@link List} of {@link WorkReportType}.
|
||||||
|
*
|
||||||
|
* @return A {@link List} of {@link WorkReportType}
|
||||||
|
*/
|
||||||
|
List<WorkReportType> getWorkReportTypes();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stores the current {@link WorkReportType}.
|
||||||
|
*
|
||||||
|
* @throws ValidationException
|
||||||
|
* If validation fails
|
||||||
|
*/
|
||||||
|
void save() throws ValidationException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes the {@link WorkReportType} passed as parameter.
|
||||||
|
*
|
||||||
|
* @param workReportType
|
||||||
|
* The object to be removed
|
||||||
|
*/
|
||||||
|
void remove(WorkReportType workReportType);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Makes some operations needed before create a new {@link WorkReportType}.
|
||||||
|
*/
|
||||||
|
void prepareForCreate();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Makes some operations needed before edit a {@link WorkReportType}.
|
||||||
|
*
|
||||||
|
* @param workReportType
|
||||||
|
* The object to be edited
|
||||||
|
*/
|
||||||
|
void prepareEditFor(WorkReportType workReportType);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Makes some operations needed before remove a {@link WorkReportType}.
|
||||||
|
*
|
||||||
|
* @param workReportType
|
||||||
|
* The object to be removed
|
||||||
|
*/
|
||||||
|
void prepareForRemove(WorkReportType workReportType);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the {@link Set} of all {@link CriterionType}
|
||||||
|
*
|
||||||
|
* @return A {@link Set} of {@link CriterionType}
|
||||||
|
*/
|
||||||
|
Set<CriterionType> getCriterionTypes();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the {@link Set} of {@link CriterionType} for the current
|
||||||
|
* {@link WorkReportType}.
|
||||||
|
*
|
||||||
|
* @param criterionTypes
|
||||||
|
* A {@link Set} of {@link CriterionType}
|
||||||
|
*/
|
||||||
|
void setCriterionTypes(Set<CriterionType> criterionTypes);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if it's or not editing a {@link WorkReportType}
|
||||||
|
*
|
||||||
|
* @return true if it's editing a {@link WorkReportType}
|
||||||
|
*/
|
||||||
|
boolean isEditing();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,181 @@
|
||||||
|
package org.navalplanner.web.workreports;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||||
|
import org.navalplanner.business.resources.entities.CriterionType;
|
||||||
|
import org.navalplanner.business.workreports.entities.WorkReportType;
|
||||||
|
import org.navalplanner.web.common.IMessagesForUser;
|
||||||
|
import org.navalplanner.web.common.Level;
|
||||||
|
import org.navalplanner.web.common.MessagesForUser;
|
||||||
|
import org.navalplanner.web.common.OnlyOneVisible;
|
||||||
|
import org.navalplanner.web.common.Util;
|
||||||
|
import org.navalplanner.web.common.components.TwoWaySelector;
|
||||||
|
import org.zkoss.zk.ui.Component;
|
||||||
|
import org.zkoss.zk.ui.util.GenericForwardComposer;
|
||||||
|
import org.zkoss.zul.api.Window;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Controller for CRUD actions over a {@link WorkReportType}
|
||||||
|
*
|
||||||
|
* @author Manuel Rego Casasnovas <mrego@igalia.com>
|
||||||
|
*/
|
||||||
|
public class WorkReportTypeCRUDController extends GenericForwardComposer {
|
||||||
|
|
||||||
|
private Window listWindow;
|
||||||
|
|
||||||
|
private Window createWindow;
|
||||||
|
|
||||||
|
private Window editWindow;
|
||||||
|
|
||||||
|
private Window confirmRemove;
|
||||||
|
|
||||||
|
private boolean confirmingRemove = false;
|
||||||
|
|
||||||
|
private IWorkReportTypeModel workReportTypeModel;
|
||||||
|
|
||||||
|
private OnlyOneVisible visibility;
|
||||||
|
|
||||||
|
private IMessagesForUser messagesForUser;
|
||||||
|
|
||||||
|
private Component messagesContainer;
|
||||||
|
|
||||||
|
public List<WorkReportType> getWorkReportTypes() {
|
||||||
|
return workReportTypeModel.getWorkReportTypes();
|
||||||
|
}
|
||||||
|
|
||||||
|
public WorkReportType getWorkReportType() {
|
||||||
|
return workReportTypeModel.getWorkReportType();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<CriterionType> getAssignedCriterionTypes() {
|
||||||
|
WorkReportType workReportType = getWorkReportType();
|
||||||
|
if (workReportType == null) {
|
||||||
|
return new HashSet<CriterionType>();
|
||||||
|
}
|
||||||
|
|
||||||
|
Set<CriterionType> criterionTypes = workReportType.getCriterionTypes();
|
||||||
|
if (criterionTypes == null) {
|
||||||
|
return new HashSet<CriterionType>();
|
||||||
|
}
|
||||||
|
|
||||||
|
return criterionTypes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<CriterionType> getUnassignedCriterionTypes() {
|
||||||
|
Set<CriterionType> criterionTypes = workReportTypeModel
|
||||||
|
.getCriterionTypes();
|
||||||
|
Set<CriterionType> assignedCriterionTypes = getAssignedCriterionTypes();
|
||||||
|
if (assignedCriterionTypes != null) {
|
||||||
|
criterionTypes.removeAll(assignedCriterionTypes);
|
||||||
|
}
|
||||||
|
return criterionTypes;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void doAfterCompose(Component comp) throws Exception {
|
||||||
|
super.doAfterCompose(comp);
|
||||||
|
messagesForUser = new MessagesForUser(messagesContainer);
|
||||||
|
comp.setVariable("controller", this, true);
|
||||||
|
getVisibility().showOnly(listWindow);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void cancel() {
|
||||||
|
goToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void goToList() {
|
||||||
|
Util.reloadBindings(listWindow);
|
||||||
|
getVisibility().showOnly(listWindow);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void goToEditForm(WorkReportType workReportType) {
|
||||||
|
workReportTypeModel.prepareEditFor(workReportType);
|
||||||
|
getVisibility().showOnly(editWindow);
|
||||||
|
Util.reloadBindings(editWindow);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void save() {
|
||||||
|
try {
|
||||||
|
Set<CriterionType> criterionTypes = getCriterionTypesSelector()
|
||||||
|
.getAssignedObjects();
|
||||||
|
|
||||||
|
workReportTypeModel.setCriterionTypes(criterionTypes);
|
||||||
|
workReportTypeModel.save();
|
||||||
|
messagesForUser.showMessage(Level.INFO, "work report type saved");
|
||||||
|
goToList();
|
||||||
|
} catch (ValidationException e) {
|
||||||
|
messagesForUser.showInvalidValues(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private TwoWaySelector getCriterionTypesSelector() {
|
||||||
|
if (workReportTypeModel.isEditing()) {
|
||||||
|
return (TwoWaySelector) editWindow
|
||||||
|
.getFellow("criterionTypesSelector");
|
||||||
|
} else {
|
||||||
|
return (TwoWaySelector) createWindow
|
||||||
|
.getFellow("criterionTypesSelector");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void confirmRemove(WorkReportType workReportType) {
|
||||||
|
workReportTypeModel.prepareForRemove(workReportType);
|
||||||
|
showConfirmingWindow();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void cancelRemove() {
|
||||||
|
confirmingRemove = false;
|
||||||
|
confirmRemove.setVisible(false);
|
||||||
|
Util.reloadBindings(confirmRemove);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isConfirmingRemove() {
|
||||||
|
return confirmingRemove;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void hideConfirmingWindow() {
|
||||||
|
confirmingRemove = false;
|
||||||
|
Util.reloadBindings(confirmRemove);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showConfirmingWindow() {
|
||||||
|
confirmingRemove = true;
|
||||||
|
try {
|
||||||
|
Util.reloadBindings(confirmRemove);
|
||||||
|
confirmRemove.doModal();
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void remove(WorkReportType workReportType) {
|
||||||
|
workReportTypeModel.remove(workReportType);
|
||||||
|
hideConfirmingWindow();
|
||||||
|
Util.reloadBindings(listWindow);
|
||||||
|
messagesForUser.showMessage(Level.INFO, "removed "
|
||||||
|
+ workReportType.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void goToEditForm() {
|
||||||
|
getVisibility().showOnly(editWindow);
|
||||||
|
Util.reloadBindings(editWindow);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void goToCreateForm() {
|
||||||
|
workReportTypeModel.prepareForCreate();
|
||||||
|
getVisibility().showOnly(createWindow);
|
||||||
|
Util.reloadBindings(createWindow);
|
||||||
|
}
|
||||||
|
|
||||||
|
private OnlyOneVisible getVisibility() {
|
||||||
|
if (visibility == null) {
|
||||||
|
visibility = new OnlyOneVisible(listWindow, createWindow,
|
||||||
|
editWindow);
|
||||||
|
}
|
||||||
|
return visibility;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,121 @@
|
||||||
|
package org.navalplanner.web.workreports;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
|
import org.hibernate.validator.ClassValidator;
|
||||||
|
import org.hibernate.validator.InvalidValue;
|
||||||
|
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||||
|
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||||
|
import org.navalplanner.business.resources.entities.CriterionType;
|
||||||
|
import org.navalplanner.business.resources.services.CriterionTypeService;
|
||||||
|
import org.navalplanner.business.workreports.daos.WorkReportTypeDAO;
|
||||||
|
import org.navalplanner.business.workreports.entities.WorkReportType;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
|
import org.springframework.context.annotation.Scope;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Model for UI operations related to {@link WorkReportType}.
|
||||||
|
*
|
||||||
|
* @author Manuel Rego Casasnovas <mrego@igalia.com>
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
|
||||||
|
public class WorkReportTypeModel implements IWorkReportTypeModel {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CriterionTypeService criterionTypeService;
|
||||||
|
|
||||||
|
private WorkReportType workReportType;
|
||||||
|
|
||||||
|
private ClassValidator<WorkReportType> workReportTypeValidator = new ClassValidator<WorkReportType>(
|
||||||
|
WorkReportType.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WorkReportTypeDAO workReportTypeDAO;
|
||||||
|
|
||||||
|
private boolean editing = false;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WorkReportType getWorkReportType() {
|
||||||
|
return this.workReportType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true)
|
||||||
|
public List<WorkReportType> getWorkReportTypes() {
|
||||||
|
return workReportTypeDAO.list(WorkReportType.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void prepareForCreate() {
|
||||||
|
editing = false;
|
||||||
|
this.workReportType = new WorkReportType();
|
||||||
|
}
|
||||||
|
|
||||||
|
private WorkReportType getFromDB(WorkReportType workReportType) {
|
||||||
|
try {
|
||||||
|
return workReportTypeDAO.find(workReportType.getId());
|
||||||
|
} catch (InstanceNotFoundException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(readOnly = true)
|
||||||
|
public void prepareEditFor(WorkReportType workReportType) {
|
||||||
|
editing = true;
|
||||||
|
Validate.notNull(workReportType);
|
||||||
|
|
||||||
|
this.workReportType = getFromDB(workReportType);
|
||||||
|
this.workReportType.forceLoadCriterionTypes();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void prepareForRemove(WorkReportType workReportType) {
|
||||||
|
this.workReportType = workReportType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void save() throws ValidationException {
|
||||||
|
InvalidValue[] invalidValues = workReportTypeValidator
|
||||||
|
.getInvalidValues(workReportType);
|
||||||
|
if (invalidValues.length > 0) {
|
||||||
|
throw new ValidationException(invalidValues);
|
||||||
|
}
|
||||||
|
|
||||||
|
workReportTypeDAO.save(workReportType);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void remove(WorkReportType workReportType) {
|
||||||
|
try {
|
||||||
|
workReportTypeDAO.remove(workReportType.getId());
|
||||||
|
} catch (InstanceNotFoundException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<CriterionType> getCriterionTypes() {
|
||||||
|
return new HashSet<CriterionType>(criterionTypeService.getAll());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCriterionTypes(Set<CriterionType> criterionTypes) {
|
||||||
|
workReportType.setCriterionTypes(criterionTypes);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEditing() {
|
||||||
|
return this.editing;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -41,7 +41,8 @@
|
||||||
<menu label="${c:l('mainmenu.work_reports')}">
|
<menu label="${c:l('mainmenu.work_reports')}">
|
||||||
<menupopup>
|
<menupopup>
|
||||||
<menuitem label="${c:l('mainmenu.work_report_list')}" />
|
<menuitem label="${c:l('mainmenu.work_report_list')}" />
|
||||||
<menuitem label="${c:l('mainmenu.work_report_types')}" />
|
<menuitem label="${c:l('mainmenu.work_report_types')}"
|
||||||
|
href="/workreports/workRerpotTypes.zul" />
|
||||||
<menuitem label="${c:l('mainmenu.work_report_import')}" />
|
<menuitem label="${c:l('mainmenu.work_report_import')}" />
|
||||||
</menupopup>
|
</menupopup>
|
||||||
</menu>
|
</menu>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
<window id="${arg.top_id}" title="${arg.title}" border="normal">
|
||||||
|
|
||||||
|
<vbox>
|
||||||
|
|
||||||
|
<hbox>
|
||||||
|
<label value="Name" />
|
||||||
|
<textbox
|
||||||
|
value="@{controller.workReportType.name}" />
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
<label value="Criterion types" />
|
||||||
|
|
||||||
|
<twowayselector
|
||||||
|
id="criterionTypesSelector"
|
||||||
|
assignedObjects="@{controller.assignedCriterionTypes}"
|
||||||
|
assignedTitle="Assigned criterion types"
|
||||||
|
unassignedObjects="@{controller.unassignedCriterionTypes}"
|
||||||
|
unassignedTitle="Unassigned criterion types"
|
||||||
|
columns="name"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<hbox>
|
||||||
|
<button onClick="controller.save();"
|
||||||
|
label="${arg.save_button_label}" />
|
||||||
|
<button onClick="controller.cancel();"
|
||||||
|
label="${arg.cancel_button_label}" />
|
||||||
|
</hbox>
|
||||||
|
|
||||||
|
</vbox>
|
||||||
|
|
||||||
|
</window>
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
<window id="${arg.top_id}" title="List">
|
||||||
|
<grid id="listing" model="@{controller.workReportTypes}" mold="paging"
|
||||||
|
pageSize="5">
|
||||||
|
<columns>
|
||||||
|
<column label="Name" sort="auto(name)" />
|
||||||
|
<column label="Operations" />
|
||||||
|
</columns>
|
||||||
|
<rows>
|
||||||
|
<row self="@{each='workReportType'}" value="@{workReportType}">
|
||||||
|
<label value="@{workReportType.name}" />
|
||||||
|
<hbox>
|
||||||
|
<button label="Edit"
|
||||||
|
onClick="controller.goToEditForm(self.parent.parent.value);">
|
||||||
|
</button>
|
||||||
|
<button label="Remove"
|
||||||
|
onClick="controller.confirmRemove(self.parent.parent.value);">
|
||||||
|
</button>
|
||||||
|
</hbox>
|
||||||
|
</row>
|
||||||
|
</rows>
|
||||||
|
</grid>
|
||||||
|
<button id="show_create_form" onClick="controller.goToCreateForm();"
|
||||||
|
label="Create">
|
||||||
|
</button>
|
||||||
|
</window>
|
||||||
|
|
@ -0,0 +1,36 @@
|
||||||
|
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?>
|
||||||
|
<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c"?>
|
||||||
|
<?page id="List"?>
|
||||||
|
<?init class="org.zkoss.zk.ui.util.Composition" arg0="/common/layout/template_v02.zul"?>
|
||||||
|
<?link rel="stylesheet" type="text/css" href="/common/css/navalpro_v01.css"?>
|
||||||
|
<?link rel="stylesheet" type="text/css" href="/common/css/navalpro_zk.css"?>
|
||||||
|
<?link rel="stylesheet" type="text/css" href="/resources/css/resources.css"?>
|
||||||
|
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
|
||||||
|
<?component name="list" inline="true" macroURI="_listWorkReportTypes.zul"?>
|
||||||
|
<?component name="edition" inline="true" macroURI="_editWorkReportType.zul"?>
|
||||||
|
<zk>
|
||||||
|
<window self="@{define(content)}"
|
||||||
|
apply="org.navalplanner.web.workreports.WorkReportTypeCRUDController">
|
||||||
|
<vbox id="messagesContainer"></vbox>
|
||||||
|
<list top_id="listWindow" />
|
||||||
|
<edition top_id="createWindow" title="Create"
|
||||||
|
save_button_label="Save" cancel_button_label="Cancel" />
|
||||||
|
<edition top_id="editWindow" title="Edit"
|
||||||
|
save_button_label="Save" cancel_button_label="Cancel" />
|
||||||
|
<window visible="@{controller.confirmingRemove}"
|
||||||
|
id="confirmRemove" title="Confirmación" width="500px"
|
||||||
|
position="center">
|
||||||
|
<vbox>
|
||||||
|
<hbox>
|
||||||
|
¿Do you want to delete <label value="@{controller.workReportType.name}"/>?
|
||||||
|
</hbox>
|
||||||
|
<hbox>
|
||||||
|
<button label="Yes"
|
||||||
|
onClick="controller.remove(controller.workReportType);" />
|
||||||
|
<button label="No"
|
||||||
|
onClick="controller.cancelRemove();" />
|
||||||
|
</hbox>
|
||||||
|
</vbox>
|
||||||
|
</window>
|
||||||
|
</window>
|
||||||
|
</zk>
|
||||||
Loading…
Add table
Reference in a new issue