/**
 * 
 */
package icy.sequence.edit;

import icy.sequence.Sequence;

import java.awt.Image;

import javax.swing.undo.CannotUndoException;

/**
 * Default lazy sequence data undoable edit (do a complete sequence data copy to restore previous
 * state).<br>
 * Do not handle redo operation to not consume too much memory.
 * 
 * @author Stephane
 */
public class DataSequenceEdit extends AbstractSequenceEdit
{
    Sequence previous;

    public DataSequenceEdit(Sequence previous, Sequence sequence, Image icon)
    {
        super(sequence, "Sequence data changed", icon);

        this.previous = previous;
    }

    public DataSequenceEdit(Sequence previous, Sequence sequence)
    {
        this(previous, sequence, null);
    }

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

        // undo
        getSequence().copyDataFrom(previous);
    }

    @Override
    public boolean canRedo()
    {
        return false;
    }
}