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();
 }
Example #2
0
        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);
            }
        }