From ee7c6d708a0c9a99c6678420fcdae4503138330d Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Wed, 6 Feb 2013 14:13:17 +0100 Subject: [PATCH] Get zoom from session in company Gantt view Add a listener in order to update the value in the session when user changes the zoom. FEA: ItEr77S15FilteringEnhancements --- .../planner/company/CompanyPlanningModel.java | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) 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(); }