[Bug #712] Printed container as in critical path when it is collapsed and some of its children are in critical path.

FEA: ItEr63S03BugFixing
This commit is contained in:
Manuel Rego Casasnovas 2010-11-15 21:06:26 +01:00
parent 64b5c4e72e
commit 9daf7e6d34
2 changed files with 17 additions and 6 deletions

View file

@ -58,6 +58,11 @@
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
<!-- Commons collections -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
</dependency>
<!-- ZK -->
<dependency>
<groupId>org.zkoss.zk</groupId>

View file

@ -30,6 +30,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.apache.commons.collections.CollectionUtils;
import org.joda.time.LocalDate;
import org.zkoss.ganttz.adapters.DomainDependency;
import org.zkoss.ganttz.adapters.IAdapterToTaskFundamentalProperties;
@ -39,13 +40,13 @@ import org.zkoss.ganttz.adapters.PlannerConfiguration;
import org.zkoss.ganttz.data.Dependency;
import org.zkoss.ganttz.data.DependencyType;
import org.zkoss.ganttz.data.GanttDiagramGraph;
import org.zkoss.ganttz.data.GanttDiagramGraph.GanttZKDiagramGraph;
import org.zkoss.ganttz.data.ITaskFundamentalProperties;
import org.zkoss.ganttz.data.Milestone;
import org.zkoss.ganttz.data.Position;
import org.zkoss.ganttz.data.Task;
import org.zkoss.ganttz.data.TaskContainer;
import org.zkoss.ganttz.data.TaskLeaf;
import org.zkoss.ganttz.data.GanttDiagramGraph.GanttZKDiagramGraph;
import org.zkoss.ganttz.data.criticalpath.CriticalPathCalculator;
import org.zkoss.ganttz.extensions.IContext;
import org.zkoss.ganttz.timetracker.TimeTracker;
@ -386,11 +387,16 @@ public class FunctionalityExposedForExtensions<T> implements IContext<T> {
List<Task> criticalPath = criticalPathCalculator
.calculateCriticalPath(diagramGraph);
for (Task task : diagramGraph.getTasks()) {
if (criticalPath.contains(task)) {
task.setInCriticalPath(true);
} else {
task.setInCriticalPath(false);
}
task.setInCriticalPath(isInCriticalPath(criticalPath, task));
}
}
private boolean isInCriticalPath(List<Task> criticalPath, Task task) {
if (task.isContainer() && !task.isExpanded()) {
List<Task> allTaskLeafs = ((TaskContainer) task).getAllTaskLeafs();
return CollectionUtils.containsAny(criticalPath, allTaskLeafs);
} else {
return criticalPath.contains(task);
}
}