ItEr60S04ValidacionEProbasFuncionaisItEr59S04 : [Bug #546] Fix bug.

Now it updates the advance of the current taskComponent and its
parents when the user accepts but before closing the pop-up.
This commit is contained in:
Susana Montes Pedreira 2010-07-14 14:10:14 +02:00 committed by Javier Moran Rua
parent 381f0a0807
commit 269277eedb
2 changed files with 34 additions and 32 deletions

View file

@ -151,7 +151,7 @@ public class TaskList extends XulElement implements AfterCompose {
reload(true);
}
TaskComponent find(Task task) {
public TaskComponent find(Task task) {
List<TaskComponent> taskComponents = getTaskComponents();
for (TaskComponent taskComponent : taskComponents) {
if (taskComponent.getTask().equals(task)) {
@ -311,31 +311,8 @@ public class TaskList extends XulElement implements AfterCompose {
}
for (CommandOnTaskContextualized<?> command : commandsOnTasksContextualized) {
if (command.accepts(taskComponent)) {
if (command.getName().equals("Advance assignment")) {
final CommandOnTaskContextualized<?> commandAdvances = command;
menuBuilder.item(command.getName(), command.getIcon(),
new ItemAction<TaskComponent>() {
@Override
public void onEvent(TaskComponent choosen,
Event event) {
commandAdvances.doAction(choosen);
if (commandAdvances.getMapper() != null) {
List<Task> listTaskComponents = new ArrayList<Task>(
commandAdvances
.getMapper()
.getParents(
choosen
.getTask()));
listTaskComponents.add(choosen
.getTask());
updateTaskAndItsParents(listTaskComponents);
}
}
});
} else {
menuBuilder.item(command.getName(), command.getIcon(),
command.toItemAction());
}
}
}
Menupopup result = menuBuilder.createWithoutSettingContext();
@ -345,14 +322,6 @@ public class TaskList extends XulElement implements AfterCompose {
return contextMenus.get(taskComponent);
}
private void updateTaskAndItsParents(List<Task> taskList) {
for (Task task : taskList) {
TaskComponent choosen = this.find(task);
choosen.updateCompletionIfPossible();
choosen.updateTooltipText();
}
}
GanttPanel getGanttPanel() {
return (GanttPanel) getParent();
}

View file

@ -20,6 +20,9 @@
package org.navalplanner.web.planner.advances;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.navalplanner.business.orders.entities.OrderElement;
@ -29,6 +32,9 @@ import org.navalplanner.web.orders.ManageOrderElementAdvancesController;
import org.navalplanner.web.planner.order.PlanningState;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
import org.zkoss.ganttz.TaskComponent;
import org.zkoss.ganttz.TaskList;
import org.zkoss.ganttz.data.Task;
import org.zkoss.ganttz.extensions.IContextWithPlannerTask;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.SuspendNotAllowedException;
@ -52,6 +58,8 @@ public class AdvanceAssignmentPlanningController extends GenericForwardComposer
private Window window;
private IContextWithPlannerTask<TaskElement> context;
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
@ -63,6 +71,7 @@ public class AdvanceAssignmentPlanningController extends GenericForwardComposer
TaskElement task,
PlanningState planningState) {
this.context = context;
advanceAssignmentPlanningModel.initAdvancesFor(task, context,
planningState);
showAdvanceWindow(advanceAssignmentPlanningModel.getOrderElement());
@ -98,10 +107,34 @@ public class AdvanceAssignmentPlanningController extends GenericForwardComposer
boolean result = manageOrderElementAdvancesController.close();
if (result) {
advanceAssignmentPlanningModel.accept();
updateTaskComponents();
close();
}
}
private void updateTaskComponents() {
if (context.getRelativeTo() instanceof TaskComponent) {
// update the current taskComponent
TaskComponent taskComponent = (TaskComponent) context
.getRelativeTo();
updateTaskComponent(taskComponent);
// update the current taskComponent's parents
List<Task> parents = new ArrayList<Task>(context.getMapper()
.getParents(taskComponent.getTask()));
TaskList taskList = taskComponent.getTaskList();
for (Task task : parents) {
TaskComponent parentComponent = taskList.find(task);
updateTaskComponent(parentComponent);
}
}
}
private void updateTaskComponent(TaskComponent taskComponent) {
taskComponent.updateCompletionIfPossible();
taskComponent.updateTooltipText();
}
private void close() {
window.setVisible(false);
}