From f1e91bc532006f32f8def9f0ee2c79daa85a0127 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Sat, 23 May 2009 17:30:17 +0200 Subject: [PATCH] ItEr09S09AdministracionGrupos: Two new subcontrollers: CriterionEditController and CriterionWorkersController. New package for criterion controllers. --- .../bootstrap/CriterionsBootstrap.java | 4 ++ .../CriterionAdminController.java | 63 +++++++++-------- .../criterion/CriterionEditController.java | 36 ++++++++++ .../criterion/CriterionWorkersController.java | 21 ++++++ .../{ => criterion}/CriterionsModel.java | 10 +-- .../{ => criterion}/ICriterionsModel.java | 6 +- .../webapp/resources/criterions/_edition.zul | 69 ++++--------------- .../webapp/resources/criterions/_workers.zul | 23 +++++++ .../resources/criterions/criterions.zul | 23 ++++--- 9 files changed, 153 insertions(+), 102 deletions(-) rename navalplanner-webapp/src/main/java/org/navalplanner/web/resources/{ => criterion}/CriterionAdminController.java (78%) create mode 100644 navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionEditController.java create mode 100644 navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionWorkersController.java rename navalplanner-webapp/src/main/java/org/navalplanner/web/resources/{ => criterion}/CriterionsModel.java (93%) rename navalplanner-webapp/src/main/java/org/navalplanner/web/resources/{ => criterion}/ICriterionsModel.java (88%) create mode 100644 navalplanner-webapp/src/main/webapp/resources/criterions/_workers.zul diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/bootstrap/CriterionsBootstrap.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/bootstrap/CriterionsBootstrap.java index d481f9e50..5ebba3a68 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/bootstrap/CriterionsBootstrap.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/bootstrap/CriterionsBootstrap.java @@ -9,6 +9,7 @@ import java.util.Map.Entry; import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.ICriterionType; import org.navalplanner.business.resources.services.CriterionService; +import org.navalplanner.business.resources.services.ResourceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; @@ -29,6 +30,9 @@ public class CriterionsBootstrap implements ICriterionsBootstrap { @Autowired private List providers; + @Autowired + private ResourceService resourceService; + public CriterionsBootstrap() { } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/CriterionAdminController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionAdminController.java similarity index 78% rename from navalplanner-webapp/src/main/java/org/navalplanner/web/resources/CriterionAdminController.java rename to navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionAdminController.java index 068d1c666..0a252b9aa 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/CriterionAdminController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionAdminController.java @@ -1,11 +1,10 @@ -package org.navalplanner.web.resources; +package org.navalplanner.web.resources.criterion; import java.util.List; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.resources.entities.Criterion; import org.navalplanner.business.resources.entities.ICriterionType; -import org.navalplanner.business.resources.entities.Worker; import org.navalplanner.web.common.IMessagesForUser; import org.navalplanner.web.common.MessagesForUser; import org.navalplanner.web.common.OnlyOneVisible; @@ -18,6 +17,7 @@ import org.zkoss.zul.Button; import org.zkoss.zul.Checkbox; import org.zkoss.zul.Div; import org.zkoss.zul.GroupsModel; +import org.zkoss.zul.Hbox; import org.zkoss.zul.Label; import org.zkoss.zul.Row; import org.zkoss.zul.RowRenderer; @@ -45,6 +45,12 @@ public class CriterionAdminController extends GenericForwardComposer { private OnlyOneVisible onlyOneVisible; + private Component workersComponent; + + private CriterionEditController edition; + + private CriterionWorkersController workers; + public CriterionAdminController() { } @@ -53,8 +59,10 @@ public class CriterionAdminController extends GenericForwardComposer { public void render(Row row, java.lang.Object data) { if (data instanceof Criterion) { final Criterion criterion = (Criterion) data; + Hbox operations = new Hbox(); + operations.setParent(row); Button editButton = new Button("Editar"); - editButton.setParent(row); + editButton.setParent(operations); editButton.setDisabled(!criterionsModel.getTypeFor(criterion) .allowEditing()); editButton.addEventListener("onClick", new EventListener() { @@ -64,6 +72,18 @@ public class CriterionAdminController extends GenericForwardComposer { goToEditForm(criterion); } }); + Button traballadoresButton = new Button("Traballadores"); + traballadoresButton.setParent(operations); + traballadoresButton.setDisabled(!criterionsModel + .isApplyableToWorkers(criterion)); + traballadoresButton.addEventListener("onClick", + new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + showWorkers(criterion); + } + }); new Label(criterion.getName()).setParent(row); Checkbox checkbox = new Checkbox(); checkbox.setChecked(criterion.isActive()); @@ -101,37 +121,22 @@ public class CriterionAdminController extends GenericForwardComposer { private void goToEditForm(Criterion criterion) { onlyOneVisible.showOnly(editComponent); - criterionsModel.prepareForEdit(criterion); + criterionsModel.workOn(criterion); Util.reloadBindings(editComponent); } - public void setCriterionName(String name) { - criterionsModel.setNameForCriterion(name); + private void showWorkers(Criterion criterion) { + criterionsModel.workOn(criterion); + Util.reloadBindings(workersComponent); + onlyOneVisible.showOnly(workersComponent); } - public String getCriterionName() { - return criterionsModel.getNameForCriterion(); + public CriterionEditController getEdition() { + return edition; } - public boolean isEditing() { - return criterionsModel.isEditing(); - } - - public boolean isApplyableToWorkers() { - return criterionsModel.isApplyableToWorkers(); - } - - public List getWorkersForCurrentCriterion() { - return criterionsModel - .getResourcesSatisfyingCurrentCriterionOfType(Worker.class); - } - - public boolean isCriterionActive() { - return criterionsModel.isCriterionActive(); - } - - public void setCriterionActive(boolean active) { - criterionsModel.setCriterionActive(active); + public CriterionWorkersController getWorkers() { + return workers; } public void save() { @@ -180,13 +185,15 @@ public class CriterionAdminController extends GenericForwardComposer { public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); onlyOneVisible = new OnlyOneVisible(listing, editComponent, - createComponent); + createComponent, workersComponent); onlyOneVisible.showOnly(listing); comp.setVariable("controller", this, true); messagesForUser = new MessagesForUser(messagesContainer); listing = (Grid) comp.getFellow("listing"); reload(); listing.setRowRenderer(getRowRenderer()); + edition = new CriterionEditController(criterionsModel); + workers = new CriterionWorkersController(criterionsModel); } private void reload() { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionEditController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionEditController.java new file mode 100644 index 000000000..004769dd7 --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionEditController.java @@ -0,0 +1,36 @@ +package org.navalplanner.web.resources.criterion; + +import org.apache.commons.lang.Validate; +import org.zkoss.zk.ui.util.GenericForwardComposer; + +public class CriterionEditController extends GenericForwardComposer { + + private final ICriterionsModel criterionsModel; + + public CriterionEditController(ICriterionsModel criterionsModel) { + Validate.notNull(criterionsModel); + this.criterionsModel = criterionsModel; + } + + public void setCriterionName(String name) { + criterionsModel.setNameForCriterion(name); + } + + public String getCriterionName() { + return criterionsModel.getNameForCriterion(); + } + + public boolean isEditing() { + return criterionsModel.isEditing(); + } + + public boolean isCriterionActive() { + return criterionsModel.isCriterionActive(); + } + + public void setCriterionActive(boolean active) { + criterionsModel.setCriterionActive(active); + } + + +} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionWorkersController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionWorkersController.java new file mode 100644 index 000000000..e616b1e5e --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionWorkersController.java @@ -0,0 +1,21 @@ +package org.navalplanner.web.resources.criterion; + +import java.util.List; + +import org.navalplanner.business.resources.entities.Worker; +import org.zkoss.zk.ui.util.GenericForwardComposer; + +public class CriterionWorkersController extends GenericForwardComposer { + + private final ICriterionsModel criterionsModel; + + public CriterionWorkersController(ICriterionsModel criterionsModel) { + this.criterionsModel = criterionsModel; + } + + public List getWorkersForCurrentCriterion() { + return criterionsModel + .getResourcesSatisfyingCurrentCriterionOfType(Worker.class); + } + +} diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/CriterionsModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionsModel.java similarity index 93% rename from navalplanner-webapp/src/main/java/org/navalplanner/web/resources/CriterionsModel.java rename to navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionsModel.java index 12b2f3d78..c4057bb95 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/CriterionsModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/CriterionsModel.java @@ -1,4 +1,4 @@ -package org.navalplanner.web.resources; +package org.navalplanner.web.resources.criterion; import java.util.ArrayList; import java.util.Collection; @@ -72,7 +72,7 @@ public class CriterionsModel implements ICriterionsModel { } @Override - public void prepareForEdit(Criterion criterion) { + public void workOn(Criterion criterion) { Validate.notNull(criterion); this.criterion = criterion; this.criterionType = getTypeFor(criterion); @@ -139,9 +139,9 @@ public class CriterionsModel implements ICriterionsModel { } @Override - public boolean isApplyableToWorkers() { - return criterionType != null - && criterionType.criterionCanBeRelatedTo(Worker.class); + public boolean isApplyableToWorkers(Criterion criterion) { + ICriterionType type = getTypeFor(criterion); + return type != null && type.criterionCanBeRelatedTo(Worker.class); } @Override diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/ICriterionsModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/ICriterionsModel.java similarity index 88% rename from navalplanner-webapp/src/main/java/org/navalplanner/web/resources/ICriterionsModel.java rename to navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/ICriterionsModel.java index 484326529..f6c6989a4 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/ICriterionsModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resources/criterion/ICriterionsModel.java @@ -1,4 +1,4 @@ -package org.navalplanner.web.resources; +package org.navalplanner.web.resources.criterion; import java.util.Collection; import java.util.List; @@ -22,7 +22,7 @@ public interface ICriterionsModel { void prepareForCreate(ICriterionType criterionType); - void prepareForEdit(Criterion criterion); + void workOn(Criterion criterion); ICriterionType getTypeFor(Criterion criterion); @@ -38,7 +38,7 @@ public interface ICriterionsModel { void setCriterionActive(boolean active); - boolean isApplyableToWorkers(); + boolean isApplyableToWorkers(Criterion criterion); List getResourcesSatisfyingCurrentCriterionOfType( Class klass); diff --git a/navalplanner-webapp/src/main/webapp/resources/criterions/_edition.zul b/navalplanner-webapp/src/main/webapp/resources/criterions/_edition.zul index c1bec10a4..2cd82a177 100644 --- a/navalplanner-webapp/src/main/webapp/resources/criterions/_edition.zul +++ b/navalplanner-webapp/src/main/webapp/resources/criterions/_edition.zul @@ -1,55 +1,14 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + +