コード例 #1
0
        private FlowchartModel CreateModel()
        {
            var model = new FlowchartModel();

            //          var start = new FlowNode(NodeKinds.Start);
            //          start.Row = 0;
            //          start.Column = 1;
            //          start.Text = "Start";
            //
            //          var ac0 = new FlowNode(NodeKinds.Action);
            //          ac0.Row = 1;
            //          ac0.Column = 1;
            //          ac0.Text = "i = 0";
            //
            //          var cond = new FlowNode(NodeKinds.Condition);
            //          cond.Row = 2;
            //          cond.Column = 1;
            //          cond.Text = "i < n";
            //
            //          var ac1 = new FlowNode(NodeKinds.Action);
            //          ac1.Row = 3;
            //          ac1.Column = 1;
            //          ac1.Text = "do something";
            //
            //          var ac2 = new FlowNode(NodeKinds.Action);
            //          ac2.Row = 4;
            //          ac2.Column = 1;
            //          ac2.Text = "i++";
            //
            //          var end = new FlowNode(NodeKinds.End);
            //          end.Row = 3;
            //          end.Column = 2;
            //          end.Text = "End";
            //
            //          model.Nodes.Add(start);
            //          model.Nodes.Add(cond);
            //          model.Nodes.Add(ac0);
            //          model.Nodes.Add(ac1);
            //          model.Nodes.Add(ac2);
            //          model.Nodes.Add(end);
            //
            //          model.Links.Add(new Link(start, PortKinds.Bottom, ac0, PortKinds.Top));
            //          model.Links.Add(new Link(ac0, PortKinds.Bottom, cond, PortKinds.Top));
            //
            //          model.Links.Add(new Link(cond, PortKinds.Bottom, ac1, PortKinds.Top) { Text = "True" });
            //          model.Links.Add(new Link(cond, PortKinds.Right, end, PortKinds.Top) { Text = "False" });
            //
            //          model.Links.Add(new Link(ac1, PortKinds.Bottom, ac2, PortKinds.Top));
            //          model.Links.Add(new Link(ac2, PortKinds.Bottom, cond, PortKinds.Top));

            return(model);
        }
コード例 #2
0
ファイル: Controller.cs プロジェクト: sujingxd/wpf0606
        public Controller(DiagramView view, FlowchartModel model)
        {
            _view  = view;
            _model = model;
            _model.Nodes.CollectionChanged += NodesCollectionChanged;
            _model.Links.CollectionChanged += LinksCollectionChanged;
            _updateScope = new UpdateScope(this);

            foreach (var t in _model.Nodes)
            {
                t.PropertyChanged += NodePropertyChanged;
            }

            UpdateView();
        }
コード例 #3
0
        public FlowchartEditor()
        {
            InitializeComponent();

            model = CreateModel();
            _editor.Controller = new Controller(_editor, model);
            //  _editor.DragDropTool = new DragDropTool(_editor, model);


            _editor.DragTool = new CustomMoveResizeTool(_editor, model)
            {
                // MoveGridCell = _editor.GridCellSize
                //MoveGridCell = "2,2"
            };
            _editor.LinkTool = new CustomLinkTool(_editor);
            _editor.Selection.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(Selection_PropertyChanged);
            // _dragHelper = new ItemsControlDragHelper(_toolbox, this);

            //  FillToolbox();

            messsageMap      = new Dictionary <string, string>();
            messsageMap["*"] = "";
        }
コード例 #4
0
 public DragDropTool(DiagramView view, FlowchartModel model)
 {
     _view  = view;
     _model = model;
 }
コード例 #5
0
 public CustomMoveResizeTool(DiagramView view, FlowchartModel model)
     : base(view)
 {
     _model = model;
 }
コード例 #6
0
        private FlowchartModel CreateModel()
        {
            var model = new FlowchartModel();

            var start = new FlowNode(NodeKinds.Start);

            start.Row    = 0;
            start.Column = 1;
            start.Text   = "Start";

            var ac0 = new FlowNode(NodeKinds.Action);

            ac0.Row    = 1;
            ac0.Column = 1;
            ac0.Text   = "i = 0";

            var cond = new FlowNode(NodeKinds.Condition);

            cond.Row    = 2;
            cond.Column = 1;
            cond.Text   = "i < n";

            var ac1 = new FlowNode(NodeKinds.Action);

            ac1.Row    = 3;
            ac1.Column = 1;
            ac1.Text   = "do something";

            var ac2 = new FlowNode(NodeKinds.Action);

            ac2.Row    = 4;
            ac2.Column = 1;
            ac2.Text   = "i++";

            var end = new FlowNode(NodeKinds.End);

            end.Row    = 3;
            end.Column = 2;
            end.Text   = "End";

            //model.Nodes.Add(start);
            //model.Nodes.Add(cond);
            //model.Nodes.Add(ac0);
            //model.Nodes.Add(ac1);
            //model.Nodes.Add(ac2);
            //model.Nodes.Add(end);

            //model.Links.Add(new Link(start, PortKinds.Bottom, ac0, PortKinds.Top));
            //model.Links.Add(new Link(ac0, PortKinds.Bottom, cond, PortKinds.Top));

            //model.Links.Add(new Link(cond, PortKinds.Bottom, ac1, PortKinds.Top) { Text = "True" });
            //model.Links.Add(new Link(cond, PortKinds.Right, end, PortKinds.Top) { Text = "False" });

            //model.Links.Add(new Link(ac1, PortKinds.Bottom, ac2, PortKinds.Top));
            //model.Links.Add(new Link(ac2, PortKinds.Bottom, cond, PortKinds.Top));

            var cpn = new FlowNode(NodeKinds.ConstantPayload);

            cpn.Row    = 0;
            cpn.Column = 0;

            var fpn = new FlowNode(NodeKinds.FlexiblePaylaod);

            fpn.Row    = 2;
            fpn.Column = 0;

            var dn = new FlowNode(NodeKinds.Distribute);

            dn.Row    = 1;
            dn.Column = 2;

            var otn = new FlowNode(NodeKinds.Output);

            otn.Row    = 1;
            otn.Column = 4;

            model.Nodes.Add(otn);
            model.Nodes.Add(cpn);
            model.Nodes.Add(fpn);
            model.Nodes.Add(dn);

            model.Links.Add(new Link(cpn, PortKinds.Right, dn, PortKinds.Top));
            //dn.AddNode(cpn);
            model.Links.Add(new Link(fpn, PortKinds.Right, dn, PortKinds.Top));
            //dn.AddNode(fpn);
            model.Links.Add(new Link(dn, PortKinds.Right, otn, PortKinds.Top));
            //otn.AddNode(dn);

            return(model);
        }