private void Form1_MouseUp(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { history.Do(new AddShapeMemento()); shapepool.Add(GetShape(e)); } else if (e.Button == MouseButtons.Right) { List <Shape> toBeRemoved = new List <Shape>(); Rectangle rect = GetRect(e); foreach (Shape s in shapepool) { if (rect.Contains(s.Bound)) { toBeRemoved.Add(s); } } if (toBeRemoved.Count > 0) { history.BeginCompoundDo(); foreach (Shape s in toBeRemoved) { int index = shapepool.IndexOf(s); history.Do(new RemoveShapeMemento(index, s)); shapepool.RemoveAt(index); } history.EndCompoundDo(); } } Invalidate(); }
public override IMemento <ShapePool> Restore(ShapePool target) { int index = target.Count - 1; IMemento <ShapePool> inverse = new RemoveShapeMemento(index, target[index]); target.RemoveAt(target.Count - 1); return(inverse); }
public override IMemento <ShapePool> Restore(ShapePool target) { Shape removed = target[index]; IMemento <ShapePool> inverse = new RemoveShapeMemento(index, removed); target.RemoveAt(index); return(inverse); }