From fa77906d04b337c1e69822c235ad2473b995a136 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= Date: Thu, 6 Oct 2011 18:44:01 +0200 Subject: [PATCH] [Bug #1203] Added event on client side to send the data of the zoom change and listener on the server to store them. These data are used on the listeners of the zoom event to be able to draw the changes correctly. FEA: ItEr75S08MigrationZK5 --- .../LimitingResourcesPanel.java | 38 +++++++++++++++++++ .../LimitingResourcesPanel.js | 7 ++++ 2 files changed, 45 insertions(+) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesPanel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesPanel.java index 6bf312341..31eca5963 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesPanel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesPanel.java @@ -45,9 +45,13 @@ import org.zkoss.ganttz.timetracker.zoom.ZoomLevel; import org.zkoss.ganttz.util.ComponentsFinder; import org.zkoss.ganttz.util.Interval; import org.zkoss.ganttz.util.MutableTreeModel; +import org.zkoss.zk.au.AuRequest; +import org.zkoss.zk.au.AuService; import org.zkoss.zk.au.out.AuInvoke; +import org.zkoss.zk.mesg.MZk; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.HtmlMacroComponent; +import org.zkoss.zk.ui.UiException; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; @@ -151,6 +155,40 @@ public class LimitingResourcesPanel extends HtmlMacroComponent { treeModel); leftPane = new LimitingResourcesLeftPane(treeModel); + + setAuService(new AuService(){ + public boolean service(AuRequest request, boolean everError){ + String command = request.getCommand(); + int zoomindex; + int scrollLeft; + + if (command.equals("onZoomLevelChange")){ + zoomindex= (Integer) retrieveData(request, "zoomindex"); + scrollLeft = (Integer) retrieveData(request, "scrollLeft"); + + setZoomLevel((ZoomLevel)((Listbox)getFellow("listZoomLevels")) + .getModel().getElementAt(zoomindex), + scrollLeft); + return true; + } + return false; + } + + private Object retrieveData(AuRequest request, String key){ + Object value = request.getData().get(key); + if ( value == null) + throw new UiException(MZk.ILLEGAL_REQUEST_WRONG_DATA, + new Object[] { key, this }); + + return value; + } + }); + } + + public void setZoomLevel(ZoomLevel zoomLevel, int scrollLeft) { + savePreviousData(); + getTimeTrackerComponent().updateDayScroll(); + getTimeTrackerComponent().setZoomLevel(zoomLevel, scrollLeft); } public void appendQueueElementToQueue(LimitingResourceQueueElement element) { diff --git a/navalplanner-webapp/src/main/resources/web/js/limitingresources/LimitingResourcesPanel.js b/navalplanner-webapp/src/main/resources/web/js/limitingresources/LimitingResourcesPanel.js index ef83a59c7..125cd33cc 100644 --- a/navalplanner-webapp/src/main/resources/web/js/limitingresources/LimitingResourcesPanel.js +++ b/navalplanner-webapp/src/main/resources/web/js/limitingresources/LimitingResourcesPanel.js @@ -17,11 +17,18 @@ limitingresources.LimitingResourcesPanel = zk.$extends(zk.Macro,{ this._initializeProperties(); this.domListen_(this._rightpanellayout,'onScroll', '_listenToScroll'); + this.domListen_(jq('.resourcesloadlayout .toolbar-box select')[0], 'onChange', '_zoomLevelChanged'); }, unbind_ : function(){ this.domUnlisten_(this._rightpanellayout,'onScroll', '_listenToScroll'); + this.domUnlisten_(jq('.resourcesloadlayout .toolbar-box select')[0], 'onChange', '_zoomLevelChanged'); this.$supers('unbind_', arguments); }, + _zoomLevelChanged : function(event){ + var zoomindex = event.domTarget.selectedIndex; + var scrollLeft = parseFloat(jq('.timetrackergap').css('left').replace(/px/, "")); + zAu.send(new zk.Event(this, 'onZoomLevelChange', {zoomindex : zoomindex, scrollLeft : scrollLeft})); + }, _initializeProperties : function(){ this._rightpanellayout = jq('.rightpanellayout div:first'); this._timetrackergap = jq('.timetrackergap');