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;
-
-
+
+
+