public void layoutChanged(final ReportRenderEvent event)
{
final RootBandRenderingModel renderingModel = getRenderingModel();
final AbstractReportDefinition report = getReport();
final HorizontalPositionsModel horizontalPositionsModel = getHorizontalPositionsModel();
final ElementRenderer[] allRenderers = renderingModel.getAllRenderers();
final long age = report.getChangeTracker();
boolean change = false;
synchronized (horizontalPositionsModel)
{
// update the horizontal positions ...
for (int i = 0; i < allRenderers.length; i++)
{
final ElementRenderer renderer = allRenderers[i];
final long[] keys = renderer.getHorizontalEdgePositionKeys();
if (horizontalPositionsModel.add(keys, age))
{
change = true;
}
}
if (horizontalPositionsModel.clear(age))
{
change = true;
}
}
if (change)
{
// and then repaint ..
horizontalPositionsModel.fireChangeEvent();
for (int i = 0; i < rootBandRenderers.size(); i++)
{
final AbstractRenderComponent component = rootBandRenderers.get(i);
component.repaint();
}