public void Execute() { group = new GroupedFigures(); figureObservers = new Dictionary <Figure, List <IObserver> >(); group.Select(); for (var it = figures.CreateIterator(); !it.EOL;) { var bufferFigure = it.GetCurrent().Value; if (bufferFigure.Selected) { if (bufferFigure.isSticky) { figureObservers.Add(bufferFigure, new List <IObserver>(bufferFigure.GetObservers())); bufferFigure.RemoveAllObserver(); } group.Add(bufferFigure); figures.Remove(bufferFigure); } else { it.Next(); } } if (group.Count > 0) { figures.AddLast(group); } else { group = null; } figures.NotifyAll(); }
public void Unexecute() { var group = new GroupedFigures(); group.Select(); for (var it = ungroupedFigures.CreateIterator(); !it.EOL; it.Next()) { var bufferFigure = it.GetCurrent().Value; if (bufferFigure.isSticky) { bufferFigure.RemoveAllObserver(); } group.Add(bufferFigure); figures.Remove(bufferFigure); } if (group.Count > 0) { figures.AddLast(group); } }