Changeset 11817 for branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/SymbolicDataAnalysisGenealogyGraphView.cs
- Timestamp:
- 01/22/15 00:31:03 (10 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.EvolutionTracking/HeuristicLab.Problems.DataAnalysis.Symbolic.Views/3.4/Tracking/SymbolicDataAnalysisGenealogyGraphView.cs
r11744 r11817 25 25 using System.Linq; 26 26 using System.Windows.Forms; 27 using HeuristicLab.Core.Views;28 27 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 29 28 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views; … … 33 32 34 33 namespace HeuristicLab.Problems.DataAnalysis.Symbolic.Views { 35 [View("Symbol dDataAnalysisGenealogyView")]34 [View("SymbolicDataAnalysisGenealogyGraphView")] 36 35 [Content(typeof(IGenealogyGraph<ISymbolicExpressionTree>), IsDefaultView = true)] 37 public partial class Symbol dDataAnalysisGenealogyView : ItemView{36 public partial class SymbolicDataAnalysisGenealogyGraphView : SymbolicDataAnalysisGenealogyGraphViewDesignable { 38 37 private readonly ISymbolicExpressionTreeNodeSimilarityComparer comparer; 39 38 40 public Symbol dDataAnalysisGenealogyView() {39 public SymbolicDataAnalysisGenealogyGraphView() { 41 40 InitializeComponent(); 42 43 41 comparer = new SymbolicExpressionTreeNodeSimilarityComparer(); 42 viewHost.ViewType = typeof(GraphicalSymbolicExpressionTreeView); 44 43 } 45 46 public new IGenealogyGraph<ISymbolicExpressionTree> Content {47 get { return (IGenealogyGraph<ISymbolicExpressionTree>)base.Content; }48 set { base.Content = value; }49 }50 51 44 #region event handlers 52 53 45 protected override void OnContentChanged() { 54 46 base.OnContentChanged(); 55 if (Content != null) { 56 genealogyGraphChart.GenealogyGraph = Content; 47 if (Content != null) { genealogyGraphChart.GenealogyGraph = Content; } 48 } 49 #endregion 50 51 public SymbolicExpressionTreeChart SymbolicExpressionTreeChart { 52 get { 53 var view = (GraphicalSymbolicExpressionTreeView)base.viewHost.ActiveView; 54 return view == null ? null : view.SymbolicExpressionTreeChart; 57 55 } 58 56 } 59 57 60 #endregion61 62 58 protected override void RegisterContentEvents() { 63 genealogyGraphChart.GenealogyGraphNodeClicked += graphChart_GenealogyGraphNodeClicked;64 genealogyGraphChart.GenealogyGraphNodeDoubleClicked += graphChart_GenealogyGraphNodeDoubleClicked;65 symbolicExpressionTreeChart.SymbolicExpressionTreeNodeClicked += treeChart_SymbolicExpressionNodeClicked;66 59 base.RegisterContentEvents(); 60 if (SymbolicExpressionTreeChart != null) 61 SymbolicExpressionTreeChart.SymbolicExpressionTreeNodeClicked += treeChart_SymbolicExpressionTreeNodeClicked; 67 62 } 68 63 69 64 protected override void DeregisterContentEvents() { 65 if (SymbolicExpressionTreeChart != null) 66 SymbolicExpressionTreeChart.SymbolicExpressionTreeNodeClicked -= treeChart_SymbolicExpressionTreeNodeClicked; 70 67 base.DeregisterContentEvents(); 71 genealogyGraphChart.GenealogyGraphNodeClicked -= graphChart_GenealogyGraphNodeClicked;72 symbolicExpressionTreeChart.SymbolicExpressionTreeNodeClicked -= treeChart_SymbolicExpressionNodeClicked;73 68 } 74 69 75 public void graphChart_GenealogyGraphNodeClicked(object sender, MouseEventArgs args) { 70 public override void graphChart_GenealogyGraphNodeClicked(object sender, MouseEventArgs args) { 71 base.graphChart_GenealogyGraphNodeClicked(sender, args); 76 72 var visualNode = (VisualGenealogyGraphNode)sender; 77 73 var graphNode = (IGenealogyGraphNode<ISymbolicExpressionTree>)visualNode.Data; 78 var tree = graphNode.Data;79 symbolicExpressionTreeChart.Tree = tree;80 74 if (graphNode.InArcs.Any()) { 81 75 var fragment = graphNode.InArcs.Last().Data as IFragment<ISymbolicExpressionTreeNode>; … … 95 89 } 96 90 97 public void graphChart_GenealogyGraphNodeDoubleClicked(object sender, MouseEventArgs arcs) { 98 var visualNode = (VisualGenealogyGraphNode)sender; 99 var graphNode = (IGenealogyGraphNode<ISymbolicExpressionTree>)visualNode.Data; 100 // var tree = graphNode.Data; 101 // var model = new RegressionModel(); 102 // var solution = new RegressionSolution() 103 // MainFormManager.MainForm.ShowContent(tree); 104 } 105 106 public void treeChart_SymbolicExpressionNodeClicked(object sender, MouseEventArgs args) { 91 public void treeChart_SymbolicExpressionTreeNodeClicked(object sender, MouseEventArgs args) { 107 92 var visualNode = (VisualTreeNode<ISymbolicExpressionTreeNode>)sender; 108 93 var subtree = visualNode.Content; … … 112 97 treeChart_HighlightSubtree(subtree); 113 98 114 bool trace = genealogyGraphChart.TraceFragments; // check whether the mode is 'trace' or 'match'99 bool trace = genealogyGraphChart.TraceFragments; // check whether we are in 'trace' or 'match' mode 115 100 116 101 if (trace) { … … 118 103 var graphNode = (IGenealogyGraphNode<ISymbolicExpressionTree>)genealogyGraphChart.SelectedGraphNode; 119 104 var subtreeIndex = graphNode.Data.IterateNodesPrefix().ToList().IndexOf(subtree); 120 var fragmentGraph = SymbolicDataAnalysisExpressionTracing.TraceSubtree(graphNode, subtreeIndex); 105 // var fragmentGraph = SymbolicDataAnalysisExpressionTracing.TraceSubtree(graphNode, subtreeIndex); 106 var traceGraph = TraceCalculator.TraceSubtree(graphNode, subtreeIndex); 121 107 122 if ( fragmentGraph.Vertices.Any()) {123 var genealogyNodes = fragmentGraph.Vertices.Select(v => Content.GetByContent(v.Data));108 if (traceGraph.Vertices.Any()) { 109 var genealogyNodes = traceGraph.Vertices.Select(v => Content.GetByContent(v.Data)); 124 110 genealogyGraphChart.HighlightNodes(genealogyNodes); 125 foreach (var a in fragmentGraph.Arcs) {111 foreach (var a in traceGraph.Arcs) { 126 112 genealogyGraphChart.HighlightArc(Content.GetByContent(a.Target.Data), Content.GetByContent(a.Source.Data)); 127 113 } 128 MainFormManager.MainForm.ShowContent( fragmentGraph); // display the fragment graph on the screen114 MainFormManager.MainForm.ShowContent(traceGraph); // display the fragment graph on the screen 129 115 } 130 116 } else { … … 148 134 149 135 private void treeChart_ClearColors() { 150 foreach (var node in symbolicExpressionTreeChart.Tree.IterateNodesPrefix()) {151 var visualNode = symbolicExpressionTreeChart.GetVisualSymbolicExpressionTreeNode(node);136 foreach (var node in SymbolicExpressionTreeChart.Tree.IterateNodesPrefix()) { 137 var visualNode = SymbolicExpressionTreeChart.GetVisualSymbolicExpressionTreeNode(node); 152 138 if (visualNode != null) { 153 139 visualNode.LineColor = Color.Black; … … 155 141 } 156 142 } 157 symbolicExpressionTreeChart.RepaintNodes();143 SymbolicExpressionTreeChart.RepaintNodes(); 158 144 } 159 145 160 146 private void treeChart_HighlightSubtree(ISymbolicExpressionTreeNode subtree, Color? color = null) { 161 Color myColor = color == null ? Color.RoyalBlue : (Color)color;147 Color myColor = color ?? Color.RoyalBlue; 162 148 foreach (var s in subtree.IterateNodesPrefix()) { 163 var visualNode = symbolicExpressionTreeChart.GetVisualSymbolicExpressionTreeNode(s);149 var visualNode = SymbolicExpressionTreeChart.GetVisualSymbolicExpressionTreeNode(s); 164 150 visualNode.LineColor = myColor; 165 151 // visualNode.FillColor = myColor; 166 152 167 153 foreach (var c in s.Subtrees) { 168 var visualArc = symbolicExpressionTreeChart.GetVisualSymbolicExpressionTreeNodeConnection(s, c);154 var visualArc = SymbolicExpressionTreeChart.GetVisualSymbolicExpressionTreeNodeConnection(s, c); 169 155 visualArc.LineColor = myColor; 170 156 } 171 157 } 172 symbolicExpressionTreeChart.RepaintNodes(); 173 } 174 175 #region events for configuring the behavior of the genealogy chart (trace/match, simple lineages, etc) 176 private void trace_checkBox_CheckedChanged(object sender, System.EventArgs e) { 177 genealogyGraphChart.TraceFragments = trace_checkBox.Checked; 178 } 179 180 private void simpleLineages_checkBox_CheckedChanged(object sender, System.EventArgs e) { 181 genealogyGraphChart.SimpleLineages = simpleLineages_checkBox.Checked; 182 } 183 184 private void lockGraph_checkBox_CheckedChanged(object sender, System.EventArgs e) { 185 genealogyGraphChart.LockGenealogy = lockGraph_checkBox.Checked; 186 } 187 #endregion 188 189 private void hotPaths_button_Click(object sender, System.EventArgs e) { 190 genealogyGraphChart.HighlightHotPaths(); 158 SymbolicExpressionTreeChart.RepaintNodes(); 191 159 } 192 160 } 161 162 public class SymbolicDataAnalysisGenealogyGraphViewDesignable : GenealogyGraphView<ISymbolicExpressionTree> { } 193 163 }
Note: See TracChangeset
for help on using the changeset viewer.