diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationConfiguration.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationConfiguration.java
new file mode 100644
index 000000000..715deb014
--- /dev/null
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationConfiguration.java
@@ -0,0 +1,138 @@
+/*
+ * This file is part of NavalPlan
+ *
+ * Copyright (C) 2011 Igalia, S.L
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+
+package org.navalplanner.web.planner.allocation;
+
+import java.util.Arrays;
+
+import org.apache.commons.lang.Validate;
+import org.navalplanner.business.planner.entities.CalculatedValue;
+import org.navalplanner.web.planner.allocation.ResourceAllocationController.CalculationTypeRadio;
+import org.zkoss.ganttz.timetracker.ICellForDetailItemRenderer;
+import org.zkoss.ganttz.timetracker.OnColumnsRowRenderer;
+import org.zkoss.zk.ui.Component;
+import org.zkoss.zk.ui.HtmlMacroComponent;
+import org.zkoss.zk.ui.event.Event;
+import org.zkoss.zk.ui.event.EventListener;
+import org.zkoss.zk.ui.event.Events;
+import org.zkoss.zul.Grid;
+import org.zkoss.zul.Intbox;
+import org.zkoss.zul.Label;
+import org.zkoss.zul.ListModelList;
+import org.zkoss.zul.Radiogroup;
+
+/**
+ *
+ * @author Diego Pino GarcĂa
+ *
+ */
+public class AllocationConfiguration extends HtmlMacroComponent {
+
+ private Label lbTaskStart;
+
+ private Label lbTaskEnd;
+
+ private Intbox taskWorkableDays;
+
+ private Radiogroup calculationTypeSelector;
+
+ private Grid calculationTypesGrid;
+
+ private FormBinder formBinder;
+
+ @Override
+ public void afterCompose() {
+ super.afterCompose();
+ this.setVariable("allocationConfigurationController", this, true);
+
+ lbTaskStart = (Label) getFellowIfAny("lbTaskStart");
+ lbTaskEnd = (Label) getFellowIfAny("lbTaskEnd");
+ taskWorkableDays = (Intbox) getFellowIfAny("taskWorkableDays");
+ initializeCalculationTypeSelector();
+ initializeCalculationTypesGrid();
+ }
+
+ private void initializeCalculationTypeSelector() {
+ calculationTypeSelector = (Radiogroup) getFellowIfAny("calculationTypeSelector");
+ calculationTypeSelector.addEventListener(Events.ON_CHECK, new EventListener() {
+
+ @Override
+ public void onEvent(Event event) throws Exception {
+ setCalculationTypeSelected(calculationTypeSelector
+ .getSelectedItem().getValue());
+ }
+
+ private void setCalculationTypeSelected(String calculationType) {
+ Validate.notNull(formBinder);
+ formBinder.setCalculatedValue(getCalculatedValue(calculationType));
+ }
+
+ });
+ }
+
+ private void initializeCalculationTypesGrid() {
+ calculationTypesGrid = (Grid) getFellowIfAny("calculationTypesGrid");
+ calculationTypesGrid.setModel(new ListModelList(Arrays
+ .asList(CalculationTypeRadio.values())));
+ calculationTypesGrid.setRowRenderer(OnColumnsRowRenderer.create(
+ calculationTypesRenderer(), Arrays.asList(0)));
+ }
+
+ private ICellForDetailItemRenderer calculationTypesRenderer() {
+ return new ICellForDetailItemRenderer() {
+
+ @Override
+ public Component cellFor(Integer column, CalculationTypeRadio data) {
+ return data.createRadio(getCalculationTypeRadio());
+ }
+ };
+ }
+
+ private CalculationTypeRadio getCalculationTypeRadio() {
+ if (formBinder != null) {
+ return CalculationTypeRadio.from(formBinder.getCalculatedValue());
+ }
+ return null;
+ }
+
+ public Intbox getTaskWorkableDays() {
+ return taskWorkableDays;
+ }
+
+ public Label getTaskStart() {
+ return lbTaskStart;
+ }
+
+ public Label getTaskEnd() {
+ return lbTaskEnd;
+ }
+
+ public Radiogroup getCalculationTypeSelector() {
+ return calculationTypeSelector;
+ }
+
+ public void setFormBinder(FormBinder formBinder) {
+ this.formBinder = formBinder;
+ }
+
+ private CalculatedValue getCalculatedValue(String enumName) {
+ return CalculationTypeRadio.valueOf(enumName).getCalculatedValue();
+ }
+
+}
diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationController.java
index ca9454fdf..2f7b5184f 100644
--- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationController.java
+++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationController.java
@@ -68,7 +68,6 @@ import org.zkoss.zul.Grid;
import org.zkoss.zul.Hbox;
import org.zkoss.zul.Intbox;
import org.zkoss.zul.Label;
-import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Radio;
import org.zkoss.zul.Radiogroup;
import org.zkoss.zul.Row;
@@ -96,6 +95,8 @@ public class ResourceAllocationController extends GenericForwardComposer {
private TaskInformation taskInformation;
+ private AllocationConfiguration allocationConfiguration;
+
private Grid allocationsGrid;
private FormBinder formBinder;
@@ -104,14 +105,8 @@ public class ResourceAllocationController extends GenericForwardComposer {
private Intbox assignedHoursComponent;
- private Grid calculationTypesGrid;
-
- private Radiogroup calculationTypeSelector;
-
private Checkbox extendedViewCheckbox;
- private Intbox taskWorkableDays;
-
private Decimalbox allResourcesPerDay;
private Label allOriginalHours;
@@ -159,7 +154,6 @@ public class ResourceAllocationController extends GenericForwardComposer {
newAllocationSelectorCombo.setLimitingResourceFilter(false);
initAllocationLabels();
makeReadyInputsForCalculationTypes();
- prepareCalculationTypesGrid();
}
private void initAllocationLabels() {
@@ -176,30 +170,6 @@ public class ResourceAllocationController extends GenericForwardComposer {
assignedHoursComponent.setWidth("80px");
}
- private void prepareCalculationTypesGrid() {
- calculationTypesGrid.setModel(new ListModelList(Arrays
- .asList(CalculationTypeRadio.values())));
- calculationTypesGrid.setRowRenderer(OnColumnsRowRenderer.create(
- calculationTypesRenderer(), Arrays.asList(0)));
- }
-
- private ICellForDetailItemRenderer calculationTypesRenderer() {
- return new ICellForDetailItemRenderer() {
-
- @Override
- public Component cellFor(Integer column, CalculationTypeRadio data) {
- return data.createRadio(getCalculationTypeRadio());
- }
- };
- }
-
- private CalculationTypeRadio getCalculationTypeRadio() {
- if (formBinder != null) {
- return CalculationTypeRadio.from(formBinder.getCalculatedValue());
- }
- return null;
- }
-
public ResourceAllocationController getController() {
return this;
}
@@ -234,8 +204,8 @@ public class ResourceAllocationController extends GenericForwardComposer {
TaskPropertiesController taskPropertiesController = editTaskController
.getTaskPropertiesController();
- formBinder.setWorkableDays(taskWorkableDays,
- taskPropertiesController, lbTaskStart, lbTaskEnd);
+ formBinder.setWorkableDays(getTaskWorkableDays(),
+ taskPropertiesController, getTaskStart(), getTaskEnd());
formBinder.setApplyButton(applyButton);
formBinder.setAllocationsGrid(allocationsGrid);
@@ -245,10 +215,11 @@ public class ResourceAllocationController extends GenericForwardComposer {
.setNewAllocationSelectorCombo(newAllocationSelectorCombo);
initializeTaskInformationComponent();
+ initializeAllocationConfigurationComponent();
CalculationTypeRadio calculationTypeRadio = CalculationTypeRadio
.from(formBinder.getCalculatedValue());
- calculationTypeRadio.doTheSelectionOn(calculationTypeSelector);
+ calculationTypeRadio.doTheSelectionOn(getCalculationTypeSelector());
tbResourceAllocation.setSelected(true);
@@ -261,6 +232,22 @@ public class ResourceAllocationController extends GenericForwardComposer {
}
}
+ private Intbox getTaskWorkableDays() {
+ return allocationConfiguration.getTaskWorkableDays();
+ }
+
+ private Label getTaskStart() {
+ return allocationConfiguration.getTaskStart();
+ }
+
+ private Label getTaskEnd() {
+ return allocationConfiguration.getTaskEnd();
+ }
+
+ private Radiogroup getCalculationTypeSelector() {
+ return allocationConfiguration.getCalculationTypeSelector();
+ }
+
private void initializeTaskInformationComponent() {
taskInformation.initializeGridTaskRows(resourceAllocationModel
.getHoursAggregatedByCriterions());
@@ -275,9 +262,9 @@ public class ResourceAllocationController extends GenericForwardComposer {
});
}
- private Label lbTaskStart;
-
- private Label lbTaskEnd;
+ private void initializeAllocationConfigurationComponent() {
+ allocationConfiguration.setFormBinder(formBinder);
+ }
public enum HoursRendererColumn {
@@ -396,7 +383,7 @@ public class ResourceAllocationController extends GenericForwardComposer {
@Override
public Component input(
ResourceAllocationController resourceAllocationController) {
- return resourceAllocationController.taskWorkableDays;
+ return resourceAllocationController.getTaskWorkableDays();
}
},
NUMBER_OF_HOURS(CalculatedValue.NUMBER_OF_HOURS) {
@@ -492,6 +479,7 @@ public class ResourceAllocationController extends GenericForwardComposer {
public CalculatedValue getCalculatedValue() {
return calculatedValue;
}
+
}
public enum DerivedAllocationColumn implements IConvertibleToColumn {
@@ -566,12 +554,12 @@ public class ResourceAllocationController extends GenericForwardComposer {
return Arrays.asList(CalculationTypeRadio.values());
}
- public void setCalculationTypeSelected(String enumName) {
- CalculationTypeRadio calculationTypeRadio = CalculationTypeRadio
- .valueOf(enumName);
- formBinder
- .setCalculatedValue(calculationTypeRadio.getCalculatedValue());
- }
+// public void setCalculationTypeSelected(String enumName) {
+// CalculationTypeRadio calculationTypeRadio = CalculationTypeRadio
+// .valueOf(enumName);
+// formBinder
+// .setCalculatedValue(calculationTypeRadio.getCalculatedValue());
+// }
public List extends Object> getResourceAllocations() {
return formBinder != null ? plusAggregatingRow(formBinder
diff --git a/navalplanner-webapp/src/main/webapp/planner/taskpanels/_allocationConfiguration.zul b/navalplanner-webapp/src/main/webapp/planner/taskpanels/_allocationConfiguration.zul
new file mode 100644
index 000000000..f87eef564
--- /dev/null
+++ b/navalplanner-webapp/src/main/webapp/planner/taskpanels/_allocationConfiguration.zul
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/navalplanner-webapp/src/main/webapp/planner/taskpanels/_tabPanelNonLimitingResourceAllocation.zul b/navalplanner-webapp/src/main/webapp/planner/taskpanels/_tabPanelNonLimitingResourceAllocation.zul
index 4241ae56a..b1880d9a4 100644
--- a/navalplanner-webapp/src/main/webapp/planner/taskpanels/_tabPanelNonLimitingResourceAllocation.zul
+++ b/navalplanner-webapp/src/main/webapp/planner/taskpanels/_tabPanelNonLimitingResourceAllocation.zul
@@ -32,6 +32,10 @@
class="org.navalplanner.web.planner.allocation.TaskInformation"
macroURI="_taskInformation.zul" ?>
+
+
@@ -42,40 +46,11 @@
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -120,7 +95,7 @@
-
+