ItEr18S09CUCreacionProxectoPlanificacionItEr17S10: Fixing problem. When splitting a task that was after one taskgroup, let's call it A, with its children expanded, it added the new taskgroup before the children of the taskgroup A.
This commit is contained in:
parent
8c76cabb50
commit
ac8eaf98c3
3 changed files with 57 additions and 36 deletions
|
|
@ -128,11 +128,21 @@ public class TaskComponent extends Div implements AfterCompose {
|
|||
}
|
||||
};
|
||||
|
||||
public static TaskComponent asTaskComponent(Task task, TaskList taskList) {
|
||||
public static TaskComponent asTaskComponent(Task task, TaskList taskList,
|
||||
boolean isTopLevel) {
|
||||
final TaskComponent result;
|
||||
if (task.isContainer()) {
|
||||
return TaskContainerComponent.asTask((TaskContainer) task, taskList);
|
||||
result = TaskContainerComponent
|
||||
.asTask((TaskContainer) task, taskList);
|
||||
} else {
|
||||
result = new TaskComponent(task);
|
||||
}
|
||||
return new TaskComponent(task);
|
||||
result.isTopLevel = isTopLevel;
|
||||
return result;
|
||||
}
|
||||
|
||||
public static TaskComponent asTaskComponent(Task task, TaskList taskList) {
|
||||
return asTaskComponent(task, taskList, true);
|
||||
}
|
||||
|
||||
public TaskComponent(Task task) {
|
||||
|
|
@ -174,6 +184,8 @@ public class TaskComponent extends Div implements AfterCompose {
|
|||
|
||||
private List<WeakReference<DependencyAddedListener>> dependencyListeners = new LinkedList<WeakReference<DependencyAddedListener>>();
|
||||
|
||||
private boolean isTopLevel;
|
||||
|
||||
private final Task task;
|
||||
private PropertyChangeListener propertiesListener;
|
||||
|
||||
|
|
@ -344,4 +356,9 @@ public class TaskComponent extends Div implements AfterCompose {
|
|||
getDependencyList().taskRemoved(this.getTask());
|
||||
this.detach();
|
||||
}
|
||||
|
||||
public boolean isTopLevel() {
|
||||
return isTopLevel;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,11 +53,14 @@ public class TaskContainerComponent extends TaskComponent implements
|
|||
taskContainer.addExpandListener(expandListener);
|
||||
this.taskList = taskList;
|
||||
for (Task task : taskContainer.getTasks()) {
|
||||
getCurrentComponents().add(
|
||||
TaskComponent.asTaskComponent(task, taskList));
|
||||
getCurrentComponents().add(createChild(task));
|
||||
}
|
||||
}
|
||||
|
||||
private TaskComponent createChild(Task task) {
|
||||
return TaskComponent.asTaskComponent(task, this.taskList, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void publishDescendants(Map<Task, TaskComponent> resultAccumulated) {
|
||||
for (TaskComponent taskComponent : getCurrentComponents()) {
|
||||
|
|
@ -79,7 +82,7 @@ public class TaskContainerComponent extends TaskComponent implements
|
|||
Collection<? extends Task> newTasks) {
|
||||
List<TaskComponent> taskComponents = new ArrayList<TaskComponent>();
|
||||
for (Task task : newTasks) {
|
||||
taskComponents.add(TaskComponent.asTaskComponent(task, taskList));
|
||||
taskComponents.add(createChild(task));
|
||||
}
|
||||
|
||||
if (insertionPosition == null) {
|
||||
|
|
@ -103,7 +106,8 @@ public class TaskContainerComponent extends TaskComponent implements
|
|||
|
||||
private void addAllAt(Component previous, List<TaskComponent> toAdd) {
|
||||
for (TaskComponent subtaskComponent : toAdd) {
|
||||
taskList.addTaskComponent(previous, subtaskComponent, true);
|
||||
taskList.addTaskComponent(previous.getNextSibling(),
|
||||
subtaskComponent, true);
|
||||
previous = subtaskComponent;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,7 +60,8 @@ public class TaskList extends XulElement implements AfterCompose {
|
|||
|
||||
public static TaskList createFor(
|
||||
CommandOnTaskContextualized<?> editTaskCommand,
|
||||
List<Task> tasks, List<? extends CommandOnTaskContextualized<?>> commandsOnTasksContextualized) {
|
||||
List<Task> tasks,
|
||||
List<? extends CommandOnTaskContextualized<?>> commandsOnTasksContextualized) {
|
||||
TaskList result = new TaskList(editTaskCommand, tasks,
|
||||
commandsOnTasksContextualized);
|
||||
return result;
|
||||
|
|
@ -84,16 +85,12 @@ public class TaskList extends XulElement implements AfterCompose {
|
|||
return result;
|
||||
}
|
||||
|
||||
public synchronized void addTaskComponent(Component afterThis,
|
||||
public synchronized void addTaskComponent(Component beforeThis,
|
||||
final TaskComponent taskComponent, boolean relocate) {
|
||||
boolean isFirst = false;
|
||||
if (afterThis == null) {
|
||||
insertBefore(taskComponent, getFirstTaskComponent());
|
||||
isFirst = true;
|
||||
} else {
|
||||
insertBefore(taskComponent, afterThis == null ? null : afterThis
|
||||
.getNextSibling());
|
||||
}
|
||||
final boolean isFirst = getFirstTopTaskComponent() == null
|
||||
|| getFirstTopTaskComponent().equals(beforeThis);
|
||||
insertBefore(taskComponent, beforeThis);
|
||||
|
||||
addContextMenu(taskComponent);
|
||||
addListenerForTaskComponentEditForm(taskComponent);
|
||||
ListIterator<WeakReference<DependencyAddedListener>> iterator = listeners
|
||||
|
|
@ -126,18 +123,11 @@ public class TaskList extends XulElement implements AfterCompose {
|
|||
|
||||
public synchronized void addTaskComponent(
|
||||
final TaskComponent taskComponent, boolean relocate) {
|
||||
addTaskComponent(getLastTaskComponent(), taskComponent, relocate);
|
||||
addTaskComponent(null, taskComponent, relocate);
|
||||
}
|
||||
|
||||
private TaskComponent getLastTaskComponent() {
|
||||
List<TaskComponent> taskComponents = getTaskComponents();
|
||||
if (taskComponents.isEmpty())
|
||||
return null;
|
||||
return taskComponents.get(taskComponents.size() - 1);
|
||||
}
|
||||
|
||||
private TaskComponent getFirstTaskComponent() {
|
||||
List<TaskComponent> taskComponents = getTaskComponents();
|
||||
private TaskComponent getFirstTopTaskComponent() {
|
||||
List<TaskComponent> taskComponents = getTopLevelTaskComponents();
|
||||
if (taskComponents.isEmpty())
|
||||
return null;
|
||||
return taskComponents.get(0);
|
||||
|
|
@ -149,15 +139,15 @@ public class TaskList extends XulElement implements AfterCompose {
|
|||
addTaskComponent(TaskComponent.asTaskComponent(t, this), true);
|
||||
}
|
||||
} else if (position.isAtTop()) {
|
||||
int afterThisPosition = position.getInsertionPosition() - 1;
|
||||
List<TaskComponent> taskComponents = getTaskComponents();
|
||||
TaskComponent afterThis = afterThisPosition < 0 ? null
|
||||
: afterThisPosition >= taskComponents.size() ? getLastTaskComponent()
|
||||
: getTaskComponents().get(afterThisPosition);
|
||||
final int insertionPosition = position.getInsertionPosition();
|
||||
List<TaskComponent> topTaskComponents = getTopLevelTaskComponents();
|
||||
Component beforeThis = insertionPosition < topTaskComponents.size() ? topTaskComponents
|
||||
.get(insertionPosition)
|
||||
: null;
|
||||
for (Task t : newTasks) {
|
||||
TaskComponent toAdd = TaskComponent.asTaskComponent(t, this);
|
||||
addTaskComponent(afterThis, toAdd, true);
|
||||
afterThis = toAdd;
|
||||
addTaskComponent(beforeThis, toAdd, true);
|
||||
beforeThis = toAdd.getNextSibling();
|
||||
}
|
||||
} else {
|
||||
Task mostRemoteAncestor = position.getMostRemoteAncestor();
|
||||
|
|
@ -182,8 +172,8 @@ public class TaskList extends XulElement implements AfterCompose {
|
|||
return null;
|
||||
}
|
||||
|
||||
|
||||
private void addListenerForTaskComponentEditForm(final TaskComponent taskComponent) {
|
||||
private void addListenerForTaskComponentEditForm(
|
||||
final TaskComponent taskComponent) {
|
||||
if (editTaskCommand == null)
|
||||
return;
|
||||
taskComponent.addEventListener("onDoubleClick", new EventListener() {
|
||||
|
|
@ -222,6 +212,16 @@ public class TaskList extends XulElement implements AfterCompose {
|
|||
return getTimeTracker().getMapper();
|
||||
}
|
||||
|
||||
private List<TaskComponent> getTopLevelTaskComponents() {
|
||||
List<TaskComponent> result = new ArrayList<TaskComponent>();
|
||||
for (TaskComponent taskComponent : getTaskComponents()) {
|
||||
if (taskComponent.isTopLevel()) {
|
||||
result.add(taskComponent);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<TaskComponent> getTaskComponents() {
|
||||
ArrayList<TaskComponent> result = new ArrayList<TaskComponent>();
|
||||
for (Object child : getChildren()) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue