/**
 * 
 */
package icy.roi.edit;

import icy.main.Icy;
import icy.roi.ROI;
import icy.sequence.Sequence;
import icy.undo.AbstractIcyUndoableEdit;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * Base multiple ROI undoable edit.
 * 
 * @author Stephane
 */
public abstract class AbstractROIsEdit extends AbstractIcyUndoableEdit
{
    public AbstractROIsEdit(List<? extends ROI> rois, String name)
    {
        super(rois, name);
    }

    public AbstractROIsEdit(List<? extends ROI> rois)
    {
        this(rois, (rois.size() > 1) ? "ROIs changed" : "ROI changed");
    }

    @SuppressWarnings("unchecked")
    public List<? extends ROI> getROIs()
    {
        return (List<? extends ROI>) getSource();
    }

    protected Set<Sequence> getSequences()
    {
        final Set<Sequence> result = new HashSet<Sequence>();

        for (ROI roi : getROIs())
            result.addAll(Icy.getMainInterface().getSequencesContaining(roi));

        return result;
    }
}