From 2c812f4d65e4ef3488a1d1b376b98a55c2ccf0cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Mon, 13 Jul 2009 14:01:40 +0200 Subject: [PATCH] ItEr17S07RFComportamentoGraficoPlanificadorItEr16S09:When pressing arrow down at a taskDetail it goes to one of its children(if present and the task is expanded) instead of the next sibling. --- .../java/org/zkoss/ganttz/ListDetails.java | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/ListDetails.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/ListDetails.java index f69565a5c..7386f361a 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/ListDetails.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/ListDetails.java @@ -37,7 +37,7 @@ public class ListDetails extends HtmlMacroComponent { taskBean); String cssClass = "depth_" + path.length; TaskDetail taskDetail = TaskDetail.create(taskBean, - new TreeNavigator(tasksTreeModel, path)); + new TreeNavigator(tasksTreeModel, taskBean)); if (taskBean instanceof TaskContainerBean) { expandWhenOpened((TaskContainerBean) taskBean, item); } @@ -101,9 +101,12 @@ public class ListDetails extends HtmlMacroComponent { private final class TreeNavigator implements ITaskDetailNavigator { private final int[] pathToNode; + private final TaskBean task; - private TreeNavigator(TreeModel treemodel, int[] pathToNode) { - this.pathToNode = pathToNode; + private TreeNavigator(TreeModel treemodel, TaskBean task) { + this.task = task; + this.pathToNode = tasksTreeModel.getPath(tasksTreeModel.getRoot(), + task); } @Override @@ -129,12 +132,26 @@ public class ListDetails extends HtmlMacroComponent { int childCount = tasksTreeModel.getChildCount(parent); int lastPosition = pathToNode[pathToNode.length - 1]; int belowPosition = lastPosition + 1; - if (belowPosition < childCount) { + if (isExpanded() && hasChildren()) { + return getChild(task, 0); + } else if (belowPosition < childCount) { return getChild(parent, belowPosition); } return null; } + private boolean hasChildren() { + return task instanceof TaskContainerBean + && ((TaskContainerBean) task).getTasks().size() > 0; + } + + private boolean isExpanded() { + if (task instanceof TaskContainerBean) { + return ((TaskContainerBean) task).isExpanded(); + } + return false; + } + private TaskBean getParent(int[] path) { TaskBean current = tasksTreeModel.getRoot(); for (int i = 0; i < path.length - 1; i++) {