public MainWindowViewModel(List <string> allProcess, List <ProcessTreeMine> psTree) { allProcessString = allProcess; psTreeMine = psTree; Graph = new PocGraph(true); allProcess.RemoveRange(0, 2); List <PocVertex> existingVertices = new List <PocVertex>(); existingVertices.Add(new PocVertex("Start_Process", true)); foreach (var item in allProcess) { if (HashClass.UnPermittedProcess.FirstOrDefault(x => item.ToLower().Contains(x.ToLower().Replace(".exe", ""))) != null) { existingVertices.Add(new PocVertex(item, false, item)); } else { existingVertices.Add(new PocVertex(item, true, item)); } } foreach (var existingVertex in existingVertices) { Graph.AddVertex(existingVertex); } foreach (var item in psTree) { AddNewGraphEdge(existingVertices[0], existingVertices.FirstOrDefault(x => x.ID == item.fatherName) ?? new PocVertex("NullProcess", false)); if (item.ChildList.Count > 0) { foreach (var processTreeMine in item.ChildList) { GenerateTree(processTreeMine, item.fatherName, existingVertices); } } //else //{ // AddNewGraphEdge(existingVertices[0], existingVertices.FirstOrDefault(x => x.ID==item.fatherName)??new PocVertex("NullProcess",false)); //} } TreeLayoutParameters = new SimpleTreeLayoutParameters(); TreeLayoutParameters.Direction = GraphSharp.Algorithms.Layout.LayoutDirection.TopToBottom; //THIS IS WHAT YOU EXPECT TreeLayoutParameters.LayerGap = 200.0; TreeLayoutParameters.OptimizeWidthAndHeight = true; //TreeLayoutParameters.SpanningTreeGeneration =SpanningTreeGeneration.DFS; TreeLayoutParameters.VertexGap = 1.0; TreeLayoutParameters.WidthPerHeight = 1.0; ConfigLayoutAlgorithmType(); //Pick a default Layout Algorithm Type LayoutAlgorithmType = "ISOM"; }
public void ReLayoutGraph(string processHistory) { _graph = new PocGraph(true); List <PocVertex> existingVertices = new List <PocVertex>(); int countX = 0; foreach (var item in processHistory.Split('*')) { if (countX % 2 == 1) { existingVertices.Add(new PocVertex(item, true)); } countX++; } //existingVertices.Add(new PocVertex(String.Format("Barn Rubble{0}", count), true)); //0 //existingVertices.Add(new PocVertex(String.Format("Frank Zappa{0}", count), false)); //1 //existingVertices.Add(new PocVertex(String.Format("Gerty CrinckleBottom{0}", count), true)); //2 foreach (PocVertex vertex in existingVertices) { Graph.AddVertex(vertex); } if (existingVertices.Count > 0) { int nodecount = existingVertices.Count; //add some edges to the graph while (nodecount - 1 > 0) { int current = nodecount - 1; int next = current - 1; AddNewGraphEdge(existingVertices[current], existingVertices[next]); nodecount--; } } ////add some edges to the graph //AddNewGraphEdge(existingVertices[0], existingVertices[1]); //AddNewGraphEdge(existingVertices[0], existingVertices[2]); NotifyPropertyChanged("Graph"); }
public MainWindowViewModel(string processHistory) { Graph = new PocGraph(true); List <PocVertex> existingVertices = new List <PocVertex>(); //existingVertices.Reverse(); //existingVertices.Add(new PocVertex("Sacha Barber", true)); //0 //existingVertices.Add(new PocVertex("Sarah Barber", false)); //1 existingVertices.Add(new PocVertex("Child Process", true)); //2 existingVertices.Add(new PocVertex("Parent Process", true)); //2 foreach (PocVertex vertex in existingVertices) { Graph.AddVertex(vertex); } if (existingVertices.Count > 0) { int nodecount = existingVertices.Count; //add some edges to the graph while (nodecount - 1 > 0) { int current = nodecount - 1; int next = current - 1; AddNewGraphEdge(existingVertices[current], existingVertices[next]); nodecount--; } } //Add Layout Algorithm Types ConfigLayoutAlgorithmType(); //Pick a default Layout Algorithm Type LayoutAlgorithmType = "EfficientSugiyama"; //ReLayoutGraph(); }