ItEr31S12ValidacionEProbasFuncionaisItEr30S17: Updating the load graphic when saving

bug #66
This commit is contained in:
Óscar González Fernández 2009-10-22 16:42:16 +02:00
parent 689bd53d1d
commit 73d52a2ba2
3 changed files with 45 additions and 3 deletions

View file

@ -29,6 +29,14 @@ import org.zkoss.ganttz.extensions.ICommand;
*/
public interface ISaveCommand extends ICommand<TaskElement> {
public interface IAfterSaveListener {
void onAfterSave();
}
public void setState(PlanningState planningState);
public void addListener(IAfterSaveListener listener);
public void removeListener(IAfterSaveListener listener);
}

View file

@ -47,6 +47,7 @@ import org.navalplanner.business.planner.entities.TaskMilestone;
import org.navalplanner.business.resources.daos.IResourceDAO;
import org.navalplanner.business.resources.entities.Resource;
import org.navalplanner.web.common.ViewSwitcher;
import org.navalplanner.web.planner.ISaveCommand.IAfterSaveListener;
import org.navalplanner.web.planner.allocation.ResourceAllocationController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
@ -128,7 +129,8 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel {
"The order {0} must be scheduled", orderReloaded));
PlannerConfiguration<TaskElement> configuration = createConfiguration(orderReloaded);
addAdditional(additional, configuration);
configuration.addGlobalCommand(buildSaveCommand());
ISaveCommand saveCommand = buildSaveCommand();
configuration.addGlobalCommand(saveCommand);
configuration.addCommandOnTask(buildResourceAllocationCommand(resourceAllocationController));
configuration.addCommandOnTask(buildSplitCommand(splittingController));
@ -146,7 +148,7 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel {
planner.setConfiguration(configuration);
setupChart(orderReloaded, chartComponent, planner.getTimeTracker());
setupChart(orderReloaded, chartComponent, planner.getTimeTracker(), saveCommand);
}
private void addAdditional(List<ICommand<TaskElement>> additional,
@ -206,11 +208,12 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel {
}
private void setupChart(Order orderReloaded, Timeplot chartComponent,
TimeTracker timeTracker) {
TimeTracker timeTracker, ISaveCommand saveCommand) {
loadChartFiller = new OrderLoadChartFiller(orderReloaded);
loadChartFiller.fillChart(chartComponent, timeTracker
.getRealInterval(), timeTracker.getHorizontalSize());
fillChartOnZoomChange(chartComponent, timeTracker);
fillChartOnSave(chartComponent, timeTracker, saveCommand);
}
private void fillChartOnZoomChange(final Timeplot chartComponent,
@ -229,6 +232,18 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel {
timeTracker.addZoomListener(zoomListener);
}
private void fillChartOnSave(final Timeplot chartComponent,
final TimeTracker timeTracker, ISaveCommand saveCommand) {
saveCommand.addListener(new IAfterSaveListener() {
@Override
public void onAfterSave() {
loadChartFiller.fillChart(chartComponent, timeTracker
.getRealInterval(), timeTracker.getHorizontalSize());
}
});
}
private PlannerConfiguration<TaskElement> createConfiguration(
Order orderReloaded) {
ITaskElementAdapter taskElementAdapter = getTaskElementAdapter();

View file

@ -65,6 +65,8 @@ public class SaveCommand implements ISaveCommand {
@Autowired
private IAdHocTransactionService transactionService;
private List<IAfterSaveListener> listeners = new ArrayList<IAfterSaveListener>();
@Override
public void setState(PlanningState state) {
this.state = state;
@ -79,9 +81,16 @@ public class SaveCommand implements ISaveCommand {
return null;
}
});
fireAfterSave();
notifyUserThatSavingIsDone();
}
private void fireAfterSave() {
for (IAfterSaveListener listener : listeners) {
listener.onAfterSave();
}
}
private void notifyUserThatSavingIsDone() {
try {
Messagebox.show(_("Scheduling saved"), _("Information"), Messagebox.OK,
@ -192,4 +201,14 @@ public class SaveCommand implements ISaveCommand {
return _("Save");
}
@Override
public void addListener(IAfterSaveListener listener) {
listeners.add(listener);
}
@Override
public void removeListener(IAfterSaveListener listener) {
listeners.remove(listener);
}
}