diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java index a333f7488..0f8043523 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/company/CompanyPlanningModel.java @@ -233,13 +233,13 @@ public class CompanyPlanningModel implements ICompanyPlanningModel { addPrintSupport(configuration); disableSomeFeatures(configuration); - ZoomLevel defaultZoomLevel = OrderPlanningModel - .calculateDefaultLevel(configuration); - planner.setInitialZoomLevel(defaultZoomLevel); + planner.setInitialZoomLevel(getZoomLevel(configuration)); configuration.setSecondLevelModificators(BankHolidaysMarker.create(getDefaultCalendar())); planner.setConfiguration(configuration); + setupZoomLevelListener(planner); + if(expandPlanningViewChart) { //if the chart is expanded, we load the data now setupChartAndItsContent(planner, chartComponent); @@ -266,6 +266,33 @@ public class CompanyPlanningModel implements ICompanyPlanningModel { } } + private ZoomLevel getZoomLevel( + PlannerConfiguration configuration) { + ZoomLevel sessionZoom = (ZoomLevel) Sessions.getCurrent().getAttribute( + "zoomLevel"); + if (sessionZoom != null) { + return sessionZoom; + } + return OrderPlanningModel.calculateDefaultLevel(configuration); + } + + private void setupZoomLevelListener(Planner planner) { + planner.getTimeTracker().addZoomListener(getSessionZoomLevelListener()); + } + + private IZoomLevelChangedListener getSessionZoomLevelListener() { + IZoomLevelChangedListener zoomListener = new IZoomLevelChangedListener() { + + @Override + public void zoomLevelChanged(ZoomLevel detailLevel) { + Sessions.getCurrent().setAttribute("zoomLevel", detailLevel); + } + }; + + keepAliveZoomListeners.add(zoomListener); + return zoomListener; + } + private BaseCalendar getDefaultCalendar() { return configurationDAO.getConfiguration().getDefaultCalendar(); }