diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskDetail.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskDetail.java
index 8d6701760..baa6c49fb 100644
--- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskDetail.java
+++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/TaskDetail.java
@@ -318,13 +318,14 @@ public class TaskDetail extends GenericForwardComposer {
}
public void updateBean() {
- if (getEndDateBox().getValue().before(getStartDateBox().getValue())) {
- updateComponents();
- return;
+ Date begin = getStartDateBox().getValue();
+ Date end = getEndDateBox().getValue();
+ if (end.before(begin)) {
+ end = new Date(begin.getTime() + taskBean.getLengthMilliseconds());
}
taskBean.setName(getNameBox().getValue());
- taskBean.setBeginDate(getStartDateBox().getValue());
- taskBean.setEndDate(getEndDateBox().getValue());
+ taskBean.setBeginDate(begin);
+ taskBean.setEndDate(end);
}
private void updateComponents() {
diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/TaskBean.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/TaskBean.java
index cf4e7f081..b6715f3d1 100644
--- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/TaskBean.java
+++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/TaskBean.java
@@ -8,9 +8,7 @@ import java.util.Date;
* This class contains the information of a task. It can be modified and
* notifies of the changes to the interested parties.
* Created at Apr 24, 2009
- *
* @author Óscar González Fernández
- *
*/
public class TaskBean {
@@ -81,6 +79,10 @@ public class TaskBean {
}
public void setLengthMilliseconds(long lengthMilliseconds) {
+ if (lengthMilliseconds < 0)
+ throw new IllegalArgumentException(
+ "a task must not have a negative length. Received value: "
+ + lengthMilliseconds);
long previousValue = this.lengthMilliseconds;
this.lengthMilliseconds = lengthMilliseconds;
fundamentalProperties.firePropertyChange("lengthMilliseconds",
@@ -96,7 +98,8 @@ public class TaskBean {
this.visibilityProperties.addPropertyChangeListener(listener);
}
- public void addFundamentalPropertiesChangeListener(PropertyChangeListener listener) {
+ public void addFundamentalPropertiesChangeListener(
+ PropertyChangeListener listener) {
this.fundamentalProperties.addPropertyChangeListener(listener);
}