/**
* Invoked when an action occurs.
*/
public void actionPerformed(final ActionEvent e)
{
final ReportRenderContext activeContext = getActiveContext();
if (activeContext == null)
{
return;
}
final Object[] selectedElements = activeContext.getSelectionModel().getSelectedElements();
final AbstractReportDefinition report = activeContext.getReportDefinition();
final ArrayList<UndoEntry> undos = new ArrayList<UndoEntry>();
if (collectChange(selectedElements, report, undos) == false)
{
// rollback ..
for (int i = undos.size() - 1; i >= 0; i--)
{
final UndoEntry undoEntry = undos.get(i);
undoEntry.undo(activeContext);
}
}
else
{
final UndoEntry[] undoEntries = undos.toArray(new UndoEntry[undos.size()]);
activeContext.getUndo().addChange(ActionMessages.getString("AbstractLayerAction.UndoName"),
new CompoundUndoEntry(undoEntries));
}
// re-select the elements (moving them causes them to be unselected)
activeContext.getSelectionModel().setSelectedElements(selectedElements);
}