/** * */ package icy.sequence.edit; import icy.roi.ROI; import icy.sequence.Sequence; import java.util.Collection; import javax.swing.undo.CannotRedoException; import javax.swing.undo.CannotUndoException; /** * ROI group replace Sequence edit event. * * @author Stephane */ public class ROIReplacesSequenceEdit extends AbstractROIsSequenceEdit { final Collection<ROI> oldRois; public ROIReplacesSequenceEdit(Sequence sequence, Collection<ROI> oldRois, Collection<ROI> newRois, String name) { super(sequence, newRois, name); this.oldRois = oldRois; } public ROIReplacesSequenceEdit(Sequence sequence, Collection<ROI> oldRois, Collection<ROI> newRois) { this(sequence, oldRois, newRois, (newRois.size() > 1) ? "ROI group replaced" : "ROI replaced"); } @Override public void undo() throws CannotUndoException { super.undo(); final Sequence sequence = getSequence(); sequence.beginUpdate(); try { for (ROI roi : getROIs()) sequence.removeROI(roi, false); for (ROI roi : oldRois) sequence.addROI(roi, false); } finally { sequence.endUpdate(); } } @Override public void redo() throws CannotRedoException { super.redo(); final Sequence sequence = getSequence(); sequence.beginUpdate(); try { for (ROI roi : oldRois) sequence.removeROI(roi, false); for (ROI roi : getROIs()) sequence.addROI(roi, false); } finally { sequence.endUpdate(); } } }