From d85543e0b3147ddf4815660879e1c7bb0c5ecda5 Mon Sep 17 00:00:00 2001 From: Farruco Sanjurjo Date: Fri, 22 Oct 2010 09:54:37 +0200 Subject: [PATCH] Replaced listener on zul code with listener on widget * When GanttPannel's zoomLevel is changed we have to update the timetracker and scroll the pannel, so we need the timetracker's scrollLeft value. Instead of asking for it to the GanttPannel after the listener is executed at Planner.java we will send both the selected zoomLevel and the scroll value. We replaced the listener at the zul file and added a new listener at Planner's widget class. Currently we are only sending the desired zoomLevel FEA: ItEr02S03MigracionZK5 --- .../main/java/org/zkoss/ganttz/Planner.java | 34 +++++++++++++++++++ .../web/ganttz/zul/plannerLayout.zul | 3 +- .../main/resources/web/js/ganttz/Planner.js | 10 ++++++ 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java index 8ff3d56e7..143c15115 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java @@ -53,9 +53,15 @@ import org.zkoss.ganttz.util.LongOperationFeedback; import org.zkoss.ganttz.util.LongOperationFeedback.ILongOperation; import org.zkoss.ganttz.util.WeakReferencedListeners; import org.zkoss.ganttz.util.WeakReferencedListeners.IListenerNotification; +import org.zkoss.json.JSONArray; +import org.zkoss.lang.Objects; +import org.zkoss.zk.au.AuRequest; +import org.zkoss.zk.au.AuService; +import org.zkoss.zk.mesg.MZk; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; 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; @@ -330,6 +336,34 @@ public class Planner extends HtmlMacroComponent { this.visibleChart = configuration.isExpandPlanningViewCharts(); ((South) getFellow("graphics")).setOpen(this.visibleChart); + + setAuService(new AuService(){ + public boolean service(AuRequest request, boolean everError){ + String command = request.getCommand(); + String[] requestData; + String zoomindex; + + if (command.equals("onZoomLevelChange")){ + requestData = retrieveData(request, 1); + zoomindex = requestData[0]; + + setZoomLevel((ZoomLevel)((Listbox)getFellow("listZoomLevels")).getModel().getElementAt(Integer.parseInt(zoomindex))); + return true; + } + return false; + } + + private String[] retrieveData(AuRequest request, int requestLength){ + String [] requestData = (String[]) ((JSONArray)request.getData().get("")).toArray(new String[requestLength]); + + if (requestData == null || requestData.length != requestLength) { + throw new UiException(MZk.ILLEGAL_REQUEST_WRONG_DATA, + new Object[] { Objects.toString(requestData), this }); + } + + return requestData; + } + }); } private void resettingPreviousComponentsToNull() { diff --git a/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul b/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul index e3470c3dd..c05f375d7 100644 --- a/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul +++ b/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul @@ -43,8 +43,7 @@ planner = self; + model="${planner.zoomLevels}">