diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/CapacityPicker.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/CapacityPicker.java index f76d210fe..e4a9b0a3e 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/CapacityPicker.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/CapacityPicker.java @@ -35,24 +35,41 @@ public class CapacityPicker { public static CapacityPicker workWith(Checkbox checkbox, EffortDurationPicker standardEffortPicker, - EffortDurationPicker extraHoursPicker, - final Getter getter, + EffortDurationPicker extraHoursPicker, Getter getter, Setter setter) { return new CapacityPicker(checkbox, standardEffortPicker, extraHoursPicker, getter.get(), setter); } + public static CapacityPicker workWith(Checkbox checkbox, + EffortDurationPicker standardEffortPicker, + EffortDurationPicker extraHoursPicker, + final Capacity initialCapacity) { + return new CapacityPicker(checkbox, standardEffortPicker, + extraHoursPicker, initialCapacity, null); + } + private Capacity currentCapacity; private final Setter setter; - private CapacityPicker(Checkbox checkbox, + private final Checkbox overAssignableWithoutLimitCheckbox; + + private final EffortDurationPicker standardEffortPicker; + + private final EffortDurationPicker extraEffortPicker; + + private CapacityPicker(Checkbox overAssignableWithoutLimitCheckbox, EffortDurationPicker standardEffortPicker, final EffortDurationPicker extraEffortPicker, Capacity initialCapacity, Setter setter) { + this.overAssignableWithoutLimitCheckbox = overAssignableWithoutLimitCheckbox; + this.standardEffortPicker = standardEffortPicker; + this.extraEffortPicker = extraEffortPicker; this.currentCapacity = initialCapacity; this.setter = setter; + standardEffortPicker.bind(new Getter() { @Override @@ -82,7 +99,7 @@ public class CapacityPicker { updateCapacity(currentCapacity.extraEffort(value)); } }); - Util.bind(checkbox, new Getter() { + Util.bind(overAssignableWithoutLimitCheckbox, new Getter() { @Override public Boolean get() { @@ -108,7 +125,22 @@ public class CapacityPicker { private void updateCapacity(Capacity newCapacity) { this.currentCapacity = newCapacity; - this.setter.set(currentCapacity); + if (this.setter != null) { + this.setter.set(currentCapacity); + } + } + + public Capacity getValue() { + return currentCapacity; + } + + public void setValue(Capacity capacity) { + overAssignableWithoutLimitCheckbox.setChecked(capacity + .isOverAssignable()); + standardEffortPicker.setValue(capacity.getStandardEffort()); + extraEffortPicker.setValue(capacity.getAllowedExtraEffort()); + currentCapacity = capacity; + updateExtraEffortDisability(extraEffortPicker); } }