diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Stretch.java b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Stretch.java index bf694fa7e..73feba3dc 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Stretch.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/planner/entities/Stretch.java @@ -52,6 +52,9 @@ public class Stretch { @NotNull private BigDecimal amountWorkPercentage = BigDecimal.ZERO; + // Transient value + private boolean readOnly = false; + private Stretch(LocalDate date, BigDecimal lengthPercent, BigDecimal progressPercent) { this.date = date; this.lengthPercentage = lengthPercent; @@ -114,4 +117,12 @@ public class Stretch { return String.format("(%s, %s, %s) ", date, lengthPercentage, amountWorkPercentage); } -} + public boolean isReadOnly() { + return readOnly; + } + + public void readOnly(boolean value) { + readOnly = value; + } + +} \ No newline at end of file diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/streches/StretchesFunctionController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/streches/StretchesFunctionController.java index 917396054..208330ab7 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/streches/StretchesFunctionController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/streches/StretchesFunctionController.java @@ -270,7 +270,9 @@ public class StretchesFunctionController extends GenericForwardComposer { @Override public void render(Listitem item, Object data) throws Exception { Stretch stretch = (Stretch) data; + item.setValue(stretch); + item.setDisabled(stretch.isReadOnly()); appendDate(item, stretch); appendLengthPercentage(item, stretch); @@ -376,19 +378,26 @@ public class StretchesFunctionController extends GenericForwardComposer { } private void appendOperations(Listitem item, final Stretch stretch) { - Button button = new Button("", "/common/img/ico_borrar1.png"); - button.setHoverImage("/common/img/ico_borrar.png"); - button.setSclass("icono"); - button.setTooltiptext(_("Delete")); - - button.addEventListener(Events.ON_CLICK, new EventListener() { - @Override - public void onEvent(Event event) throws Exception { - stretchesFunctionModel.removeStretch(stretch); - reloadStretchesListAndCharts(); - } - }); + Button button; + if (item.isDisabled()) { + button = new Button("", "/common/img/ico_borrar_out.png"); + button.setHoverImage("/common/img/ico_borrar_out.png"); + button.setSclass("icono"); + button.setDisabled(true); + } else { + button = new Button("", "/common/img/ico_borrar1.png"); + button.setHoverImage("/common/img/ico_borrar.png"); + button.setSclass("icono"); + button.setTooltiptext(_("Delete")); + button.addEventListener(Events.ON_CLICK, new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + stretchesFunctionModel.removeStretch(stretch); + reloadStretchesListAndCharts(); + } + }); + } appendChild(item, button); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/streches/StretchesFunctionModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/streches/StretchesFunctionModel.java index 9ba80c951..ebc3cd889 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/streches/StretchesFunctionModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/streches/StretchesFunctionModel.java @@ -27,6 +27,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DateFormat; import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.List; @@ -119,9 +120,27 @@ public class StretchesFunctionModel implements IStretchesFunctionModel { @Override public List getStretches() { if (stretchesFunction == null) { - return new ArrayList(); + return Collections.emptyList(); } - return stretchesFunction.getStretches(); + return allStretches(); + } + + /** + * Returns an empty stretch plus the stretches from stretchesFunction + * + * @return + */ + private List allStretches() { + List result = new ArrayList(); + result.add(firstStretch()); + result.addAll(stretchesFunction.getStretches()); + return result; + } + + private Stretch firstStretch() { + Stretch result = Stretch.create(task.getStartAsLocalDate(), BigDecimal.ZERO, BigDecimal.ZERO); + result.readOnly(true); + return result; } @Override