Beispiel #1
0
        // Ex: localhost:8001/flowsharp?cmd=CmdDropShape&ShapeName=Box&X=50&Y=100
        // Ex: localhost:8001/flowsharp?cmd=CmdDropShape&ShapeName=Box&X=50&Y=100&Text=Foobar&FillColor=!FF00ff&Width=300
        public void Process(ISemanticProcessor proc, IMembrane membrane, CmdDropShape cmd)
        {
            List <Type> shapes     = proc.ServiceManager.Get <IFlowSharpToolboxService>().ShapeList;
            var         controller = proc.ServiceManager.Get <IFlowSharpCanvasService>().ActiveController;
            Type        t          = shapes.Where(s => s.Name == cmd.ShapeName).SingleOrDefault();

            if (t != null)
            {
                controller.Canvas.FindForm().BeginInvoke(() =>
                {
                    GraphicElement el   = (GraphicElement)Activator.CreateInstance(t, new object[] { controller.Canvas });
                    el.DisplayRectangle = new Rectangle(cmd.X, cmd.Y, cmd.Width ?? el.DefaultRectangle().Width, cmd.Height ?? el.DefaultRectangle().Height);
                    el.Name             = cmd.Name;
                    el.Text             = cmd.Text;

                    cmd.FillColor.IfNotNull(c => el.FillColor        = GetColor(c));
                    cmd.BorderColor.IfNotNull(c => el.BorderPenColor = GetColor(c));
                    cmd.TextColor.IfNotNull(c => el.TextColor        = GetColor(c));

                    el.UpdateProperties();
                    el.UpdatePath();
                    controller.Insert(el);
                });
            }
        }