diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTreeRow.java b/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTreeRow.java
index b7819656d..c06771892 100644
--- a/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTreeRow.java
+++ b/ganttzk/src/main/java/org/zkoss/ganttz/LeftTasksTreeRow.java
@@ -24,10 +24,13 @@ package org.zkoss.ganttz;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.joda.time.LocalDate;
@@ -47,6 +50,13 @@ import org.zkoss.zul.Treecell;
import org.zkoss.zul.api.Label;
import org.zkoss.zul.api.Treerow;
+/**
+ * Row composer for Tasks details Tree
+ *
+ * @author Óscar González Fernández
+ * @author Manuel Rego Casasnovas
+ * @author Lorenzo Tilve Álvaro
+ */
public class LeftTasksTreeRow extends GenericForwardComposer {
public interface ILeftTasksTreeNavigator {
@@ -71,9 +81,7 @@ public class LeftTasksTreeRow extends GenericForwardComposer {
private Textbox endDateTextBox;
- private Datebox startDateBox;
-
- private Datebox endDateBox;
+ private Datebox openedDateBox = null;
private DateFormat dateFormat;
@@ -113,19 +121,6 @@ public class LeftTasksTreeRow extends GenericForwardComposer {
this.nameBox = nameBox;
}
- public Datebox getStartDateBox() {
- return startDateBox;
- }
-
- public void setStartDateBox(Datebox startDateBox) {
- this.startDateBox = startDateBox;
- this.startDateBox.setCompact(true);
- this.startDateBox.setFormat("dd/MM/yyyy");
- }
-
- public Datebox getEndDateBox() {
- return endDateBox;
- }
public Task getData() {
return task;
@@ -140,21 +135,35 @@ public class LeftTasksTreeRow extends GenericForwardComposer {
public void userWantsDateBox(Component component) {
if (component == startDateTextBox) {
if (canChangeStartDate()) {
- showDateBox(startDateBox, startDateTextBox);
+ createDateBox(startDateTextBox);
}
}
if (component == endDateTextBox) {
if (canChangeEndDate()) {
- showDateBox(endDateBox, endDateTextBox);
+ createDateBox(endDateTextBox);
}
}
}
- private void showDateBox(Datebox dateBox, Textbox associatedTextBox) {
- associatedTextBox.setVisible(false);
- dateBox.setVisible(true);
- dateBox.setFocus(true);
- dateBox.setOpen(true);
+ public void createDateBox(Textbox textbox) {
+ openedDateBox = new Datebox();
+ openedDateBox.setFormat("short");
+ openedDateBox.setButtonVisible(false);
+
+ try {
+ openedDateBox.setValue(dateFormat.parse(textbox.getValue()));
+ } catch (ParseException e) {
+ return;
+ }
+
+ registerOnEnterOpenDateBox(openedDateBox);
+ registerBlurListener(openedDateBox);
+ registerOnChangeDatebox(openedDateBox, textbox);
+
+ textbox.setVisible(false);
+ textbox.getParent().appendChild(openedDateBox);
+ openedDateBox.setFocus(true);
+ openedDateBox.setOpen(true);
}
private enum Navigation {
@@ -236,25 +245,15 @@ public class LeftTasksTreeRow extends GenericForwardComposer {
* the component that has lost focus
*/
public void dateBoxHasLostFocus(Datebox dateBox) {
- if (dateBox == startDateBox) {
- hideDateBox(startDateBox, startDateTextBox);
- }
- if (dateBox == endDateBox) {
- hideDateBox(endDateBox, endDateTextBox);
- }
- }
-
- private void hideDateBox(Datebox dateBoxToDissapear,
- Textbox associatedTextBox) {
- dateBoxToDissapear.setVisible(false);
- associatedTextBox.setVisible(true);
+ dateBox.getPreviousSibling().setVisible(true);
+ dateBox.setParent(null);
}
@Override
public void doAfterCompose(Component component) throws Exception {
super.doAfterCompose(component);
findComponents((Treerow) component);
- registerListeners();
+ registerTextboxesListeners();
updateComponents();
task
.addFundamentalPropertiesChangeListener(new PropertyChangeListener() {
@@ -266,27 +265,22 @@ public class LeftTasksTreeRow extends GenericForwardComposer {
});
}
- private void registerListeners() {
+ private void registerTextboxesListeners() {
if (disabilityConfiguration.isTreeEditable()) {
registerKeyboardListener(nameBox);
+ registerOnChange(nameBox);
registerKeyboardListener(startDateTextBox);
registerKeyboardListener(endDateTextBox);
-
registerOnEnterListener(startDateTextBox);
registerOnEnterListener(endDateTextBox);
-
- registerOnEnterOpenDateBox(startDateBox);
- registerOnEnterOpenDateBox(endDateBox);
-
- registerBlurListener(startDateBox);
- registerBlurListener(endDateBox);
-
- registerOnChange(nameBox);
- registerOnChange(startDateBox);
- registerOnChange(endDateBox);
+ registerOnChange(startDateTextBox);
+ registerOnChange(endDateTextBox);
}
}
+ public void registerDateboxListeners(Datebox datebox) {
+ }
+
private void findComponents(Treerow row) {
List