001/** 002 * 003 */ 004package icy.sequence.edit; 005 006import icy.roi.ROI; 007import icy.sequence.Sequence; 008 009import java.util.Collection; 010 011import javax.swing.undo.CannotRedoException; 012import javax.swing.undo.CannotUndoException; 013 014/** 015 * ROI group replace Sequence edit event. 016 * 017 * @author Stephane 018 */ 019public class ROIReplacesSequenceEdit extends AbstractROIsSequenceEdit 020{ 021 final Collection<ROI> oldRois; 022 023 public ROIReplacesSequenceEdit(Sequence sequence, Collection<ROI> oldRois, Collection<ROI> newRois, String name) 024 { 025 super(sequence, newRois, name); 026 027 this.oldRois = oldRois; 028 } 029 030 public ROIReplacesSequenceEdit(Sequence sequence, Collection<ROI> oldRois, Collection<ROI> newRois) 031 { 032 this(sequence, oldRois, newRois, (newRois.size() > 1) ? "ROI group replaced" : "ROI replaced"); 033 } 034 035 @Override 036 public void undo() throws CannotUndoException 037 { 038 super.undo(); 039 040 final Sequence sequence = getSequence(); 041 042 sequence.beginUpdate(); 043 try 044 { 045 for (ROI roi : getROIs()) 046 sequence.removeROI(roi, false); 047 for (ROI roi : oldRois) 048 sequence.addROI(roi, false); 049 } 050 finally 051 { 052 sequence.endUpdate(); 053 } 054 } 055 056 @Override 057 public void redo() throws CannotRedoException 058 { 059 super.redo(); 060 061 final Sequence sequence = getSequence(); 062 063 sequence.beginUpdate(); 064 try 065 { 066 for (ROI roi : oldRois) 067 sequence.removeROI(roi, false); 068 for (ROI roi : getROIs()) 069 sequence.addROI(roi, false); 070 } 071 finally 072 { 073 sequence.endUpdate(); 074 } 075 } 076}