//------------------------------------------------------------------------ private void MouseDownAddLine(EarthMouseEventArgs args) { args.IsProcessed = true; if (args.Buttons == System.Windows.Forms.MouseButtons.Left) { if (m_lineEnCoursEdition == null) { m_lineEnCoursEdition = new CGPSLine(m_carteEditee.ContexteDonnee); m_lineEnCoursEdition.CreateNewInCurrentContexte(); m_lineEnCoursEdition.Libelle = I.T("New line|20056"); m_lineEnCoursEdition.Carte = m_carteEditee; CGPSLineTrace trace = m_lineEnCoursEdition.DetailLigne; trace.PointDepart = new SLatLong(args.Latitude, args.Longitude); TreeNode node = new TreeNode(); FillNode(node, m_lineEnCoursEdition); m_arbreCartographie.Nodes[0].Nodes.Add(node); m_arbreCartographie.SelectedNode = node; m_wndMap.ShowMouseMarker(args.Latitude, args.Longitude); } else { CGPSLineSegment segment = new CGPSLineSegment(m_lineEnCoursEdition.DetailLigne); segment.PointDestination = new SLatLong(args.Latitude, args.Longitude); CGPSLineTrace trace = m_lineEnCoursEdition.DetailLigne; if (trace.Segments.Count() > 0) { CGPSLineSegment lastSeg = trace.Segments.ElementAt(trace.Segments.Count() - 1); segment.Width = lastSeg.Width; segment.Couleur = lastSeg.Couleur; } m_wndMap.ShowMouseMarker(args.Latitude, args.Longitude); trace.AddSegment(segment); foreach (IMapItem item in m_lineEnCoursEdition.FindMapItems(m_mapDatabase)) { item.Layer.RemoveItem(item); m_wndMap.DeleteItem(item); } foreach (IMapItem item in m_lineEnCoursEdition.CreateMapItems(m_mapDatabase.GetLayer(m_carteEditee.IdUniversel, true))) { m_wndMap.AddMapItem(item); } TreeNode node = FindNode(m_lineEnCoursEdition); if (node != null) { FillNode(node, m_lineEnCoursEdition); } node = FindNode(segment); if (node != null) { m_arbreCartographie.SelectedNode = node; } } } }