From 73d52a2ba2a8e721eb4b4ad2a4e932e72523d99f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Thu, 22 Oct 2009 16:42:16 +0200 Subject: [PATCH] ItEr31S12ValidacionEProbasFuncionaisItEr30S17: Updating the load graphic when saving bug #66 --- .../web/planner/ISaveCommand.java | 8 +++++++ .../web/planner/OrderPlanningModel.java | 21 ++++++++++++++++--- .../navalplanner/web/planner/SaveCommand.java | 19 +++++++++++++++++ 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/ISaveCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/ISaveCommand.java index 933a809b4..98648a531 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/ISaveCommand.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/ISaveCommand.java @@ -29,6 +29,14 @@ import org.zkoss.ganttz.extensions.ICommand; */ public interface ISaveCommand extends ICommand { + public interface IAfterSaveListener { + void onAfterSave(); + } + public void setState(PlanningState planningState); + public void addListener(IAfterSaveListener listener); + + public void removeListener(IAfterSaveListener listener); + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java index c39187743..f5901e464 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/OrderPlanningModel.java @@ -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 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> 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 createConfiguration( Order orderReloaded) { ITaskElementAdapter taskElementAdapter = getTaskElementAdapter(); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SaveCommand.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SaveCommand.java index 381b106d5..f4ce78e93 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SaveCommand.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/SaveCommand.java @@ -65,6 +65,8 @@ public class SaveCommand implements ISaveCommand { @Autowired private IAdHocTransactionService transactionService; + private List listeners = new ArrayList(); + @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); + } + }