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