/** * */ 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; } }