diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/GanttPanel.java b/ganttzk/src/main/java/org/zkoss/ganttz/GanttPanel.java index c75970088..61472597d 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/GanttPanel.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/GanttPanel.java @@ -26,6 +26,7 @@ import org.zkoss.ganttz.adapters.IDisabilityConfiguration; import org.zkoss.ganttz.data.GanttDiagramGraph; import org.zkoss.ganttz.timetracker.TimeTracker; import org.zkoss.ganttz.timetracker.TimeTrackerComponent; +import org.zkoss.ganttz.timetracker.zoom.ZoomLevel; import org.zkoss.zk.au.out.AuInvoke; import org.zkoss.zk.ui.ext.AfterCompose; import org.zkoss.zul.impl.XulElement; @@ -103,4 +104,9 @@ public class GanttPanel extends XulElement implements AfterCompose { public TimeTracker getTimeTracker() { return timeTrackerComponent.getTimeTracker(); } + + public void setZoomLevel(ZoomLevel zoomLevel) { + getTimeTracker().setZoomLevel(zoomLevel); + } + } \ No newline at end of file diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java index 44025117e..c955dbb70 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/Planner.java @@ -41,6 +41,7 @@ import org.zkoss.ganttz.print.Print; import org.zkoss.ganttz.timetracker.TimeTracker; import org.zkoss.ganttz.timetracker.TimeTrackerComponent; import org.zkoss.ganttz.timetracker.TimeTrackerComponentWithoutColumns; +import org.zkoss.ganttz.timetracker.zoom.ZoomLevel; import org.zkoss.ganttz.util.ComponentsFinder; import org.zkoss.ganttz.util.LongOperationFeedback; import org.zkoss.ganttz.util.OnZKDesktopRegistry; @@ -50,7 +51,9 @@ import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.HtmlMacroComponent; import org.zkoss.zk.ui.util.Clients; +import org.zkoss.zul.ListModel; import org.zkoss.zul.Separator; +import org.zkoss.zul.SimpleListModel; import org.zkoss.zul.api.Button; public class Planner extends HtmlMacroComponent { @@ -137,6 +140,28 @@ public class Planner extends HtmlMacroComponent { } } + public ListModel getZoomLevels() { + return new SimpleListModel(ZoomLevel.values()); + } + + public void setZoomLevel(final ZoomLevel zoomLevel) { + if (ganttPanel == null) { + return; + } + LongOperationFeedback.execute(ganttPanel, new ILongOperation() { + + @Override + public String getName() { + return _("changing zoom"); + } + + @Override + public void doAction() throws Exception { + ganttPanel.setZoomLevel(zoomLevel); + } + }); + } + public void zoomIncrease() { if (ganttPanel == null) { return; diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTracker.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTracker.java index 5f684ae53..1c74435aa 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTracker.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTracker.java @@ -152,6 +152,11 @@ public class TimeTracker { invalidatingChangeHappened(); } + public void setZoomLevel(ZoomLevel zoomLevel) { + detailLevel = zoomLevel; + invalidatingChangeHappened(); + } + private void invalidatingChangeHappened() { clearDetailLevelDependantData(); fireZoomChanged(); diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/ZoomLevel.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/ZoomLevel.java index eaa7f8e20..e86a0da40 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/ZoomLevel.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/ZoomLevel.java @@ -20,12 +20,14 @@ package org.zkoss.ganttz.timetracker.zoom; +import static org.zkoss.ganttz.i18n.I18nHelper._; + /** * @author Francisco Javier Moran RĂșa */ public enum ZoomLevel { - DETAIL_ONE { + DETAIL_ONE(_("Year")) { @Override public TimeTrackerState getTimeTrackerState( IDetailItemModificator firstLevel, @@ -33,7 +35,7 @@ public enum ZoomLevel { return new DetailOneTimeTrackerState(firstLevel, secondLevel); } }, - DETAIL_TWO { + DETAIL_TWO(_("Quarter")) { @Override public TimeTrackerState getTimeTrackerState( IDetailItemModificator firstLevel, @@ -41,7 +43,7 @@ public enum ZoomLevel { return new DetailTwoTimeTrackerState(firstLevel, secondLevel); } }, - DETAIL_THREE { + DETAIL_THREE(_("Month")) { @Override public TimeTrackerState getTimeTrackerState( IDetailItemModificator firstLevel, @@ -49,7 +51,7 @@ public enum ZoomLevel { return new DetailThreeTimeTrackerState(firstLevel, secondLevel); } }, - DETAIL_FOUR { + DETAIL_FOUR(_("Week")) { @Override public TimeTrackerState getTimeTrackerState( IDetailItemModificator firstLevel, @@ -57,7 +59,7 @@ public enum ZoomLevel { return new DetailFourTimeTrackerState(firstLevel, secondLevel); } }, - DETAIL_FIVE { + DETAIL_FIVE(_("Day")) { @Override public TimeTrackerState getTimeTrackerState( IDetailItemModificator firstLevel, @@ -66,6 +68,12 @@ public enum ZoomLevel { } }; + private String name; + + private ZoomLevel(String name) { + this.name = name; + } + /** * @return if there is no next, returns this. Otherwise returns * the next one. @@ -93,4 +101,9 @@ public enum ZoomLevel { IDetailItemModificator firstLevel, IDetailItemModificator secondLevel); + @Override + public String toString() { + return name; + } + } diff --git a/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul b/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul index 232a69fd0..3a03b0d54 100644 --- a/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul +++ b/ganttzk/src/main/resources/web/ganttz/zul/plannerLayout.zul @@ -8,10 +8,11 @@ planner = self; -