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

import icy.sequence.Sequence;

import java.awt.Image;

import javax.swing.undo.CannotUndoException;

import loci.formats.ome.OMEXMLMetadataImpl;

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

    public MetadataSequenceEdit(OMEXMLMetadataImpl previous, Sequence sequence, Image icon)
    {
        super(sequence, "Sequence metadata changed", icon);

        this.previous = previous;
    }

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

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

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

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