On changing zoom in limiting resources dependencies are not redrawn

FEA: ItEr69S04BugFixing
This commit is contained in:
Diego Pino Garcia 2011-01-31 17:20:06 +01:00
parent 1be321f69a
commit 4a81b0f2bf
2 changed files with 52 additions and 1 deletions

View file

@ -22,6 +22,7 @@
package org.navalplanner.web.limitingresources;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
@ -30,24 +31,68 @@ import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueue
import org.navalplanner.business.planner.limiting.entities.LimitingResourceQueueElement;
import org.navalplanner.business.resources.entities.LimitingResourceQueue;
import org.zkoss.ganttz.DependencyList;
import org.zkoss.ganttz.timetracker.TimeTracker;
import org.zkoss.ganttz.timetracker.zoom.IZoomLevelChangedListener;
import org.zkoss.ganttz.timetracker.zoom.ZoomLevel;
import org.zkoss.ganttz.util.ComponentsFinder;
import org.zkoss.zk.ui.ext.AfterCompose;
import org.zkoss.zul.impl.XulElement;
/**
* @author Lorenzo Tilve Álvaro <ltilve@igalia.com>
* @author Diego Pino García <dpino@igalia.com>
*/
public class LimitingDependencyList extends XulElement {
public class LimitingDependencyList extends XulElement implements AfterCompose {
private static final Log LOG = LogFactory.getLog(DependencyList.class);
private final LimitingResourcesPanel panel;
private transient IZoomLevelChangedListener listener;
private Map<LimitingResourceQueueDependency, LimitingDependencyComponent> dependencies = new HashMap<LimitingResourceQueueDependency, LimitingDependencyComponent>();
public LimitingDependencyList(LimitingResourcesPanel panel) {
this.panel = panel;
}
@Override
public void afterCompose() {
if (listener == null) {
listener = new IZoomLevelChangedListener() {
@Override
public void zoomLevelChanged(ZoomLevel detailLevel) {
removeDependencyComponents();
createDependencyComponents();
}
private void createDependencyComponents() {
for (LimitingResourceQueueDependency each: dependencies.keySet()) {
LimitingDependencyComponent dependencyComponent = createDependencyComponent(each);
if (dependencyComponent != null) {
addDependencyComponent(dependencyComponent);
}
}
}
};
getTimeTracker().addZoomListener(listener);
}
}
private void removeDependencyComponents() {
List<LimitingDependencyComponent> children = ComponentsFinder
.findComponentsOfType(LimitingDependencyComponent.class,
getChildren());
for (LimitingDependencyComponent each : children) {
removeChild(each);
}
}
private TimeTracker getTimeTracker() {
return panel.getTimeTracker();
}
public void addDependenciesFor(LimitingResourceQueueElement queueElement) {
for (LimitingResourceQueueDependency origin: queueElement.getDependenciesAsOrigin()) {
addDependency(origin);
@ -126,6 +171,7 @@ public class LimitingDependencyList extends XulElement {
}
public void clear() {
removeDependencyComponents();
dependencies.clear();
}

View file

@ -296,6 +296,7 @@ public class LimitingResourcesPanel extends HtmlMacroComponent {
// Initialize dependencies
rebuildDependencies();
dependencyList.afterCompose();
initializePagination();
}
@ -427,6 +428,10 @@ public class LimitingResourcesPanel extends HtmlMacroComponent {
return timeTrackerComponent;
}
public TimeTracker getTimeTracker() {
return timeTrackerComponent.getTimeTracker();
}
public void unschedule(QueueTask task) {
LimitingResourceQueueElement queueElement = task.getLimitingResourceQueueElement();
LimitingResourceQueue queue = queueElement.getLimitingResourceQueue();