From a8ba46e505b1fb5512d763f3de1282bdbbe0be36 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Fri, 2 Nov 2012 08:17:25 +0100 Subject: [PATCH] Add checkbox in work reports standard edition UI FEA: ItEr77S12AdaptPlanningAccordingTimesheets --- .../java/org/libreplan/web/common/Util.java | 4 +-- .../web/common/components/CapacityPicker.java | 2 +- .../workreports/WorkReportCRUDController.java | 28 +++++++++++++++++++ .../webapp/workreports/css/workreports.css | 6 +++- 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/common/Util.java b/libreplan-webapp/src/main/java/org/libreplan/web/common/Util.java index 30f263d78..3e33a3591 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/common/Util.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/common/Util.java @@ -56,6 +56,7 @@ import org.zkoss.zkplus.databind.AnnotateDataBinder; import org.zkoss.zkplus.databind.DataBinder; import org.zkoss.zul.Bandbox; import org.zkoss.zul.Button; +import org.zkoss.zul.Checkbox; import org.zkoss.zul.Combobox; import org.zkoss.zul.Comboitem; import org.zkoss.zul.Datebox; @@ -67,7 +68,6 @@ import org.zkoss.zul.Radio; import org.zkoss.zul.Row; import org.zkoss.zul.Textbox; import org.zkoss.zul.Timebox; -import org.zkoss.zul.api.Checkbox; import org.zkoss.zul.api.Column; /** @@ -446,7 +446,7 @@ public class Util { * The {@link Setter} interface that will implement a set method. * @return The {@link Checkbox} bound */ - public static C bind(final C checkBox, + public static Checkbox bind(final Checkbox checkBox, final Getter getter, final Setter setter) { checkBox.setChecked(getter.get()); checkBox.addEventListener(Events.ON_CHECK, new EventListener() { diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/common/components/CapacityPicker.java b/libreplan-webapp/src/main/java/org/libreplan/web/common/components/CapacityPicker.java index 1a710f67c..399b2b5d4 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/common/components/CapacityPicker.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/common/components/CapacityPicker.java @@ -24,7 +24,7 @@ import org.libreplan.business.workingday.EffortDuration; import org.libreplan.web.common.Util; import org.libreplan.web.common.Util.Getter; import org.libreplan.web.common.Util.Setter; -import org.zkoss.zul.api.Checkbox; +import org.zkoss.zul.Checkbox; /** * It configures some ZK components to work together and edit a Capacity object diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/workreports/WorkReportCRUDController.java b/libreplan-webapp/src/main/java/org/libreplan/web/workreports/WorkReportCRUDController.java index f9311bde7..38144517c 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/workreports/WorkReportCRUDController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/workreports/WorkReportCRUDController.java @@ -29,6 +29,7 @@ import java.util.List; import java.util.Map; import java.util.regex.Pattern; +import org.apache.commons.lang.BooleanUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.LogFactory; import org.hibernate.validator.InvalidValue; @@ -54,6 +55,8 @@ import org.libreplan.web.common.Level; import org.libreplan.web.common.MessagesForUser; import org.libreplan.web.common.OnlyOneVisible; import org.libreplan.web.common.Util; +import org.libreplan.web.common.Util.Getter; +import org.libreplan.web.common.Util.Setter; import org.libreplan.web.common.components.Autocomplete; import org.libreplan.web.common.components.NewDataSortableColumn; import org.libreplan.web.common.components.NewDataSortableGrid; @@ -73,6 +76,7 @@ import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.SelectEvent; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Button; +import org.zkoss.zul.Checkbox; import org.zkoss.zul.Column; import org.zkoss.zul.Columns; import org.zkoss.zul.Comboitem; @@ -815,7 +819,12 @@ public class WorkReportCRUDController extends GenericForwardComposer implements columnHoursType.setLabel(_("Hours type")); columnHoursType.setSclass("hours-type-column"); columns.appendChild(columnHoursType); + NewDataSortableColumn columnFinsihed = new NewDataSortableColumn(); + columnFinsihed.setLabel(_("Done")); + columnFinsihed.setSclass("finished-column"); + columnFinsihed.setTooltiptext(_("Task finished")); NewDataSortableColumn columnCode = new NewDataSortableColumn(); + columns.appendChild(columnFinsihed); columnCode.setLabel(_("Code")); columnCode.setSclass("code-column"); columns.appendChild(columnCode); @@ -1197,6 +1206,24 @@ public class WorkReportCRUDController extends GenericForwardComposer implements row.appendChild(code); } + private void appendFinished(final Row row) { + final WorkReportLine line = (WorkReportLine) row.getValue(); + + Checkbox finished = Util.bind(new Checkbox(), new Getter() { + @Override + public Boolean get() { + return line.isFinished(); + } + }, new Setter() { + @Override + public void set(Boolean value) { + line.setFinished(BooleanUtils.isTrue(value)); + } + }); + + row.appendChild(finished); + } + /** * Append a delete {@link Button} to {@link Row} * @@ -1306,6 +1333,7 @@ public class WorkReportCRUDController extends GenericForwardComposer implements appendEffortDuration(row); appendHoursType(row); + appendFinished(row); appendCode(row); appendDeleteButton(row); } diff --git a/libreplan-webapp/src/main/webapp/workreports/css/workreports.css b/libreplan-webapp/src/main/webapp/workreports/css/workreports.css index 4975f5e17..ac8ae9ee5 100644 --- a/libreplan-webapp/src/main/webapp/workreports/css/workreports.css +++ b/libreplan-webapp/src/main/webapp/workreports/css/workreports.css @@ -14,7 +14,7 @@ } .listWorkReportLines .operations-column { - width: 40px; + width: 15px; } .listWorkReportLines .resource-column { @@ -25,6 +25,10 @@ width: 150px; } +.listWorkReportLines .finished-column { + width: 20px; +} + .listWorkReportLines .order-code-column { width: 180px; }