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 Figure CreateFigure(string nameFigure, int x = 0, int y = 0, int width = 1, int height = 1) { Figure figure; switch (nameFigure) { case "R": case "Rectangle": figure = new Rectangle(); break; case "E": case "Ellipse": figure = new Ellipse(); break; case "Group": figure = new GroupedFigures(); break; case "T": case "Triangle": figure = new Triangle(); break; default: return(null); } figure.X = x; figure.Y = y; figure.Width = width; figure.Height = height; return(figure); }
void ExtractGroup(GroupedFigures group) { for (var grit = group.figures.CreateIterator(); !grit.EOL; grit.Next()) { sizedFigures.Add(grit.GetCurrent().Value, new Size(grit.GetCurrent().Value.Width, grit.GetCurrent().Value.Height)); if (grit.GetCurrent().Value is GroupedFigures gr) { ExtractGroup(gr); } } }
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); } }