コード例 #1
0
        /// <summary>
        /// Загружает топологию из .xml файла
        /// </summary>
        /// <param name="fileName">Путь к файлу</param>
        /// <param name="net">Сохраняемая топология</param>
        public void LoadTopology(String fileName, Topology net)
        {
            XDocument xDoc = XDocument.Load(fileName);
            net.Clear();

            /* Загрузка узлов */
            foreach (XElement r in xDoc.Root.Element("Routers").Elements())
            {
                Router router = new Router(new Point(Int32.Parse(r.Attribute("x").Value),
                                                     Int32.Parse(r.Attribute("y").Value)),
                                           Drawing.RouterImg);
                router.Name = r.Attribute("name").Value;
                net.CreateNode(router);
            }
            /* Загрузка ребер */
            foreach (XElement l in xDoc.Root.Elements("Links").Elements())
            {
                Link link = new Link(Int32.Parse(l.Attribute("snode").Value),
                                     Int32.Parse(l.Attribute("enode").Value));
                link.Metric = Int32.Parse(l.Attribute("metric").Value);
                net.CreateEdge(link);
            }
        }
コード例 #2
0
 /// <summary>
 /// Конструктор
 /// </summary>
 /// <param name="r">Маршрутизатор</param>
 public RouterForm(Router r)
 {
     InitializeComponent();
     _router = r;
 }
コード例 #3
0
 /// <summary>
 /// Конструктор. Инициализирует строку
 /// </summary>
 /// <param name="dest">Пункт назначения</param>
 /// <param name="metric">Метрика маршрута да пункта назначения</param>
 /// <param name="nextHop">Следующий маршрутизатор</param>
 public RoutingTableRow(Router dest, Int32 metric, Router nextHop)
 {
     _destRouter = dest;
     _metric = metric;
     _nextRouter = nextHop;
 }
コード例 #4
0
        /// <summary>
        /// Заполнение словаря событий
        /// нажатия клавиш мыши
        /// </summary>
        private void InitActions()
        {
            /* Cловарь событий нажатия левой кнопки мыши */
            MLD.Add(Instrument.Drag, p =>
            {
                _mouseIsPushed = true;
                Router sRouter = FindRouter(p);
                if (sRouter == null)
                {
                    _selected.Clear();
                    _tmpPoint = GetMouseLocation();
                }
                else
                {
                    if (_selected.Contains(sRouter) == false)
                    {
                        _selected = new List<IDrag>() { sRouter };
                    }
                }
                foreach (IDrag d in _selected)
                {
                    d.MouseXOffset = GetMouseLocation().X - d.Location.X;
                    d.MouseYOffset = GetMouseLocation().Y - d.Location.Y;
                }
            });
            MLD.Add(Instrument.Config, p => { });
            MLD.Add(Instrument.Insert_Edge, p =>
            {
                Router router = FindRouter(p);
                if (_mouseIsPushed == false && router != null)
                {
                    _tmpRouter = router;
                    _mouseIsPushed = true;
                }
            });
            MLD.Add(Instrument.Insert_Node, p =>
            {
                CreateRouter(p, Drawing.RouterImg);
            });

            /* Cловарь событий отпускания левой кнопки мыши */
            MLU.Add(Instrument.Drag, p =>
            {
                _mouseIsPushed = false;
                if (_selected.Count == 0)
                {
                    foreach (Router r in _topology.Routers)
                        if (Geometry.InArea(r.Location, _tmpPoint, p) == true)
                            _selected.Add(r);
                }
            });
            MLU.Add(Instrument.Config, p =>
            {
                Router router = FindRouter(p);
                if (router != null)
                {
                    RouterForm rf = new RouterForm(router);
                    rf.ShowDialog();
                    return;
                }
                Link link = FindLink(p);
                if (link != null)
                {
                    LinkForm lf = new LinkForm(link,
                                               String.Format("{0}/{1}",
                                                             _topology.Routers[link.NumS].Docket,
                                                             _topology.Routers[link.NumE].Docket));
                    lf.ShowDialog();
                    return;
                }
            });
            MLU.Add(Instrument.Insert_Edge, p =>
            {
                Router router = FindRouter(p);
                if (_tmpRouter != null && _mouseIsPushed == true && router != null && router != _tmpRouter)
                    CreateLink(_topology.Routers.IndexOf(_tmpRouter), _topology.Routers.IndexOf(router));
                _tmpRouter = null;
                _mouseIsPushed = false;
            });
            MLU.Add(Instrument.Insert_Node, p => { });

            /* Cловарь событий движения мыши */
            MM.Add(Instrument.Drag, p =>
            {
                if (_mouseIsPushed == true)
                    foreach (IDrag d in _selected)
                        d.Location = new Point(GetMouseLocation().X - d.MouseXOffset,
                                               GetMouseLocation().Y - d.MouseYOffset);
                UpdateGraphic();
            });
            MM.Add(Instrument.Config, p => { });
            MM.Add(Instrument.Insert_Edge, p => { UpdateGraphic(); });
            MM.Add(Instrument.Insert_Node, p => { });
        }
コード例 #5
0
 /// <summary>
 /// Создание маршрутизатора
 /// </summary>
 /// <param name="location">Местоположение маршрутизатора</param>
 /// <param name="image">Изображение маршрутизатора</param>
 private void CreateRouter(Point location, Bitmap image)
 {
     Router router = new Router(location, image);
     router.Name = "R" + router.Id.ToString();
     _topology.CreateNode(router);
 }
コード例 #6
0
 /// <summary>
 /// Создает новый узел в графе
 /// </summary>
 /// <param name="location">Местоположение нового узла</param>
 /// <param name="image">Изображение нового узла</param>
 public void CreateNode(Router r)
 {
     Routers.Add(r);
 }