public void LoadPorts(XmlNode node)
        {
            object      v;
            XmlNodeList nds = node.SelectNodes(XmlSerialization.XML_PORT);
            List <LinkLineNodeOutPort> outports = new List <LinkLineNodeOutPort>();

            if (nds != null)
            {
                IXmlCodeReader r = GetReader();
                foreach (XmlNode nd in nds)
                {
                    v = XmlSerialization.ReadFromXmlNode(r, nd, this);
                    if (v != null)
                    {
                        if (v is LinkLineNodeInPort)
                        {
                            InPort = (LinkLineNodeInPort)v;
                        }
                        else if (v is LinkLineNodeOutPort)
                        {
                            outports.Add((LinkLineNodeOutPort)v);
                        }
                    }
                }
            }
            LinkLineNodeOutPort[] o = new LinkLineNodeOutPort[outports.Count];
            outports.CopyTo(o);
            OutPorts = o;
        }
 protected void Init()
 {
     LinkLineNodeOutPort[] _outports = new LinkLineNodeOutPort[] { new LinkLineNodeOutPort(this) };
     this.Variable.OutPorts = _outports;
     this.Variable.MathExpression.SetFont(new Font("Times New Roman", 12));
     _color = System.Drawing.Color.Blue;
     _outports[0].PositionType  = enumPositionType.Circle;
     this.Variable.VariableName = this.Name;
     this.Variable.VariableType = this.DataType;
     ((DrawingVariable)(_outports[0].Label)).SetVariable(this.Variable);
     ((DrawingVariable)(_outports[0].Label)).SetOwner(_outports[0]);
 }
        public void AddOutPort(LinkLineNodeOutPort port)
        {
            int n = _outports.Length;

            LinkLineNodeOutPort[] o = new LinkLineNodeOutPort[n + 1];
            for (int i = 0; i < n; i++)
            {
                o[i] = _outports[i];
            }
            _outports    = o;
            _outports[n] = port;
        }
Exemple #4
0
        public void AddOutPort(LinkLineNodeOutPort port)
        {
            EventPortOut po = port as EventPortOut;

            if (po == null)
            {
                throw new DesignerException("Cannot add non-EventPortOut to EventIcon");
            }
            if (_outPortList == null)
            {
                _outPortList = new List <EventPortOut>();
            }
            _outPortList.Add(po);
        }
        public override object CloneExp(MathNode parent)
        {
            MathNodeVariable node = (MathNodeVariable)base.CloneExp(parent);

            node.VariableName  = _value;
            node.SubscriptName = _subscript;
            node._id           = ID;
            node.IsLocal       = IsLocal;
            node.IsParam       = IsParam;
            node.IsReturn      = IsReturn;
            node._passin       = _passin;
            if (_subscriptFont != null)
            {
                node._subscriptFont = (Font)_subscriptFont.Clone();
            }
            node.IsSuperscript = IsSuperscript;
            node.Position      = new Point(Position.X, Position.Y);
            if (VariableType == null)
            {
                throw new MathException("VariableType is null when clone it. {0}", _value);
            }
            else
            {
                node.VariableType = (RaisDataType)VariableType.Clone();
            }
            if (ClonePorts)
            {
                if (_outports != null)
                {
                    LinkLineNodeOutPort[] ports = new LinkLineNodeOutPort[_outports.Length];
                    for (int i = 0; i < ports.Length; i++)
                    {
                        _outports[i].ConstructorParameters = new object[] { node };
                        ports[i] = (LinkLineNodeOutPort)_outports[i].Clone();
                    }
                    node.OutPorts = ports;
                }
                if (_inport != null)
                {
                    _inport.ConstructorParameters = new object[] { node };
                    node.InPort = (LinkLineNodeInPort)_inport.Clone();
                }
            }
            return(node);
        }
Exemple #6
0
 public override void LinkJumpBranches()
 {
     if (_jumpToId != 0)
     {
         if (_jumpToActionBranch == null)
         {
             throw new DesignerException("Cannot set portlink from {0} to {1}. Linked actions not set", this.BranchId, _jumpToId);
         }
         ActionPortOut po = this.OutPortList[0];
         ActionPortIn  pi = _jumpToActionBranch.GetInPort(po.LinkedPortID, po.LinkedPortInstanceID);               //.InPortList[po.LinkedPortIndex];
         if (pi == null)
         {
             throw new DesignerException("out-port {0} is linked to [{1},{2}] of the jump-to-branch {3}, but in-port [{1},{2}] is not among the in-port list of the branch",
                                         po.PortID, po.LinkedPortID, po.LinkedPortInstanceID, _jumpToActionBranch.BranchId);
         }
         LinkLineNode        start = po.End;
         LinkLineNode        end;
         LinkLineNodeOutPort pipo = pi.Start as LinkLineNodeOutPort;
         if (pipo != null)
         {
             if (pipo.LinkedPortID != pi.PortID || pipo.LinkedPortInstanceID != pi.PortInstanceID)
             {
                 throw new DesignerException("Input [{0},{1}] is already linked to [{2},{3}], cannot link it to [{4},{5}]",
                                             pi.PortID, pi.PortInstanceID, pipo.PortID, pipo.PortInstanceID, po.PortID, po.PortInstanceID);
             }
         }
         else
         {
             end = pi.Start;
             if (end != start)
             {
                 start.SetNext(end);
                 end.SetPrevious(start);
                 po.LinkedPortID = pi.PortID;
                 pi.LinkedPortID = po.PortID;
             }
             else
             {
                 //it is not an error, it is already linked
             }
         }
     }
     base.LinkJumpBranches();
 }
        public bool IsOnTheLine(LinkLineNode lineNode)
        {
            LinkLineNodeOutPort start = lineNode.Start as LinkLineNodeOutPort;

            if (start != null)
            {
                if (start.PortID == _startNode.PortID && start.PortInstanceID == _startNode.PortInstanceID)
                {
                    LinkLineNodeInPort end = lineNode.End as LinkLineNodeInPort;
                    if (end != null)
                    {
                        if (end.PortID == _endNode.PortID && end.PortInstanceID == _endNode.PortInstanceID)
                        {
                            return(true);
                        }
                    }
                }
            }
            return(false);
        }
Exemple #8
0
        public void OnReadFromXmlNode(IXmlCodeReader serializer, XmlNode node)
        {
            _owner = (ObjectRef)XmlSerialization.ReadFromChildXmlNode(serializer, node, XML_Owner);
            XmlNodeList nodes = node.SelectNodes(XmlSerialization.FormatString("{0}/{1}",
                                                                               XML_Inports, XmlSerialization.XML_PORT));

            _inports = new ProgramInPort[nodes.Count];
            for (int i = 0; i < nodes.Count; i++)
            {
                _inports[i] = (ProgramInPort)XmlSerialization.ReadFromXmlNode(serializer, nodes[i], this);
            }
            nodes = node.SelectNodes(XmlSerialization.FormatString("{0}/{1}",
                                                                   XML_Outports, XmlSerialization.XML_PORT));
            _outports = new ProgramOutPort[nodes.Count];
            for (int i = 0; i < nodes.Count; i++)
            {
                _outports[i] = (ProgramOutPort)XmlSerialization.ReadFromXmlNode(serializer, nodes[i], this);
            }
            _newInport  = (LinkLineNodeInPort)XmlSerialization.ReadFromChildXmlNode(serializer, node, XML_NewInport, this);
            _newOutport = (LinkLineNodeOutPort)XmlSerialization.ReadFromChildXmlNode(serializer, node, XML_NewOutport, this);
        }
Exemple #9
0
        public virtual PortCollection GetAllPorts()
        {
            PortCollection ports = new PortCollection();

            if (_newInport == null)
            {
                _newInport = new ProgramNewInPort(this);
            }
            if (_newOutport == null)
            {
                _newOutport = new ProgramNewOutPort(this);
            }
            ports.Add(_newInport);
            ports.Add(_newOutport);
            if (_inports != null)
            {
                ports.AddRange(_inports);
            }
            if (_outports != null)
            {
                ports.AddRange(_outports);
            }
            return(ports);
        }
        protected override void OnMouseDown(MouseEventArgs e)
        {
            LinkLineNode nodeTest = HitTest(e.X, e.Y);

            if (nodeTest != null)
            {
                if (AllowLineSelection)
                {
                    nodeTest.SelectLine(true);
                    if (nodeTest.Start != null && nodeTest.End != null)
                    {
                        LinkLineNodeOutPort startNode = nodeTest.Start as LinkLineNodeOutPort;
                        LinkLineNodeInPort  endNode   = nodeTest.End as LinkLineNodeInPort;
                        if (startNode != null && endNode != null)
                        {
                            bool bChanged = true;
                            if (_selectedLine != null)
                            {
                                if (_selectedLine.StartNode.PortID == startNode.PortID &&
                                    _selectedLine.StartNode.PortInstanceID == startNode.PortInstanceID &&
                                    _selectedLine.EndNode.PortID == endNode.PortID &&
                                    _selectedLine.EndNode.PortInstanceID == endNode.PortInstanceID)
                                {
                                    bChanged = false;
                                }
                            }
                            if (bChanged)
                            {
                                _selectedLine = new LinkLineEnds(startNode, endNode);
                                OnLineSelectionChanged();
                            }
                        }
                    }
                }
            }
            if (e.Button == MouseButtons.Right)
            {
                ContextMenu mnu = new ContextMenu();
                Point       pt  = new Point(e.X, e.Y);
                if (nodeTest != null)
                {
                    //nodeTest is the line holder
                    nodeTest.SelectLine(true);
                    MenuItemWithBitmap mi = new MenuItemWithBitmap("Add line join", Resource1.newLineBreak);
                    mi.Click += new EventHandler(miAddLineNode_Click);
                    mi.Tag    = new NodeData(nodeTest, pt);
                    mnu.MenuItems.Add(mi);
                    //
                    if (AllowLineDisconnect)
                    {
                        if (nodeTest.LinkedInPort != null && nodeTest.LinkedOutPort != null)
                        {
                            mi        = new MenuItemWithBitmap("Disconnect", Resource1.disconnect);
                            mi.Click += new EventHandler(miDisconnectNodes_Click);
                            mi.Tag    = new NodeData(nodeTest, pt);
                            mnu.MenuItems.Add(mi);
                        }
                    }
                    OnCreateContextMenuForLinkLine(nodeTest, mnu, pt);
                }
                else
                {
                    OnCreateContextMenu(mnu, pt);
                }
                if (mnu.MenuItems.Count > 0)
                {
                    _menuPoint = pt;
                    mnu.Show(this, pt);
                }
            }
        }
 public LinkLineEnds(LinkLineNodeOutPort startNode, LinkLineNodeInPort endNode)
 {
     _startNode = startNode;
     _endNode   = endNode;
 }
 public void AddOutPort(LinkLineNodeOutPort port)
 {
     throw new DesignerException("Cannot call AddOutPort for {0}", this.GetType().Name);
 }
Exemple #13
0
 public void AddOutPort(LinkLineNodeOutPort port)
 {
     AddOutport((ProgramOutPort)port);
 }