void graphArea_VertexSelected(object sender, VertexSelectedEventArgs args) { if(args.MouseArgs.LeftButton == MouseButtonState.Pressed) { if (_opMode == EditorOperationMode.Edit) CreateEdgeControl(args.VertexControl); else if(_opMode == EditorOperationMode.Delete) SafeRemoveVertex(args.VertexControl); else if (_opMode == EditorOperationMode.Select && args.Modifiers == ModifierKeys.Control) SelectVertex(args.VertexControl); } }
private void GgAreaVertexSelected(object sender, VertexSelectedEventArgs args) { if (args.MouseArgs.LeftButton != MouseButtonState.Pressed) { return; } switch (viewModel.SenteceGraphOperationMode) { case SenteceGraphOperationMode.Edit: CreateEdgeControl(args.VertexControl); break; case SenteceGraphOperationMode.Delete: SafeRemoveVertex(args.VertexControl); break; case SenteceGraphOperationMode.Select: SelectVertex(args.VertexControl); break; } }
void dg_Area_VertexSelectedForED(object sender, VertexSelectedEventArgs args) { if (!_isInEdMode) return; if (_edVertex == null) //select starting vertex { _edVertex = args.VertexControl; _edFakeDv = new DataVertex { ID = -666 }; _edGeo = new PathGeometry(new PathFigureCollection { new PathFigure { IsClosed = false, StartPoint = _edVertex.GetPosition(), Segments = new PathSegmentCollection { new PolyLineSegment(new List<Point> { new Point() }, true) } } }); var dedge = new DataEdge(_edVertex.Vertex as DataVertex, _edFakeDv); _edEdge = new EdgeControl(_edVertex, null, dedge) { ManualDrawing = true }; dg_Area.AddEdge(dedge, _edEdge); dg_Area.LogicCore.Graph.AddVertex(_edFakeDv); dg_Area.LogicCore.Graph.AddEdge(dedge); _edEdge.SetEdgePathManually(_edGeo); } else if (!Equals(_edVertex, args.VertexControl)) //finish draw { _edEdge.Target = args.VertexControl; var dedge = _edEdge.Edge as DataEdge; if (dedge != null) dedge.Target = args.VertexControl.Vertex as DataVertex; var fig = _edGeo.Figures[0]; var seg = fig.Segments[_edGeo.Figures[0].Segments.Count - 1] as PolyLineSegment; if (seg != null && seg.Points.Count > 0) { var targetPos = _edEdge.Target.GetPosition(); var sourcePos = _edEdge.Source.GetPosition(); //get the size of the source var sourceSize = new Size { Width = _edEdge.Source.ActualWidth, Height = _edEdge.Source.ActualHeight }; var targetSize = new Size { Width = _edEdge.Target.ActualWidth, Height = _edEdge.Target.ActualHeight }; var srcStart = seg.Points.Count == 0 ? fig.StartPoint : seg.Points[0]; var srcEnd = seg.Points.Count > 1 ? (seg.Points[seg.Points.Count - 1] == targetPos ? seg.Points[seg.Points.Count - 2] : seg.Points[seg.Points.Count - 1]) : fig.StartPoint; var p1 = GeometryHelper.GetEdgeEndpoint(sourcePos, new Rect(sourceSize), srcStart, _edEdge.Source.VertexShape); var p2 = GeometryHelper.GetEdgeEndpoint(targetPos, new Rect(targetSize), srcEnd, _edEdge.Target.VertexShape); fig.StartPoint = p1; if (seg.Points.Count > 1) seg.Points[seg.Points.Count - 1] = p2; } GeometryHelper.TryFreeze(_edGeo); _edEdge.SetEdgePathManually(new PathGeometry(_edGeo.Figures)); _isInEdMode = false; ClearEdgeDrawing(); } }
void dg_Area_VertexSelected(object sender, VertexSelectedEventArgs args) { if (args.MouseArgs.LeftButton == MouseButtonState.Pressed) { if (Keyboard.IsKeyDown(Key.LeftCtrl)) SelectVertex(args.VertexControl); } else if (args.MouseArgs.RightButton == MouseButtonState.Pressed) { args.VertexControl.ContextMenu = new ContextMenu(); var mi = new MenuItem { Header = "Delete item", Tag = args.VertexControl }; mi.Click += mi_Click; args.VertexControl.ContextMenu.Items.Add(mi); } }
public MainWindow() { InitializeComponent(); //Customize Zoombox a bit //Set minimap (overview) window to be visible by default ZoomControl.SetViewFinderVisibility(zoomctrl, Visibility.Visible); //Set Fill zooming strategy so whole graph will be always visible zoomctrl.ZoomToFill(); var modes = new List<string>() { "By hopes", "By speed" }; protocols = new List<string>() { "TCP", "UDP" }; routingModeBox.ItemsSource = modes; routingModeBox.SelectedItem = modes[0]; protocolBox.ItemsSource = protocols; protocolBox.SelectedItem = protocols[0]; //Lets setup GraphArea settings GraphAreaExample_Setup(); zoomctrl.MouseRightButtonUp += ((o, s) => { VertexInputBox.Visibility = Visibility.Visible; }); //Vertex settings Area.VertexSelected += ((h, j) => { _selectedVertexEvent = j; _selectedVertex = (DataVertex)j.VertexControl.Vertex; VertexBox.Visibility = Visibility.Visible; }); Area.EdgeSelected += ((h, j) => { _selectedEdgeEvent = j; _selectedEdge = (DataEdge)j.EdgeControl .Edge; EdgeBox.Visibility = Visibility.Visible; }); Area.EdgeMouseEnter += ((h,j) => { foreach (var item in logicCore.Graph.Edges) { if (item.Equals(j.EdgeControl.Edge)) { j.EdgeControl.ToolTip = item.GetEdgeType(); } } }); //Vertex tooltip Area.VertexMouseEnter += ((h,j) => { foreach(var item in logicCore.Graph.Vertices) { if(item.Text == j.VertexControl.Vertex.ToString()) { if (item.IsEnabled) { j.VertexControl.ToolTip = item.Text + "\n\n" + item.Routing; StatsText.Text = ""; StatsText.Text += " " + item.Text + Environment.NewLine; StatsText.Text += " Recieved TCP" + Environment.NewLine + " control packets: " + item.RecievedTCPControlPackets + Environment.NewLine; StatsText.Text += " Recieved TCP" + Environment.NewLine + " data packets: " + item.RecievedTCPDataPackets + Environment.NewLine; StatsText.Text += " Sended TCP" + Environment.NewLine + " control packets: " + item.SendedTCPControlPackets + Environment.NewLine; StatsText.Text += " Sended TCP" + Environment.NewLine + " data packets: " + item.SendedTCPDataPackets + Environment.NewLine; StatsText.Text += " Recieved UDP" + Environment.NewLine + " data packets: " + item.RecivedUDPPackets + Environment.NewLine; StatsText.Text += " Sended UDP" + Environment.NewLine + " data packets: " + item.SendedUDPPackets + Environment.NewLine; CurrentIterBox.Text = " Current iteration: " + Environment.NewLine + " " + _iterationNumber; } else j.VertexControl.ToolTip = item.Text; } } }); Area.VertexMouseLeave += ((h,j) => { StatsText.Text = ""; CurrentIterBox.Text = ""; }); gg_but_randomgraph.Click += gg_but_randomgraph_Click; gg_but_relayout.Click += gg_but_relayout_Click; Loaded += MainWindow_Loaded; Graph = NetworkGraph.GetDefaultGraph(); SearchShortestWay(true); }
void tg_Area_VertexSelected(object sender, VertexSelectedEventArgs args) { if (args.MouseArgs.LeftButton == MouseButtonState.Pressed && tg_edgeMode.SelectedIndex == 1) { tg_Area.GenerateEdgesForVertex(args.VertexControl, (EdgesType)tg_edgeType.SelectedItem); } if (args.MouseArgs.RightButton != MouseButtonState.Pressed) return; args.VertexControl.ContextMenu = new ContextMenu(); var menuitem = new MenuItem { Header = "Delete item", Tag = args.VertexControl }; menuitem.Click += tg_deleteitem_Click; args.VertexControl.ContextMenu.Items.Add(menuitem); args.VertexControl.ContextMenu.IsOpen = true; }