From 98f8a960e2355be8fb76bdb7413b699530131fa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Wed, 10 Mar 2010 00:10:19 +0100 Subject: [PATCH] ItEr50S04ValidacionEProbasFuncionaisItEr49S04: Simplifying addTasks to a position using reload mechanism --- .../zkoss/ganttz/TaskContainerComponent.java | 65 ------------------- .../main/java/org/zkoss/ganttz/TaskList.java | 55 ++++------------ 2 files changed, 12 insertions(+), 108 deletions(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/TaskContainerComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/TaskContainerComponent.java index 58cedcf4f..5bbdf4784 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/TaskContainerComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/TaskContainerComponent.java @@ -21,13 +21,10 @@ package org.zkoss.ganttz; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.ListIterator; import java.util.Map; -import org.apache.commons.lang.Validate; -import org.zkoss.ganttz.data.Position; import org.zkoss.ganttz.data.Task; import org.zkoss.ganttz.data.TaskContainer; import org.zkoss.ganttz.data.TaskContainer.IExpandListener; @@ -94,35 +91,6 @@ public class TaskContainerComponent extends TaskComponent implements super.remove(); } - private void add(Integer insertionPosition, - Collection newTasks) { - List taskComponents = new ArrayList(); - for (Task task : newTasks) { - taskComponents.add(createChild(task)); - } - - if (insertionPosition == null) { - subtaskComponents.addAll(taskComponents); - } else { - subtaskComponents.addAll(insertionPosition, taskComponents); - } - - if (isExpanded()) { - TaskComponent previous = insertionPosition == 0 ? this - : subtaskComponents.get(insertionPosition - 1); - addAllAt(previous.getRow(), taskComponents, true); - } - } - - private void addAllAt(TaskRow previous, List toAdd, - boolean recolate) { - for (TaskComponent subtaskComponent : toAdd) { - taskList.addTaskComponent((TaskRow) previous.getNextSibling(), - subtaskComponent, recolate); - previous = subtaskComponent.getRow(); - } - } - private List getCurrentComponents() { ListIterator listIterator = subtaskComponents .listIterator(); @@ -136,17 +104,6 @@ public class TaskContainerComponent extends TaskComponent implements return subtaskComponents; } - private static int find(List currentComponents, Task task) { - int i = 0; - for (TaskComponent t : currentComponents) { - if (t.getTask().equals(task)) { - return i; - } - i++; - } - return -1; - } - public boolean isExpanded() { return getTaskContainer().isExpanded(); } @@ -160,26 +117,4 @@ public class TaskContainerComponent extends TaskComponent implements return super.calculateClass() + " " + (getTaskContainer().isExpanded() ? "expanded" : "closed"); } - - public void insert(Position position, Collection newTasks) { - if (position.getParent().equals(getTask())) { - add(position.getInsertionPosition(), newTasks); - } else { - Task mostRemoteAncestor = position.getMostRemoteAncestor(); - Validate.isTrue(mostRemoteAncestor.equals(getTask())); - position = position.pop(); - Task next = position.getMostRemoteAncestor(); - List currentComponents = getCurrentComponents(); - int find = find(currentComponents, next); - TaskComponent taskComponent = currentComponents.get(find); - if (taskComponent instanceof TaskContainerComponent) { - TaskContainerComponent container = (TaskContainerComponent) taskComponent; - container.insert(position, newTasks); - } else { - // TODO turn TaskComponent into container - } - } - - } - } \ No newline at end of file diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/TaskList.java b/ganttzk/src/main/java/org/zkoss/ganttz/TaskList.java index fdbec9834..47b17c23f 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/TaskList.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/TaskList.java @@ -117,7 +117,7 @@ public class TaskList extends XulElement implements AfterCompose { return asDependencyComponents(Arrays.asList(dependency)).get(0); } - public synchronized void addTaskComponent(TaskRow beforeThis, + private synchronized void addTaskComponent(TaskRow beforeThis, final TaskComponent taskComponent, boolean relocate) { insertBefore(taskComponent.getRow(), beforeThis); addContextMenu(taskComponent); @@ -130,42 +130,17 @@ public class TaskList extends XulElement implements AfterCompose { } } - public synchronized void addTaskComponent( - final TaskComponent taskComponent, boolean relocate) { - addTaskComponent(null, taskComponent, relocate); - } - public void addTasks(Position position, Collection newTasks) { + publishAsComponents(newTasks); if (position.isAppendToTop()) { - for (Task t : newTasks) { - TaskComponent taskComponent = TaskComponent.asTaskComponent(t, - this); - addTaskComponent(taskComponent, true); - taskComponent.publishTaskComponents(taskComponentByTask); - } + currentTotalTasks.addAll(newTasks); } else if (position.isAtTop()) { final int insertionPosition = position.getInsertionPosition(); - List topTaskComponents = getTopLevelTaskComponents(); - TaskRow beforeThis = insertionPosition < topTaskComponents.size() ? topTaskComponents - .get(insertionPosition).getRow() - : null; - for (Task t : newTasks) { - TaskComponent toAdd = TaskComponent.asTaskComponent(t, this); - addTaskComponent(beforeThis, toAdd, true); - toAdd.publishTaskComponents(taskComponentByTask); - beforeThis = (TaskRow) toAdd.getRow().getNextSibling(); - } - } else { - Task mostRemoteAncestor = position.getMostRemoteAncestor(); - TaskComponent taskComponent = find(mostRemoteAncestor); - if (taskComponent instanceof TaskContainerComponent) { - TaskContainerComponent container = (TaskContainerComponent) taskComponent; - container.insert(position, newTasks); - } else { - // TODO turn taskComponent into container - } - + currentTotalTasks.addAll(insertionPosition, newTasks); } + // if the position is children of some already existent task when + // reloading it will be added if the predicate tells so + reload(true); } TaskComponent find(Task task) { @@ -223,16 +198,6 @@ public class TaskList extends XulElement implements AfterCompose { return getTimeTrackerComponent().getTimeTracker(); } - private List getTopLevelTaskComponents() { - List result = new ArrayList(); - for (TaskComponent taskComponent : getTaskComponents()) { - if (taskComponent.isTopLevel()) { - result.add(taskComponent); - } - } - return result; - } - private List getTaskComponents() { ArrayList result = new ArrayList(); for (Object child : getChildren()) { @@ -257,7 +222,11 @@ public class TaskList extends XulElement implements AfterCompose { private void publishOriginalTasksAsComponents() { taskComponentByTask = new HashMap(); - for (Task task : currentTotalTasks) { + publishAsComponents(currentTotalTasks); + } + + private void publishAsComponents(Collection newTasks) { + for (Task task : newTasks) { TaskComponent taskComponent = TaskComponent.asTaskComponent(task, this); taskComponent.publishTaskComponents(taskComponentByTask);