ItEr09S09AdministracionGrupos: Two new subcontrollers: CriterionEditController and CriterionWorkersController. New package for criterion controllers.
This commit is contained in:
parent
a86f012493
commit
f1e91bc532
9 changed files with 153 additions and 102 deletions
|
|
@ -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() {
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -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);
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue