/**
*
*/
package icy.roi.edit;
import icy.painter.Anchor2D;
import java.awt.geom.Point2D;
import javax.swing.undo.CannotRedoException;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.UndoableEdit;
import plugins.kernel.roi.roi2d.ROI2DShape;
/**
* 2D control point added implementation for ROI undoable edition.
*
* @author Stephane
*/
public class Point2DAddedROIEdit extends AbstractPoint2DROIEdit
{
Point2D position;
final int index;
public Point2DAddedROIEdit(ROI2DShape roi, Anchor2D point)
{
super(roi, point, "ROI point added");
position = point.getPosition();
index = roi.getControlPoints().indexOf(point);
}
@Override
public void undo() throws CannotUndoException
{
super.undo();
// undo
((ROI2DShape) getROI()).removePoint(point);
}
@Override
public void redo() throws CannotRedoException
{
super.redo();
// redo
point.setPosition(position);
((ROI2DShape) getROI()).addPoint(point, Math.min(index, getROI2DShape().getControlPoints().size()));
}
@Override
public boolean addEdit(UndoableEdit edit)
{
// don't collapse here
return false;
}
@Override
public void die()
{
super.die();
position = null;
}
}