package icy.sequence.edit;

import icy.roi.ROI;
import icy.sequence.Sequence;

import javax.swing.undo.CannotRedoException;
import javax.swing.undo.CannotUndoException;

/**
 * ROI replace Sequence edit event.
 * 
 * @author Stephane
 */
public class ROIReplaceSequenceEdit extends AbstractROISequenceEdit
{
    final ROI oldRoi;

    public ROIReplaceSequenceEdit(Sequence sequence, ROI oldRoi, ROI newRoi, String name)
    {
        super(sequence, newRoi, name);

        this.oldRoi = oldRoi;
    }

    public ROIReplaceSequenceEdit(Sequence sequence, ROI oldRoi, ROI newRoi)
    {
        this(sequence, oldRoi, newRoi, "ROI replaced");
    }

    @Override
    public void undo() throws CannotUndoException
    {
        super.undo();

        final Sequence seq = getSequence();

        seq.removeROI(getROI(), false);
        seq.addROI(oldRoi, false);
    }

    @Override
    public void redo() throws CannotRedoException
    {
        super.redo();

        final Sequence seq = getSequence();

        seq.removeROI(oldRoi, false);
        seq.addROI(getROI(), false);
    }
}