/** 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); }