Bugfix: #1909 Changing zoom level in Gantt view did not affect timescale/background due to GC optimization of lambda functions.
This commit is contained in:
parent
15e89752dc
commit
e5f5a4621d
1 changed files with 19 additions and 8 deletions
27
ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTrackerComponent.java
Normal file → Executable file
27
ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTrackerComponent.java
Normal file → Executable file
|
|
@ -38,7 +38,7 @@ import org.zkoss.zk.ui.HtmlMacroComponent;
|
||||||
*
|
*
|
||||||
* @author Javier Moran Rua <jmoran@igalia.com>
|
* @author Javier Moran Rua <jmoran@igalia.com>
|
||||||
*/
|
*/
|
||||||
public abstract class TimeTrackerComponent extends HtmlMacroComponent {
|
public abstract class TimeTrackerComponent extends HtmlMacroComponent implements IZoomLevelChangedListener {
|
||||||
|
|
||||||
private final TimeTracker timeTracker;
|
private final TimeTracker timeTracker;
|
||||||
|
|
||||||
|
|
@ -52,18 +52,29 @@ public abstract class TimeTrackerComponent extends HtmlMacroComponent {
|
||||||
this(timeTracker, "~./ganttz/zul/timetracker/timetrackersecondlevel.zul", "timetracker");
|
this(timeTracker, "~./ganttz/zul/timetracker/timetrackersecondlevel.zul", "timetracker");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Event handler when zoom level changes.
|
||||||
|
*
|
||||||
|
* Please do not refactor the .zoomLevelChanged method into a delta
|
||||||
|
* function since the GC will remove that function once it is only
|
||||||
|
* referenced by a WeakReference. In that case zoom events will
|
||||||
|
* not be propagated correctly.
|
||||||
|
*
|
||||||
|
* @param detailLevel requested zoom level.
|
||||||
|
*/
|
||||||
|
public void zoomLevelChanged(ZoomLevel detailLevel)
|
||||||
|
{
|
||||||
|
if ( isInPage() ) {
|
||||||
|
recreate();
|
||||||
|
changeDetailLevel(getDaysFor(scrollLeft));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
TimeTrackerComponent(TimeTracker timeTracker, String secondLevelZul, String timetrackerId) {
|
TimeTrackerComponent(TimeTracker timeTracker, String secondLevelZul, String timetrackerId) {
|
||||||
this.secondLevelZul = secondLevelZul;
|
this.secondLevelZul = secondLevelZul;
|
||||||
this.timeTracker = timeTracker;
|
this.timeTracker = timeTracker;
|
||||||
|
|
||||||
IZoomLevelChangedListener zoomListener = detailLevel -> {
|
|
||||||
if ( isInPage() ) {
|
|
||||||
recreate();
|
|
||||||
changeDetailLevel(getDaysFor(scrollLeft));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
this.timeTracker.addZoomListener(zoomListener);
|
this.timeTracker.addZoomListener(this);
|
||||||
timeTrackerElementId = timetrackerId;
|
timeTrackerElementId = timetrackerId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue