/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="args"></param> protected void OnVertexSelected(object sender, VertexSelectedEventArgs args) { // Toggle and append selection occurs in area selection only. No need to worry about it here var control = args.VertexControl; var vertex = args.VertexControl.Vertex as VertexBase; if (args.MouseArgs.LeftButton == MouseButtonState.Pressed) { // Is this a new selection and/or a toggle selection? if (!selected_vertices_.Contains(vertex)) { ClearSelection(); // User is only selecting one vertex SelectVertex(control, false); } last_vertex_control_ = control; //last_vertex_position_.X = last_vertex_control_.GetPosition().X; //last_vertex_position_.Y = last_vertex_control_.GetPosition().Y; var position = zoom_control_.TranslatePoint(args.MouseArgs.GetPosition(zoom_control_), graph_area_); last_vertex_position_.X = position.X; last_vertex_position_.Y = position.Y; } }
private void VertexSelectedAction(object sender, VertexSelectedEventArgs args) { this.currentVertex = args.VertexControl; if (this.elementProvider.Element?.InstanceMetatype == Repo.Metatype.Edge) { if (this.previosVertex == null) { this.editorManager.CreateVirtualEdge(this.currentVertex, this.currentVertex.GetPosition()); this.previosVertex = this.currentVertex; } else { if (((VertexControlWithVCP)currentVertex).VCPTargetRoot == null) { this.editorManager.DestroyVirtualEdge(); return; } var command = new Commands.CreateEdgeCommand( this.model, this.elementProvider.Element, (this.previosVertex?.Vertex as NodeViewModel)?.Node, (this.currentVertex?.Vertex as NodeViewModel)?.Node); this.controller.Execute(command); this.ElementManipulationDone?.Invoke(this, EventArgs.Empty); } return; } this.NodeSelected?.Invoke( this, new NodeSelectedEventArgs { Node = this.currentVertex.GetDataVertex <NodeViewModel>() }); this.graphArea.GetAllVertexControls().ToList().ForEach(x => x.GetDataVertex <NodeViewModel>(). Color = Brushes.Green); this.currentVertex.GetDataVertex <NodeViewModel>().Color = Brushes.LightBlue; if (this.previosVertex != null) { this.previosVertex.GetDataVertex <NodeViewModel>().Color = Brushes.Yellow; } if (args.MouseArgs.RightButton == MouseButtonState.Pressed) { args.VertexControl.ContextMenu = new ContextMenu(); var mi = new MenuItem { Header = "Delete item", Tag = args.VertexControl }; mi.Click += this.MenuItemClickedOnVertex; args.VertexControl.ContextMenu.Items.Add(mi); args.VertexControl.ContextMenu.IsOpen = true; } }
/// <summary> /// Event handler that is triggered when a vertex is clicked. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The event arguments.</param> private void VertexSelectedEvent(object sender, VertexSelectedEventArgs args) { var sequenceGraph = this.sequenceGraph as GraphXSequenceGraph; if (sequenceGraph == null) { return; } var graph = (DataGraph)this.SequenceGraphArea.LogicCore.Graph; var vertex = (DataVertex)args.VertexControl.Vertex; this.SelectedVertices = graph.GetAllSequencePaths(vertex, sequenceGraph.EndPoint); }
/// <summary> /// Event handler that is triggered when a vertex is clicked. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The event arguments.</param> private void VertexSelectedEvent(object sender, VertexSelectedEventArgs args) { if (!(sequenceGraph is GraphXSequenceGraph seqGraph)) { return; } var graph = (DataGraph)SequenceGraphArea.LogicCore.Graph; var vertex = (DataVertex)args.VertexControl.Vertex; #pragma warning disable 618 SelectedVertices = graph.GetAllSequencePaths(vertex, seqGraph.EndPoint); #pragma warning restore 618 }
private void CheckThatForReconnection(VertexSelectedEventArgs args) { var vertexToCheck = args.VertexControl; if (IsVertexVirtual(vertexToCheck)) { var vertices = this.graphArea.VertexList.Select(x => x.Value).Where(x => !IsVertexVirtual(x)); var verticesToConnect = vertices.Where(x => IsCenterOfFirstVertexOnAnother(vertexToCheck, x)); if (verticesToConnect.Count() != 0) { var vertexToConnect = verticesToConnect.First(); ReconnectEdgeFromVirtualNodeToReal(vertexToCheck, vertexToConnect); } } }
private void MyArea_VertexSelected(object sender, VertexSelectedEventArgs args) { if (args.MouseArgs.ChangedButton == MouseButton.Right) { if (args.VertexControl.ContextMenu == null) { args.VertexControl.ContextMenu = new ContextMenu(); var propagate = new MenuItem() { Header = "Propagate", DataContext = args.VertexControl.DataContext }; propagate.Click += Propagate_Click; args.VertexControl.ContextMenu.Items.Add(propagate); var delete = new MenuItem() { Header = "Delete", DataContext = args.VertexControl.DataContext }; delete.Click += Delete_Click; args.VertexControl.ContextMenu.Items.Add(delete); } args.VertexControl.ContextMenu.IsOpen = true; } else if (args.MouseArgs.ChangedButton == MouseButton.Left) { if (args.Modifiers == ModifierKeys.Control) { var job = args.VertexControl.Vertex as MyVertex; var jobselected = selectedVertices.Contains(job); if (jobselected) { job.Selected = false; job.RaisePropertyChanged("Selected"); selectedVertices.Remove(job); } else { job.Selected = true; job.RaisePropertyChanged("Selected"); selectedVertices.Add(job); } } } }
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 VertexSelectedAction(object sender, VertexSelectedEventArgs args) { this.ctrlVer = args.VertexControl; if (this.elementProvider.Element?.InstanceMetatype == Repo.Metatype.Edge) { if (this.prevVer == null) { this.editorManager.CreateVirtualEdge(this.ctrlVer, this.ctrlVer.GetPosition()); this.prevVer = this.ctrlVer; } else { this.controller.NewEdge(this.elementProvider.Element, this.prevVer, this.ctrlVer); this.ElementUsed?.Invoke(this, EventArgs.Empty); } return; } this.NodeSelected?.Invoke(this, new NodeSelectedEventArgs { Node = this.ctrlVer.GetDataVertex <NodeViewModel>() }); this.scene.GetAllVertexControls().ToList().ForEach(x => x.GetDataVertex <NodeViewModel>(). Color = Brushes.Green); this.ctrlVer.GetDataVertex <NodeViewModel>().Color = Brushes.LightBlue; if (this.prevVer != null) { this.prevVer.GetDataVertex <NodeViewModel>().Color = Brushes.Yellow; } if (args.MouseArgs.RightButton == MouseButtonState.Pressed) { args.VertexControl.ContextMenu = new ContextMenu(); var mi = new MenuItem { Header = "Delete item", Tag = args.VertexControl }; mi.Click += this.MenuItemClickVert; args.VertexControl.ContextMenu.Items.Add(mi); args.VertexControl.ContextMenu.IsOpen = true; } }
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); } }
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; }
/// <summary> /// Вызывается, когда была выделена какая-либо вершина. /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void graphArea_VertexSelected(object sender, VertexSelectedEventArgs args) { if (args.MouseArgs.LeftButton == MouseButtonState.Pressed) { switch (operationMode) { case EditorOperationMode.Create: CreateEdgeControl(args.VertexControl); break; case EditorOperationMode.CreateVillage: CreateEdgeControl(args.VertexControl); break; case EditorOperationMode.Delete: SafeRemoveVertex(args.VertexControl); break; } } }
private void VertexSelectedAction(object sender, VertexSelectedEventArgs args) { this.ctrlVer = args.VertexControl; if (this.currentElement != null && this.currentElement.InstanceMetatype == Repo.Metatype.Edge) { if (this.prevVer == null) { this.editorManager.CreateVirtualEdge(this.ctrlVer, this.ctrlVer.GetPosition()); this.prevVer = this.ctrlVer; } else { this.CreateEdge(this.currentElement as Repo.IEdge); this.prevVer = null; this.editorManager.DestroyVirtualEdge(); this.currentElement = null; } } this.attributesView.DataContext = this.ctrlVer.GetDataVertex <DataVertex>(); this.g_Area.GetAllVertexControls().ToList().ForEach(x => x.GetDataVertex <DataVertex>().Color = Brushes.Green); this.ctrlVer.GetDataVertex <DataVertex>().Color = Brushes.LightBlue; if (this.prevVer != null) { this.prevVer.GetDataVertex <DataVertex>().Color = Brushes.Yellow; } if (args.MouseArgs.RightButton == MouseButtonState.Pressed) { args.VertexControl.ContextMenu = new ContextMenu(); var mi = new MenuItem { Header = "Delete item", Tag = args.VertexControl }; mi.Click += this.MenuItemClickVert; args.VertexControl.ContextMenu.Items.Add(mi); args.VertexControl.ContextMenu.IsOpen = true; } }
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) { var countTagged = dg_Area.VertexList.Values.Count(DragBehaviour.GetIsTagged); var isTagged = DragBehaviour.GetIsTagged(args.VertexControl); args.VertexControl.ContextMenu = new ContextMenu(); var mi = new MenuItem { Header = "Delete item" + (isTagged && countTagged > 1 ? "s" : ""), Tag = args.VertexControl, Margin = new Thickness(5) }; mi.Click += mi_Click; args.VertexControl.ContextMenu.Items.Add(mi); args.VertexControl.ContextMenu.IsOpen = true; } }
void dg_Area_VertexSelected(object sender, VertexSelectedEventArgs args) { if (args.MouseArgs.LeftButton == MouseButtonState.Pressed) { if (Keyboard.IsKeyDown(Key.LeftCtrl)) { //if (DragBehaviour.GetIsDragging(args.VertexControl)) return; SelectVertex(args.VertexControl); } } else if (args.MouseArgs.RightButton == MouseButtonState.Pressed) { args.VertexControl.ContextMenu = new System.Windows.Controls.ContextMenu(); var mi = new System.Windows.Controls.MenuItem() { Header = "Delete item", Tag = args.VertexControl }; mi.Click += mi_Click; args.VertexControl.ContextMenu.Items.Add(mi); } }
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) { args.VertexControl.ContextMenu = new System.Windows.Controls.ContextMenu(); var menuitem = new System.Windows.Controls.MenuItem() { Header = "Delete item", Tag = args.VertexControl }; menuitem.Click += tg_deleteitem_Click; args.VertexControl.ContextMenu.Items.Add(menuitem); var str = new StringBuilder(); using (var writer = new StringWriter(str)) XamlWriter.Save(args.VertexControl.ContextMenu.Template, writer); Debug.Write(str); } }
void graphArea_VertexSelected(object sender, VertexSelectedEventArgs args) { if (args.MouseArgs.LeftButton == MouseButtonState.Pressed) { switch (_opMode) { case EditorOperationMode.Edit: CreateEdgeControl(args.VertexControl); break; case EditorOperationMode.Delete: SafeRemoveVertex(args.VertexControl); break; default: if (_opMode == EditorOperationMode.Select && args.Modifiers == ModifierKeys.Control) { SelectVertex(args.VertexControl); } break; } } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="args"></param> protected void OnVertexMouseLeftButtonUp(object sender, VertexSelectedEventArgs args) { // nothing for now bool append = Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift); bool toggle = Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl); // Vertex group dragging -> Don't clear selection if (last_vertex_control_ != null) { // Compare the last position and current position // If they are the same then you move to just selection var position = zoom_control_.TranslatePoint(args.MouseArgs.GetPosition(zoom_control_), graph_area_); if (last_vertex_position_ == position) //if (last_vertex_position_ == last_vertex_control_.GetPosition()) { ClearSelection(); SelectVertex(last_vertex_control_, false); } last_vertex_control_ = null; } }
private void GraphArea_VertexSelected(object sender, VertexSelectedEventArgs args) { }
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(); } }