コード例 #1
0
        protected override void OnApply(LinkLineNode node)
        {
            LinkLineNode node1 = GetLineNode(_node1);
            LinkLineNode node2 = GetLineNode(_node2);
            LinkLineNode start = (LinkLineNode)node1.PrevNode;
            LinkLineNode end   = (LinkLineNode)node2.NextNode;

            node1.ClearLine();
            node2.ClearLine();
            node.Parent.Controls.Remove(node1);
            node.Parent.Controls.Remove(node2);
            start.SetNext(end);
            end.SetPrevious(start);
            if (start.Line == null)
            {
                start.CreateForwardLine();
            }
            else
            {
                end.CreateBackwardLine();
            }
            if (start.LinkedOutPort != null)
            {
                if (end.LinkedInPort != null)
                {
                    start.LinkedOutPort.LinkedPortID = end.LinkedInPort.PortID;
                    end.LinkedInPort.LinkedPortID    = start.LinkedOutPort.PortID;
                }
            }
            ActiveDrawing.RefreshControl(node.Parent);
        }
コード例 #2
0
        protected override void OnMouseMove(MouseEventArgs e)
        {
            base.OnMouseMove(e);
            LinkLineNode nodeTest = HitTest(e.X, e.Y);

            if (nodeTest != null)
            {
                this.Cursor = Cursors.Hand;
                nodeTest.SelectLine(true);
            }
            else
            {
                this.Cursor = Cursors.Default;
            }
            if (!bMouseIn)
            {
                bMouseIn = true;
                for (int i = 0; i < Controls.Count; i++)
                {
                    ActiveDrawing ad = Controls[i] as ActiveDrawing;
                    if (ad != null)
                    {
                        ad.FireOnLeave(e);
                    }
                }
            }
        }
コード例 #3
0
        public void SetMouseUpControl()
        {
            ActiveDrawing a = _mouseDownControl;

            _mouseDownControl = null;
            OnActiveDrawingMouseUp(a);
        }
コード例 #4
0
        protected override void OnMouseMove(MouseEventArgs e)
        {
            if (!bMouseEnter)
            {
                bMouseEnter = true;
                if (this.Parent != null)
                {
                    for (int i = 0; i < this.Parent.Controls.Count; i++)
                    {
                        ActiveDrawing ad = this.Parent.Controls[i] as ActiveDrawing;
                        if (ad != null && ad != this)
                        {
                            ad.FireOnLeave(EventArgs.Empty);
                        }
                    }
                }
                Diagram dg = this.Parent as Diagram;
                if (dg != null)
                {
                    dg.OnChildActiveDrawingMouseEnter(this);
                }
                OnEnter(EventArgs.Empty);
            }
            const int MARGIN_D = 2;

            if (this.Parent != null && (e.Button & MouseButtons.Left) == MouseButtons.Left && bMD)
            {
                int  offsetX = 0;
                int  offsetY = 0;
                bool b       = false;
                if (!this.Capture)
                {
                    this.Capture = true;
                }
                int   x  = this.Left + e.X - x0;
                int   xd = this.Left;
                int   yd = this.Top;
                Point p0 = this.Parent.PointToClient(this.PointToScreen(e.Location));
                if (p0.X > MARGIN_D && p0.X < this.Parent.ClientSize.Width - MARGIN_D)
                {
                    xd = x;
                    b  = true;
                }
                int y = this.Top + e.Y - y0;
                if (p0.Y > MARGIN_D && p0.Y < this.Parent.ClientSize.Height - MARGIN_D)
                {
                    yd = y;
                    b  = true;
                }
                if (b)
                {
                    this.Location = new Point(xd - offsetX, yd - offsetY);
                    RefreshParent();
                }
            }
        }
コード例 #5
0
        protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);
            ActiveDrawing ad = _owner as ActiveDrawing;

            if (ad != null)
            {
                ad.OnRelativeDrawingMouseDown(this, e);
            }
        }
コード例 #6
0
        protected override void OnLeave(EventArgs e)
        {
            base.OnLeave(e);
            ActiveDrawing ad = _owner as ActiveDrawing;

            if (ad != null)
            {
                ad.OnRelativeDrawingMouseLeave(this);
            }
        }
コード例 #7
0
 public void SaveLocations()
 {
     for (int i = 0; i < Controls.Count; i++)
     {
         ActiveDrawing a = Controls[i] as ActiveDrawing;
         if (a != null)
         {
             a.SaveLocation();
         }
     }
 }
コード例 #8
0
        protected override void OnMove(EventArgs e)
        {
            base.OnMove(e);
            SaveLocation();
            SaveRelativePosition();
            ActiveDrawing ad = _owner as ActiveDrawing;

            if (ad != null)
            {
                ad.OnRelativeDrawingMove(this);
            }
        }
コード例 #9
0
 public ActiveDrawing GetActiveDrawingById(UInt32 id)
 {
     foreach (Control c in Controls)
     {
         ActiveDrawing ad = c as ActiveDrawing;
         if (ad != null)
         {
             if (ad.ActiveDrawingID == id)
             {
                 return(ad);
             }
         }
     }
     return(null);
 }
コード例 #10
0
        protected override void OnEnter(EventArgs e)
        {
            base.OnEnter(e);
            ActiveDrawing ad = _owner as ActiveDrawing;

            if (ad != null)
            {
                ad.OnRelativeDrawingMouseEnter(this);
            }
            Diagram dv = this.Parent as Diagram;

            if (dv != null)
            {
                dv.OnChildActiveDrawingMouseEnter(this);
            }
        }
コード例 #11
0
        public void Apply()
        {
            bool b = _host.DisableUndo;

            _host.DisableUndo = true;
            Control c = _host.GetUndoControl(_ctrlKey);

            if (c != null)
            {
                c.Size = _size;
                if (c.Parent != null)
                {
                    ActiveDrawing.RefreshControl(c.Parent);
                }
            }
            _host.DisableUndo = b;
        }
コード例 #12
0
        private void miDisconnectNodes_Click(object sender, EventArgs e)
        {
            MenuItem mi = sender as MenuItem;

            if (mi != null)
            {
                NodeData nd = mi.Tag as NodeData;
                if (nd != null)
                {
                    LinkLineNode node = nd.Node;

                    if (node != null)
                    {
                        if (nd.Data != null)
                        {
                            if (nd.Data.GetType().Equals(typeof(Point)))
                            {
                                Point pt = (Point)nd.Data;
                                if (node.Line != null)
                                {
                                    //===================
                                    UInt32             key  = node.ActiveDrawingID;
                                    UInt32             key1 = 0;
                                    UInt32             key2 = 0;
                                    LinkLineNodeInPort ip   = node.LinkedInPort;
                                    node.BreakLine(pt, ref key1, ref key2);
                                    OnDisconnectLine(ip);
                                    if (UndoHost != null)
                                    {
                                        if (!UndoHost.DisableUndo)
                                        {
                                            LinkLineUndoReconnect undo = new LinkLineUndoReconnect(UndoHost, key, key1, key2);
                                            LinkLineUndoBreak     redo = new LinkLineUndoBreak(UndoHost, key, key1, key2, pt);
                                            UndoHost.AddUndoEntity(new UndoEntity(undo, redo));
                                        }
                                    }
                                    ActiveDrawing.RefreshControl(this);
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #13
0
        private void miAddLineNode_Click(object sender, EventArgs e)
        {
            MenuItem mi = sender as MenuItem;

            if (mi != null)
            {
                NodeData nd = mi.Tag as NodeData;
                if (nd != null)
                {
                    LinkLineNode node = nd.Node;

                    if (node != null)
                    {
                        if (nd.Data != null)
                        {
                            if (nd.Data.GetType().Equals(typeof(Point)))
                            {
                                Point pt = (Point)nd.Data;
                                if (node.Line != null)
                                {
                                    UInt32       key2    = node.ActiveDrawingID;
                                    LinkLineNode newNode = node.InsertNode(pt.X + 5, pt.Y + 5);
                                    if (UndoHost != null)
                                    {
                                        if (!UndoHost.DisableUndo)
                                        {
                                            UInt32     key1   = newNode.ActiveDrawingID;
                                            UndoEntity entity = new UndoEntity(
                                                new LinkLineUndoDelete(UndoHost, key1), new LinkLineUndoAdd(UndoHost, key2, pt));
                                            UndoHost.AddUndoEntity(entity);
                                        }
                                    }
                                    newNode.SaveLocation();
                                    newNode.Selected = true;
                                    ActiveDrawing.RefreshControl(this);
                                    OnLineNodeAdded(newNode);
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #14
0
        protected override void OnApply(LinkLineNode node)
        {
            LinkLineNode prevNode = node;

            if (prevNode != null)
            {
                LinkLineNode nextNode = GetLineNode(_next);
                if (nextNode != null)
                {
                    if (prevNode.Line != null)
                    {
                        if (prevNode.Line.EndPoint == nextNode)
                        {
                            prevNode.ClearLine();
                        }
                    }
                    if (nextNode.Line != null)
                    {
                        if (nextNode.Line.StartPoint == prevNode)
                        {
                            nextNode.ClearLine();
                        }
                    }
                    LinkLineNode newNode = new LinkLineNode(nextNode, prevNode);
                    newNode.Location        = _point;
                    newNode.ActiveDrawingID = _deleted;
                    nextNode.Parent.Controls.Add(newNode);
                    if (prevNode.Line == null)
                    {
                        prevNode.CreateForwardLine();
                        newNode.CreateForwardLine();
                    }
                    else
                    {
                        newNode.CreateBackwardLine();
                        nextNode.CreateBackwardLine();
                    }
                    ActiveDrawing.RefreshControl(nextNode.Parent);
                }
            }
        }
コード例 #15
0
 private void showEditor(IMathExpression exp)
 {
     try
     {
         Rectangle   rc  = this.Parent.RectangleToScreen(this.Bounds);
         IMathEditor dlg = exp.CreateEditor(rc);
         if (((Form)dlg).ShowDialog(this.FindForm()) == DialogResult.OK)
         {
             LoadData(dlg.MathExpression);
             //
             Refresh();
             if (this.Parent != null)
             {
                 ActiveDrawing.RefreshControl(this.Parent);
             }
             setChanged();
         }
     }
     catch (Exception err)
     {
         MathNode.Log(this.FindForm(), err);
     }
 }
コード例 #16
0
 protected override void OnApply(LinkLineNode node)
 {
     node.BreakLine(_point, ref _node1, ref _node2);
     ActiveDrawing.RefreshControl(node.Parent);
 }
コード例 #17
0
 public void SetMouseDownControl(ActiveDrawing ad)
 {
     _mouseDownControl = ad;
     OnActiveDrawingMouseDown();
 }
コード例 #18
0
 public virtual void OnActiveDrawingMouseUp(ActiveDrawing a)
 {
 }
コード例 #19
0
 public void OnChildActiveDrawingMouseEnter(ActiveDrawing actDrwing)
 {
     bMouseIn = false;
 }