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}">