示例#1
0
 public override void HandleMouseHoverOut(LTSCanvas canvas)
 {
     try
     {
         PNArc route = this.FindSelectedRouteBasedOnTransition(canvas);
         route.HandleMouseHoverOut(canvas);
     }
     catch { }
 }
示例#2
0
        public ArcEditingForm(PNArc arc)
        {
            InitializeComponent();
            _arc = arc;
            textBox3.Text = _arc.Weight.ToString();
            if (arc.From is PNPlace)
            {
                label1.Text = "From:";
            }

            textBox1.Text = (arc.From as StateItem).Name;

            if (arc.To is PNPlace)
            {
                label2.Text = "To:";
            }

            textBox2.Text = (arc.To as StateItem).Name;
        }
示例#3
0
        private void Canvas_CanvasItemSelected(object sender, CanvasItemEventArgs e)
        {
            if (this.Button_AddLink.Checked)
            {
                if (this.SelectedItems.Count > 0 && e.CanvasItem != null)
                {
                    CanvasItemData SelectedItem = this.SelectedItems[0];
                    if (SelectedItem.Item is StateItem && e.CanvasItem.Item is StateItem
                        && SelectedItem.Item.GetType() != e.CanvasItem.Item.GetType())
                    {
                        StateItem sourceState = SelectedItem.Item as StateItem;
                        StateItem targetState = e.CanvasItem.Item as StateItem;
                        PNArc r = new PNArc(SelectedItem.Item, targetState);
                        if (sourceState is PNTransition)
                        {
                            (sourceState as PNTransition).OutputPlaces.Add(targetState as PNPlace);
                        }
                        else
                        {
                            (targetState as PNTransition).InputPlaces.Add(sourceState as PNPlace);
                        }
                        this.AddLink(r);
                        SetDirty();

                    }

                    e.CanvasItem.Item.HandleMouseUp(new PointF());
                    Button_AddLink.Checked = false;
                }
                else if (this.SelectedItems.Count == 0 && e.CanvasItem != null)
                {
                    //Select the starting state of route
                    this.SelectedItems.Clear();
                    this.SelectedItems.Add(e.CanvasItem);
                    Canvas.temporaryNails.Add((e.CanvasItem.Item as StateItem).Center());
                }
                else if (this.SelectedItems.Count > 0 && e.CanvasItem == null)
                {
                    //Click on canvas to create a new nail
                    Canvas.temporaryNails.Add(this.Canvas.LastMouseClickPosition);
                }

            }
            else
            {
                this.SelectedItems.Clear();
                if (e.CanvasItem != null)
                {
                    this.SelectedItems.Add(e.CanvasItem);
                    e.CanvasItem.Item.HandleSelected(this.Canvas);
                }
                CanvasItemData SelectedItem = e.CanvasItem;
                if (SelectedItem == null)
                {
                    //Button_AddToken.Enabled = false;
                    //Button_DeleteToken.Enabled = false;
                    if (Button_AddNewState.Checked)
                    {
                        Button_AddNewState_Click(sender, e);
                        Button_AddNewState.Checked = false;
                    }

                    if (Button_AddNewTransition.Checked)
                    {
                        Button_AddNewTransition_Click(sender, e);
                        Button_AddNewTransition.Checked = false;
                    }
                }
                else
                {
                    //if (e.CanvasItem.Item is PNPlace && Button_AddToken.Checked)
                    //{
                    //    PNPlace place = e.CanvasItem.Item as PNPlace;
                    //    place.NumberOfTokens++;
                    //    Button_AddToken.Checked = false;
                    //    Canvas.Refresh();
                    //    SetDirty();
                    //}

                    //if (e.CanvasItem.Item is PNPlace && Button_DeleteToken.Checked)
                    //{
                    //    PNPlace place = e.CanvasItem.Item as PNPlace;
                    //    place.NumberOfTokens--;
                    //    Button_DeleteToken.Checked = false;
                    //    Canvas.Refresh();
                    //    SetDirty();
                    //}

                    //if (e.CanvasItem.Item is PNTransition)
                    //{
                    //    Button_AddToken.Enabled = false;
                    //    Button_DeleteToken.Enabled = false;
                    //}
                }
            }
            SelectedRoute = null;
            this.Button_Delete.Enabled = (this.SelectedItems.Count > 0);
            if (SelectedItems.Count == 1 && SelectedItems[0].Item is PNPlace)
            {
                //Button_AddToken.Enabled = true;
                //PNPlace place = SelectedItems[0].Item as PNPlace;
                //Button_DeleteToken.Enabled = (place.NumberOfTokens > 0);
            }
        }
示例#4
0
 private void AddLink(PNArc route)
 {
     this.Canvas.AddLink(route);
     StoreCurrentCanvas();
 }
示例#5
0
 private void EditingArc(PNArc arc)
 {
     ArcEditingForm form = new ArcEditingForm(arc);
     if (form.ShowDialog() == DialogResult.OK)
     {
         // do something here
         SetDirty();
     }
     Canvas.Refresh();
 }
示例#6
0
        public override void RemovedFromCanvas(LTSCanvas canvas)
        {
            PNArc route = this.FindSelectedRouteBasedOnTransition(canvas);

            route.RemovedFromCanvas(canvas);
        }
示例#7
0
        public override void HandleSelected(LTSCanvas canvas)
        {
            PNArc route = this.FindSelectedRouteBasedOnTransition(canvas);

            route.CurrentState = ItemState.Selected;
        }
示例#8
0
        public override void LoadFromXml(XmlElement elem)
        {
            Node.Text = elem.GetAttribute(NAME_PROCESS_NODE_NAME, "");
            Console.Write(Node.Text);
            Parameters = elem.GetAttribute(PARAMETER_NODE_NAME, "");
            Console.Write(Parameters);
            Zoom = float.Parse(elem.GetAttribute(ZOOM_PROCESS_NODE_NAME, ""));
            PlaceCounter = int.Parse(elem.GetAttribute(PLACE_COUNTER));
            TransitionCounter = int.Parse(elem.GetAttribute(TRANSITION_COUNTER));

            int color = 0;

            // --replace by lqvu--
            //XmlElement topologyElement = (XmlElement)elem.ChildNodes[0];
            //LoadTopologyElement(topologyElement);
            // --
            int id = 0;
            if (elem.ChildNodes.Count == 4)
            {
                XmlElement topologyElement = (XmlElement)elem.ChildNodes[id++];
                LoadTopologyElement(topologyElement);
            }
            // --

            XmlElement placesElement = (XmlElement)elem.ChildNodes[id++];
            foreach (XmlElement element in placesElement.ChildNodes)
            {
                string elementId = element.GetAttribute(XmlTag.TAG_REFERENCE_ID);
                if (this.mSensors.Exists(x => x.ID == elementId)) color = 1;
                if (this.mChannels.Exists(x => x.ID == elementId)) color = -1;
                PNPlace place = new PNPlace(string.Empty, 0, elementId, color);
                place.LoadFromXml(element);
                this.AddSingleCanvasItem(place);
                this.AddSingleCanvasItem(place.labelItems);
            }

            XmlElement transitionsElement = (XmlElement)elem.ChildNodes[id++];
            foreach (XmlElement element in transitionsElement.ChildNodes)
            {
                string elementId = element.GetAttribute(XmlTag.TAG_REFERENCE_ID);
                if (this.mSensors.Exists(x => x.ID == elementId)) color = 1;
                if (this.mChannels.Exists(x => x.ID == elementId)) color = -1;

                String nameProp = element.GetAttribute("Name");
                if (nameProp != null && nameProp.Length > 3 && nameProp.Substring(0, 4) == "Conn")
                    color = 2;

                PNTransition transition = new PNTransition(string.Empty, elementId, color);
                transition.LoadFromXml(element);
                this.AddSingleCanvasItem(transition);
                this.AddSingleCanvasItem(transition.labelItems);
            }

            XmlElement linksElement = (XmlElement)elem.ChildNodes[id++];
            foreach (XmlElement element in linksElement.ChildNodes)
            {
                PNArc arc = new PNArc(null, null);
                arc.LoadFromXML(element, this);

                this.AddSingleLink(arc);
                foreach (NailItem nailItem in arc.Nails)
                {
                    this.AddSingleCanvasItem(nailItem);
                }

                this.AddSingleCanvasItem(arc.Label);
            }
        }
示例#9
0
        public override void LoadFromXml(XmlElement elem)
        {
            Node.Text = elem.GetAttribute(NAME_PROCESS_NODE_NAME, "");
            Console.Write(Node.Text);
            Parameters = elem.GetAttribute(PARAMETER_NODE_NAME, "");
            Console.Write(Parameters);
            Zoom              = float.Parse(elem.GetAttribute(ZOOM_PROCESS_NODE_NAME, ""));
            PlaceCounter      = int.Parse(elem.GetAttribute(PLACE_COUNTER));
            TransitionCounter = int.Parse(elem.GetAttribute(TRANSITION_COUNTER));

            int color = 0;

            // --replace by lqvu--
            //XmlElement topologyElement = (XmlElement)elem.ChildNodes[0];
            //LoadTopologyElement(topologyElement);
            // --
            int id = 0;

            if (elem.ChildNodes.Count == 4)
            {
                XmlElement topologyElement = (XmlElement)elem.ChildNodes[id++];
                LoadTopologyElement(topologyElement);
            }
            // --

            XmlElement placesElement = (XmlElement)elem.ChildNodes[id++];

            foreach (XmlElement element in placesElement.ChildNodes)
            {
                string elementId = element.GetAttribute(XmlTag.TAG_REFERENCE_ID);
                if (this.mSensors.Exists(x => x.ID == elementId))
                {
                    color = 1;
                }
                if (this.mChannels.Exists(x => x.ID == elementId))
                {
                    color = -1;
                }
                PNPlace place = new PNPlace(string.Empty, 0, elementId, color);
                place.LoadFromXml(element);
                this.AddSingleCanvasItem(place);
                this.AddSingleCanvasItem(place.labelItems);
            }

            XmlElement transitionsElement = (XmlElement)elem.ChildNodes[id++];

            foreach (XmlElement element in transitionsElement.ChildNodes)
            {
                string elementId = element.GetAttribute(XmlTag.TAG_REFERENCE_ID);
                if (this.mSensors.Exists(x => x.ID == elementId))
                {
                    color = 1;
                }
                if (this.mChannels.Exists(x => x.ID == elementId))
                {
                    color = -1;
                }

                String nameProp = element.GetAttribute("Name");
                if (nameProp != null && nameProp.Length > 3 && nameProp.Substring(0, 4) == "Conn")
                {
                    color = 2;
                }

                PNTransition transition = new PNTransition(string.Empty, elementId, color);
                transition.LoadFromXml(element);
                this.AddSingleCanvasItem(transition);
                this.AddSingleCanvasItem(transition.labelItems);
            }

            XmlElement linksElement = (XmlElement)elem.ChildNodes[id++];

            foreach (XmlElement element in linksElement.ChildNodes)
            {
                PNArc arc = new PNArc(null, null);
                arc.LoadFromXML(element, this);

                this.AddSingleLink(arc);
                foreach (NailItem nailItem in arc.Nails)
                {
                    this.AddSingleCanvasItem(nailItem);
                }

                this.AddSingleCanvasItem(arc.Label);
            }
        }