private void ListView_DoubleClick(object sender, MouseButtonEventArgs e) { var listName = ((System.Windows.Controls.ListView)sender).Name; ProcessTreeObject selectedTree = null; PatternObject selectedPattern = null; if (listName == "ProcessTreeView") { if (ProcessTreeView.SelectedItem != null) { selectedTree = ((ProcessTreeObject)ProcessTreeView.SelectedItem); } } else if (listName == "ValidOccurencesView") { if (ValidOccurencesView.SelectedItem != null) { var patternSummary = ((ValidOccurencesViewObject)ValidOccurencesView.SelectedItem).TreeSummary; selectedPattern = _foundPatterns.Single(p => p.TreeSummary == patternSummary); } } else { return; } if (selectedPattern != null || selectedTree != null) { var patternMembers = ""; var selectedItem = selectedPattern ?? selectedTree; var patternSize = 1; if (listName == "ValidOccurencesView") { if (selectedPattern != null) { patternMembers = string.Join(",", selectedPattern.Ids.Select(t => $"{t.Key}:{t.Value}")); patternSize = selectedPattern.Ids.Count / selectedPattern.Scores.Count; } } if (e.ChangedButton == MouseButton.Left) { RenderTreeInPython(selectedItem.TreePath, patternMembers, selectedItem.TreeSummary, patternSize); } else if (e.ChangedButton == MouseButton.Right) { OpenFileInNotePad(selectedItem.TreePath); } } }
private void ProcessRelevantModels(IEnumerable <string> validSubtrees) { foreach (string validTree in validSubtrees) { if (!string.IsNullOrEmpty(validTree)) { var splittedResult = validTree.Split(';'); var treePath = splittedResult[0]; var score = splittedResult[1].Split('-').ToList(); var patternMembers = splittedResult.Skip(2).ToList(); if (File.Exists(treePath)) { var nodeMatches = new List <KeyValuePair <string, string> >(); foreach (var nodeMatch in patternMembers) { var nodeMatchParts = RemoveSpecialCharacters(nodeMatch).Split(' ').ToList(); if (nodeMatchParts.Count > 5) { throw new Exception("Parsing goes wrong."); } var treeNode = nodeMatchParts[0]; var patternNode = nodeMatchParts[1]; var matchWord = nodeMatchParts[3]; nodeMatches.Add(new KeyValuePair <string, string>(treeNode, $"{patternNode}:{matchWord}")); } var newPattern = new PatternObject(treePath, score, nodeMatches); _foundPatterns.Add(newPattern); Debug.WriteLine($"{treePath} is a subtree!"); } else { throw new Exception("Incorrect file path given!"); } } } }