Bug #1335: Update the earned value chart legend every time the chart is reloaded.

To be able to do it, some local variables were moved to a wider scope (private
class-level attributes).

FEA: ItEr76S04BugFixing
This commit is contained in:
Jacobo Aragunde Pérez 2012-01-16 13:11:50 +01:00
parent 39b582d5ab
commit 405d788a0d

View file

@ -383,7 +383,7 @@ public class OrderPlanningModel implements IOrderPlanningModel {
// Create 'Earned value' tab
Timeplot chartEarnedValueTimeplot = createEmptyTimeplot();
OrderEarnedValueChartFiller earnedValueChartFiller = createOrderEarnedValueChartFiller(planner.getTimeTracker());
this.earnedValueChartFiller = createOrderEarnedValueChartFiller(planner.getTimeTracker());
chartTabpanels.appendChild(createEarnedValueTab(chartEarnedValueTimeplot, earnedValueChartFiller));
// Create 'Overall progress' tab
@ -413,6 +413,8 @@ public class OrderPlanningModel implements IOrderPlanningModel {
+ (System.currentTimeMillis() - overalProgressContentTime));
}
private OrderEarnedValueChartFiller earnedValueChartFiller;
private void setupAdvanceAssignmentPlanningController(final Planner planner,
AdvanceAssignmentPlanningController advanceAssignmentPlanningController) {
@ -447,7 +449,11 @@ public class OrderPlanningModel implements IOrderPlanningModel {
return null;
}
if (planner.isVisibleChart()) {
earnedValueChart.fillChart(); //update earned value chart
//update earned value chart
earnedValueChart.fillChart();
//update earned value legend
updateEarnedValueChartLegend(new LocalDate(
earnedValueChartLegendDatebox.getValue()));
}
return null;
}
@ -508,10 +514,14 @@ public class OrderPlanningModel implements IOrderPlanningModel {
return result;
}
private Vbox earnedValueChartLegendContainer;
private Datebox earnedValueChartLegendDatebox;
private void appendEarnedValueChartAndLegend(
Tabpanel earnedValueChartPannel, Timeplot chartEarnedValueTimeplot,
final OrderEarnedValueChartFiller earnedValueChartFiller) {
Vbox vbox = new Vbox();
this.earnedValueChartLegendContainer = vbox;
vbox.setClass("legend-container");
vbox.setAlign("center");
vbox.setPack("center");
@ -522,6 +532,7 @@ public class OrderPlanningModel implements IOrderPlanningModel {
LocalDate initialDateForIndicatorValues = earnedValueChartFiller.initialDateForIndicatorValues();
Datebox datebox = new Datebox(initialDateForIndicatorValues
.toDateTimeAtStartOfDay().toDate());
this.earnedValueChartLegendDatebox = datebox;
datebox.setConstraint(dateMustBeInsideVisualizationArea(earnedValueChartFiller));
dateHbox.appendChild(datebox);
@ -551,7 +562,7 @@ public class OrderPlanningModel implements IOrderPlanningModel {
Chart loadChart = setupChart(planningState.getOrder(),
new OrderLoadChartFiller(planningState.getOrder()),
chartLoadTimeplot, planner);
refillLoadChartWhenNeeded(changeHooker, planner, loadChart);
refillLoadChartWhenNeeded(changeHooker, planner, loadChart, false);
}
private Chart earnedValueChart;
@ -561,7 +572,7 @@ public class OrderPlanningModel implements IOrderPlanningModel {
Planner planner, ChangeHooker changeHooker) {
earnedValueChart = setupChart(planningState.getOrder(),
earnedValueChartFiller, chartEarnedValueTimeplot, planner);
refillLoadChartWhenNeeded(changeHooker, planner, earnedValueChart);
refillLoadChartWhenNeeded(changeHooker, planner, earnedValueChart, true);
setEventListenerConfigurationCheckboxes(earnedValueChart);
}
@ -799,17 +810,21 @@ public class OrderPlanningModel implements IOrderPlanningModel {
@Override
public void onEvent(Event event) {
LocalDate date = new LocalDate(datebox.getValue());
org.zkoss.zk.ui.Component child = vbox
.getFellow("indicatorsTable");
vbox.removeChild(child);
vbox.appendChild(getEarnedValueChartConfigurableLegend(
earnedValueChartFiller, date));
updateEarnedValueChartLegend(date);
dateInfutureMessage(datebox);
}
});
}
private void updateEarnedValueChartLegend(LocalDate date) {
org.zkoss.zk.ui.Component child = earnedValueChartLegendContainer
.getFellow("indicatorsTable");
earnedValueChartLegendContainer.removeChild(child);
earnedValueChartLegendContainer.appendChild(getEarnedValueChartConfigurableLegend(
earnedValueChartFiller, date));
}
private org.zkoss.zk.ui.Component getEarnedValueChartConfigurableLegend(
OrderEarnedValueChartFiller earnedValueChartFiller, LocalDate date) {
Hbox mainhbox = new Hbox();
@ -912,6 +927,7 @@ public class OrderPlanningModel implements IOrderPlanningModel {
@Override
public Void execute() {
earnedValueChart.fillChart();
//not necessary to update legend here
return null;
}
});
@ -922,9 +938,10 @@ public class OrderPlanningModel implements IOrderPlanningModel {
}
private void refillLoadChartWhenNeeded(ChangeHooker changeHooker,
final Planner planner, final Chart loadChart) {
final Planner planner, final Chart loadChart,
final boolean updateEarnedValueChartLegend) {
planner.getTimeTracker().addZoomListener(
fillOnZoomChange(loadChart, planner));
fillOnZoomChange(loadChart, planner, updateEarnedValueChartLegend));
planner
.addChartVisibilityListener(fillOnChartVisibilityChange(loadChart));
@ -938,6 +955,10 @@ public class OrderPlanningModel implements IOrderPlanningModel {
}
if (planner.isVisibleChart()) {
loadChart.fillChart();
if(updateEarnedValueChartLegend) {
updateEarnedValueChartLegend(new LocalDate(
earnedValueChartLegendDatebox.getValue()));
}
}
}
});
@ -1127,7 +1148,7 @@ public class OrderPlanningModel implements IOrderPlanningModel {
}
private IZoomLevelChangedListener fillOnZoomChange(final Chart loadChart,
final Planner planner) {
final Planner planner, final boolean updateEarnedValueChartLegend) {
IZoomLevelChangedListener zoomListener = new IZoomLevelChangedListener() {
@Override
@ -1140,6 +1161,10 @@ public class OrderPlanningModel implements IOrderPlanningModel {
public Void execute() {
if (planner.isVisibleChart()) {
loadChart.fillChart();
if (updateEarnedValueChartLegend) {
updateEarnedValueChartLegend(new LocalDate(
earnedValueChartLegendDatebox.getValue()));
}
}
return null;
}