private void UpdateCanDrag(GraphArea area, bool canDrag) { foreach (var item in area.VertexList) { DragBehaviour.SetIsDragEnabled(item.Value, canDrag); } }
private void EnableDrag() { foreach (var item in gg_Area.VertexList) { DragBehaviour.SetIsDragEnabled(item.Value, true); item.Value.EventOptions.PositionChangeNotification = true; item.Value.PositionChanged += Value_PositionChanged; } }
void tst_but_gen_Click(object sender, RoutedEventArgs e) { var _graph = new GraphExample(); /*var v1 = new DataVertex("Start"); * _graph.AddVertex(v1); * var v2 = new DataVertex("End"); * _graph.AddVertex(v2); * var e1 = new DataEdge(v1, v2); * _graph.AddEdge(e1); * * _graph.AddVertex(new DataVertex("Block 1")); * _graph.AddVertex(new DataVertex("Block 2")); */ for (int i = 0; i < 10; i++) { _graph.AddVertex(new DataVertex(i.ToString() + "bldsddd\ndssdsds")); } _graph.AddEdge(new DataEdge(_graph.Vertices.First(), _graph.Vertices.Last())); _graph.AddEdge(new DataEdge(_graph.Vertices.Last(), _graph.Vertices.First())); _graph.AddEdge(new DataEdge(_graph.Vertices.First(), _graph.Vertices.Last())); // Resets external algorithms to null to start new fresh graph given that starting algo is a default algo tst_Area.DefaultEdgeRoutingAlgorithm = EdgeRoutingAlgorithmTypeEnum.None; //tst_Area.DefaultEdgeRoutingAlgorithmParams = tst_Area.AlgorithmFactory.CreateEdgeRoutingParameters(EdgeRoutingAlgorithmTypeEnum.SimpleER); //((SimpleERParameters)tst_Area.DefaultEdgeRoutingAlgorithmParams).BackStep = 10; tst_Area.DefaultOverlapRemovalAlgorithm = OverlapRemovalAlgorithmTypeEnum.FSA; tst_Area.GenerateGraph(_graph, true); /*var vlist = tst_Area.VertexList.Values.ToList(); * vlist[0].SetPosition(new Point(100, 100)); vlist[0].MathShape = VertexShape.Circle; * vlist[1].SetPosition(new Point(600, 100)); * * vlist[2].SetPosition(new Point(400, 100)); * vlist[3].SetPosition(new Point(440, 150)); */ foreach (var item in tst_Area.VertexList) { item.Value.MathShape = VertexShape.Rectangle; DragBehaviour.SetIsDragEnabled(item.Value, true); DragBehaviour.SetUpdateEdgesOnMove(item.Value, true); HighlightBehaviour.SetIsHighlightEnabled(item.Value, true); HighlightBehaviour.SetHighlightControl(item.Value, GraphControlType.VertexAndEdge); HighlightBehaviour.SetHighlightEdges(item.Value, EdgesType.All); } foreach (var item in tst_Area.EdgesList.Values) { HighlightBehaviour.SetHighlightControl(item, GraphControlType.VertexAndEdge); HighlightBehaviour.SetHighlightEdges(item, EdgesType.All); HighlightBehaviour.SetHighlightControl(item, GraphControlType.VertexAndEdge); } }
protected override void CreateVertexControl(DisplayNode vertex) { base.CreateVertexControl(vertex); var newControl = VertexControls[vertex]; var isDrag = DragBehaviour.GetIsDragEnabled(newControl); DragBehaviour.SetIsDragEnabled(newControl, false); // newControl.MouseLeftButtonUp += OnVertexControlMouseLeftButtonUp; DragBehaviour.SetIsDragEnabled(newControl, isDrag); }
void GraphArea_RelayoutFinished(object sender, EventArgs e) { ZoomBox.ZoomToFill(); ZoomBox.Mode = GraphX.Controls.ZoomControlModes.Custom; foreach (var item in GraphArea.VertexList) { DragBehaviour.SetIsDragEnabled(item.Value, true); item.Value.EventOptions.PositionChangeNotification = true; } GraphArea.ShowAllEdgesLabels(); GraphArea.InvalidateVisual(); }
private void tg_dragEnabled_Checked(object sender, RoutedEventArgs e) { if (tg_dragEnabled.IsChecked == null) { return; } tg_dragMoveEdges.IsEnabled = (bool)tg_dragEnabled.IsChecked; foreach (var item in tg_Area.VertexList) { DragBehaviour.SetIsDragEnabled(item.Value, tg_dragEnabled.IsChecked != null && tg_dragEnabled.IsChecked.Value); DragBehaviour.SetUpdateEdgesOnMove(item.Value, true); } }
private void UpdateCanDrag(bool value) { if (View == null) { return; } var area = View.Area; foreach (var item in area.VertexList) { DragBehaviour.SetIsDragEnabled(item.Value, value); } //throw new NotImplementedException(); }
private void tg_dragEnabled_Checked(object sender, RoutedEventArgs e) { if (tg_dragEnabled.IsChecked == true) { tg_dragMoveEdges.Visibility = System.Windows.Visibility.Visible; } else { tg_dragMoveEdges.Visibility = System.Windows.Visibility.Collapsed; } foreach (var item in tg_Area.VertexList) { DragBehaviour.SetIsDragEnabled(item.Value, (bool)tg_dragEnabled.IsChecked); DragBehaviour.SetUpdateEdgesOnMove(item.Value, true); } }
private void CreateVertex(GraphArea area, ZoomControl zoom, DataVertex data = null, double x = double.MinValue, double y = double.MinValue) { _viewmodel.Do(new CreateVertexOperation(Area, data, x, y, (v, vc) => { _selectedVertices.Add(v.Id); //area.RelayoutGraph(true); UpdateHighlightBehaviour(false); foreach (var selectedV in _selectedVertices) { var localvc = area.VertexList.Where(pair => pair.Key.Id == selectedV).Select(pair => pair.Value).FirstOrDefault(); HighlightBehaviour.SetHighlighted(localvc, true); } if (tbtnCanDrag.IsChecked.Value) { DragBehaviour.SetIsDragEnabled(vc, true); } else { DragBehaviour.SetIsDragEnabled(vc, false); } v.IsEditing = true; v.OnPositionChanged -= v_OnPositionChanged; v.OnPositionChanged += v_OnPositionChanged; }, (v) => { _selectedVertices.Remove(v.Id); //on vertex recreated })); //FitToBounds(area.Dispatcher, zoom); }
public void EnableDrag() { DragBehaviour.SetIsDragEnabled(this, true); }
public void DisableDrag() { DragBehaviour.SetIsDragEnabled(this, false); }
void erg_but_randomgraph_Click(object sender, System.Windows.RoutedEventArgs e) { if ((EdgeRoutingAlgorithmTypeEnum)erg_eralgo.SelectedItem != EdgeRoutingAlgorithmTypeEnum.Bundling) { var gr = GenerateDataGraph(30); if (erg_Area.LogicCore.EnableParallelEdges) { if (erg_Area.VertexList.Count() < 2) { var v1 = new DataVertex(); gr.AddVertex(v1); var v2 = new DataVertex(); gr.AddVertex(v2); gr.AddEdge(new DataEdge(v1, v2) { Text = string.Format("{0} -> {1}", v1.Text, v2.Text) }); gr.AddEdge(new DataEdge(v2, v1) { Text = string.Format("{0} -> {1}", v2.Text, v1.Text) }); } else { var v1 = gr.Vertices.ToList()[0]; var v2 = gr.Vertices.ToList()[1]; gr.AddEdge(new DataEdge(v1, v2) { Text = string.Format("{0} -> {1}", v1.Text, v2.Text) }); gr.AddEdge(new DataEdge(v2, v1) { Text = string.Format("{0} -> {1}", v2.Text, v1.Text) }); } } erg_Area.GetLogicCore <LogicCoreExample>().DefaultEdgeRoutingAlgorithm = (EdgeRoutingAlgorithmTypeEnum)erg_eralgo.SelectedItem; switch ((EdgeRoutingAlgorithmTypeEnum)erg_eralgo.SelectedItem) { case EdgeRoutingAlgorithmTypeEnum.SimpleER: erg_Area.GetLogicCore <LogicCoreExample>().DefaultEdgeRoutingAlgorithmParams = erg_SimpleERParameters; break; case EdgeRoutingAlgorithmTypeEnum.PathFinder: erg_Area.GetLogicCore <LogicCoreExample>().DefaultEdgeRoutingAlgorithmParams = erg_PFERParameters; // erg_Area.SideExpansionSize = new Size(erg_PFERParameters.SideGridOffset, erg_PFERParameters.SideGridOffset); break; } erg_Area.GetLogicCore <LogicCoreExample>().DefaultLayoutAlgorithm = LayoutAlgorithmTypeEnum.SimpleRandom; erg_Area.GetLogicCore <LogicCoreExample>().DefaultOverlapRemovalAlgorithm = OverlapRemovalAlgorithmTypeEnum.FSA; erg_Area.GetLogicCore <LogicCoreExample>().DefaultOverlapRemovalAlgorithmParams = erg_Area.LogicCore.AlgorithmFactory.CreateOverlapRemovalParameters(OverlapRemovalAlgorithmTypeEnum.FSA); var oprm = erg_Area.GetLogicCore <LogicCoreExample>().DefaultOverlapRemovalAlgorithmParams as OverlapRemovalParameters; //oprm.HorizontalGap = 100; //oprm.VerticalGap = 100; //erg_Area.ExternalEdgeRoutingAlgorithm = new SimpleEdgeRouting<DataVertex, DataEdge, GraphExample>(gr as GraphExample, erg_Area.GetVertexPositions(), erg_Area.GetVertexSizeRectangles()); erg_Area.GenerateGraph(gr); erg_zoomctrl.ZoomToFill();//.ZoomToFill(); erg_Area.GenerateAllEdges(); foreach (var item in erg_Area.GetAllVertexControls()) { DragBehaviour.SetIsDragEnabled(item, true); } erg_recalculate_Checked(null, null); erg_showEdgeArrows_Checked(null, null); erg_showEdgeLabels_Checked(null, null); erg_alignEdgeLabels_Checked(null, null); return; } erg_Area.RemoveAllEdges(); erg_Area.RemoveAllVertices(); //generate graph var graph = new GraphExample(); foreach (var item in DataSource.Take(120)) { graph.AddVertex(new DataVertex(item.Text) { ID = item.ID }); } var vlist = graph.Vertices.ToList(); foreach (var item in vlist) { if (Rand.Next(0, 50) > 25) { continue; } var vertex2 = vlist[Rand.Next(0, graph.VertexCount - 1)]; graph.AddEdge(new DataEdge(item, vertex2, Rand.Next(1, 50)) { ToolTipText = string.Format("{0} -> {1}", item, vertex2) }); } /* graph.AddEdge(new DataEdge(vlist[0], vlist[3], 1)); * graph.AddEdge(new DataEdge(vlist[1], vlist[4], 1)); * graph.AddEdge(new DataEdge(vlist[2], vlist[5], 1)); * * graph.AddEdge(new DataEdge(vlist[0], vlist[6], 1)); * graph.AddEdge(new DataEdge(vlist[1], vlist[7], 1)); * graph.AddEdge(new DataEdge(vlist[2], vlist[8], 1)); * //generate vertex positions * var VertexPositions = new Dictionary<DataVertex, Point>(); * * VertexPositions.Add(vlist[6], new Point(5000, 1000)); * VertexPositions.Add(vlist[7], new Point(5000, 1100)); * VertexPositions.Add(vlist[8], new Point(5000, 1300)); * * VertexPositions.Add(vlist[0], new Point(100, 100)); * VertexPositions.Add(vlist[1], new Point(300, 100)); * VertexPositions.Add(vlist[2], new Point(200, 300)); * * VertexPositions.Add(vlist[3], new Point(10000, 1000)); * VertexPositions.Add(vlist[4], new Point(10300, 1000)); * VertexPositions.Add(vlist[5], new Point(10200, 1300));*/ //generate vertices var VertexPositions = new Dictionary <DataVertex, Point>(); foreach (var item in GenerateRandomVertices(graph, 0, 40, 0, 2000, 0, 2000)) { VertexPositions.Add(item.Key, item.Value); } foreach (var item in GenerateRandomVertices(graph, 40, 40, 5000, 7000, 3000, 4000)) { VertexPositions.Add(item.Key, item.Value); } foreach (var item in GenerateRandomVertices(graph, 80, 40, 500, 2500, 6000, 9000)) { VertexPositions.Add(item.Key, item.Value); } erg_Area.LogicCore.Graph = graph; UpdateLayout(); CalcBundling(); //generate edges erg_Area.GenerateAllEdges(Visibility.Visible); foreach (var item in erg_Area.GetAllVertexControls()) { DragBehaviour.SetIsDragEnabled(item, true); } erg_recalculate_Checked(null, null); erg_showEdgeArrows_Checked(null, null); erg_showEdgeLabels_Checked(null, null); erg_zoomctrl.ZoomToFill(); }