ItEr09S09AdministracionGrupos: Two new subcontrollers: CriterionEditController and CriterionWorkersController. New package for criterion controllers.

This commit is contained in:
Óscar González Fernández 2009-05-23 17:30:17 +02:00 committed by Javier Moran Rua
parent a86f012493
commit f1e91bc532
9 changed files with 153 additions and 102 deletions

View file

@ -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<ICriterionTypeProvider> providers;
@Autowired
private ResourceService resourceService;
public CriterionsBootstrap() {
}

View file

@ -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<Worker> 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() {

View file

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

View file

@ -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<Worker> getWorkersForCurrentCriterion() {
return criterionsModel
.getResourcesSatisfyingCurrentCriterionOfType(Worker.class);
}
}

View file

@ -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

View file

@ -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);
<T extends Resource> List<T> getResourcesSatisfyingCurrentCriterionOfType(
Class<T> klass);

View file

@ -1,55 +1,14 @@
<zk>
<tabbox id="${arg.top_id}">
<tabs>
<tab label="Edición" closable="false" />
<tab label="Trabajadores" closable="false"
visible="@{controller.isApplyableToWorkers}" />
</tabs>
<tabpanels>
<tabpanel>
<vbox>
<hbox>
<label value="name" />
<textbox value="@{controller.criterionName}" />
<checkbox
checked="@{controller.criterionActive}"
visible="@{controller.editing}">
</checkbox>
</hbox>
<hbox>
<button onClick="controller.save();"
label="${arg.save_button_label}" />
<button onClick="controller.cancel();"
label="${arg.cancel_button_label}" />
</hbox>
</vbox>
</tabpanel>
<tabpanel>
<grid
model="@{controller.workersForCurrentCriterion}"
mold="paging" pageSize="5">
<columns>
<column label="operations" />
<column label="First Name"
sort="auto(firstName)" />
<column label="Surname" sort="auto(surname)" />
<column label="nif" sort="auto(nif)" />
</columns>
<rows>
<row self="@{each='worker'}"
value="@{worker}">
<label value="@{worker.firstName}" />
<label value="@{worker.surname}" />
<label value="@{worker.nif}" />
<hbox>
<button label="Edit">
</button>
</hbox>
</row>
</rows>
</grid>
</tabpanel>
</tabpanels>
</tabbox>
</zk>
<vbox id="${arg.top_id}">
<hbox>
<label value="name" />
<textbox value="@{controller.edition.criterionName}" />
<checkbox checked="@{controller.edition.criterionActive}"
visible="@{controller.edition.editing}">
</checkbox>
</hbox>
<hbox>
<button onClick="controller.save();" label="${arg.save_button_label}" />
<button onClick="controller.cancel();"
label="${arg.cancel_button_label}" />
</hbox>
</vbox>

View file

@ -0,0 +1,23 @@
<zk>
<grid model="@{controller.workers.workersForCurrentCriterion}"
id="${arg.top_id}" mold="paging" pageSize="5">
<columns>
<column label="operations" />
<column label="First Name" sort="auto(firstName)" />
<column label="Surname" sort="auto(surname)" />
<column label="nif" sort="auto(nif)" />
</columns>
<rows>
<row self="@{each='worker'}" value="@{worker}">
<label value="@{worker.firstName}" />
<label value="@{worker.surname}" />
<label value="@{worker.nif}" />
<hbox>
<button label="Edit"></button>
</hbox>
</row>
</rows>
</grid>
<button onClick="controller.cancel();"
label="${arg.cancel_button_label}" />
</zk>

View file

@ -7,16 +7,17 @@
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
<?component name="list" inline="true" macroURI="_list.zul"?>
<?component name="edition" inline="true" macroURI="_edition.zul"?>
<?component name="workers" inline="true" macroURI="_workers.zul"?>
<zk>
<window self="@{define(content)}"
apply="org.navalplanner.web.resources.CriterionAdminController"
sclass="workerwindow">
<vbox id="messagesContainer">
</vbox>
<list top_id="listWindow" />
<edition top_id="createComponent" title="Crear"
save_button_label="Save" cancel_button_label="Cancelar" />
<edition top_id="editComponent" title="Editar"
save_button_label="Save" cancel_button_label="Cancelar" />
</window>
<window self="@{define(content)}"
apply="org.navalplanner.web.resources.criterion.CriterionAdminController"
sclass="workerwindow">
<vbox id="messagesContainer"></vbox>
<list top_id="listWindow" />
<edition top_id="createComponent" title="Crear"
save_button_label="Save" cancel_button_label="Cancelar" />
<edition top_id="editComponent" title="Editar"
save_button_label="Save" cancel_button_label="Cancelar" />
<workers top_id="workersComponent" title="Workers" cancel_button_label="Volver"/>
</window>
</zk>