Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/02/13 13:21:35 (11 years ago)
Author:
bburlacu
Message:

#1772: Improved the LineageExplorerView, added generation labels in the GenealogyGraphChart, added new visual component VisualGenealogyGraphTextLabel.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.EvolutionaryTracking.Views/3.4/GenealogyGraphView.cs

    r9250 r9420  
    5252      this.zoomModeButton.Image = Common.Resources.VSImageLibrary.Zoom;
    5353      this.selectModeButton.Image = Common.Resources.VSImageLibrary.Object;
     54      this.highlightAllButton.Image = Common.Resources.VSImageLibrary.Gradient;
     55      this.simpleLineagesCheckBox.Image = Common.Resources.VSImageLibrary.ArrowDown;
     56      this.lockGenealogyCheckBox.Image = Common.Resources.VSImageLibrary.ProtectForm;
     57
    5458      comparer = new SymbolicExpressionTreeNodeSimilarityComparer {
    5559        MatchConstantValues = true,
     
    6367      genealogyGraphChart.GenealogyGraphNodeClicked -= graphChart_GenealogyGraphNodeClicked;
    6468      symbolicExpressionTreeChart.SymbolicExpressionTreeNodeClicked -= treeChart_SymbolicExpressionTreeNodeClicked;
     69      symbolicExpressionTreeChart.SymbolicExpressionTreeNodeDoubleClicked -= treeChart_SymbolicExpressionTreeNodeDoubleClicked;
     70      Content.GraphUpdated -= genealogyGraphUpdated;
    6571      base.DeregisterContentEvents();
    6672    }
     
    7278      symbolicExpressionTreeChart.SymbolicExpressionTreeNodeClicked += treeChart_SymbolicExpressionTreeNodeClicked;
    7379      symbolicExpressionTreeChart.SymbolicExpressionTreeNodeDoubleClicked += treeChart_SymbolicExpressionTreeNodeDoubleClicked;
     80      Content.GraphUpdated += genealogyGraphUpdated;
    7481    }
    7582
     
    8289      else {
    8390        genealogyGraphChart.Graph = Content;
    84         var best = Content.Nodes.OrderByDescending(x => x.Quality).First();
    85         symbolicExpressionTreeChart.Tree = best.SymbolicExpressionTree;
     91        //        var best = Content.Nodes.OrderByDescending(x => x.Quality).First();
     92        //        symbolicExpressionTreeChart.Tree = best.SymbolicExpressionTree;
    8693      }
    8794    }
     
    105112      symbolicExpressionTreeChart.Tree = genealogyGraphNode.SymbolicExpressionTree;
    106113      if (genealogyGraphNode.InEdges == null) return;
    107       var arc = genealogyGraphNode.InEdges.First(x => x.Source != x.Target);
     114      var arc = genealogyGraphNode.InEdges.Last(x => x.Source != x.Target);
    108115      if (arc == null || arc.Data == null) return;
    109116      var fragment = (IFragment)arc.Data;
     
    113120        visualSymbExprTreeNode.LineColor = Color.OrangeRed;
    114121      }
    115       symbolicExpressionTreeChart.Repaint(); // pain orange nodes
     122      symbolicExpressionTreeChart.Repaint();
    116123    }
    117124
     
    129136      var btn = (RadioButton)sender;
    130137      if (btn.Checked) { genealogyGraphChart.Chart.Mode = ChartMode.Select; }
     138    }
     139
     140    private void genealogyGraphUpdated(object sender, EventArgs args) {
     141      genealogyGraphChart.Graph = Content;
    131142    }
    132143
     
    159170              var selectedClone = clonedNodes[selectedNode];
    160171              var parent = selectedClone.Parent;
     172              if (parent == null) break;
     173              int index = parent.IndexOfSubtree(selectedClone);
     174              if (index == -1) break;
    161175              parent.RemoveSubtree(parent.IndexOfSubtree(selectedClone));
    162176              foreach (var node in selectedNode.IterateNodesPrefix()) {
     
    179193      var fragment = new Fragment(clonedNodes[selectedVisualSymbExprTreeNode.SymbolicExpressionTreeNode]);
    180194      var fragmentLength = fragment.Length;
     195      // highlight nodes
    181196      genealogyGraphChart.HighlightNodes(from node in genealogyGraphChart.Graph.Nodes
    182197                                         let tree = node.SymbolicExpressionTree
    183198                                         where tree.Length >= fragmentLength
    184199                                         where tree.Root.ContainsFragment(fragment, comparer)
    185                                          select tree, Color.DodgerBlue);
     200                                         select tree);
     201      // highlight edges that contain a matching fragment
     202      var fragmentSimilarityComparer = new SymbolicExpressionTreeFragmentSimilarityComparer {
     203        SimilarityComparer = comparer
     204      };
     205      var matchingEdges = genealogyGraphChart.Graph.Nodes.Where(n => n.InEdges != null)
     206                           .SelectMany(n => n.InEdges).Where(edge => edge.Data != null && ((IFragment)edge.Data).Root != null)
     207                           .Where(edge => fragmentSimilarityComparer.Equals(fragment, (IFragment)edge.Data));
     208      genealogyGraphChart.HighlightArcs(matchingEdges, Color.DodgerBlue);
     209
     210
    186211      genealogyGraphChart.Chart.UpdateEnabled = true;
    187212      genealogyGraphChart.Chart.EnforceUpdate();
     
    191216    }
    192217    #endregion
     218
    193219    private void matchConstantsCheckBox_CheckedChanged(object sender, EventArgs e) {
    194220      comparer.MatchConstantValues = matchConstantsCheckBox.Checked;
     
    208234        MatchNodesAndRepaint();
    209235    }
     236
     237    private void simpleLineagesCheckBox_CheckedChanged(object sender, EventArgs e) {
     238      genealogyGraphChart.SimpleLineages = simpleLineagesCheckBox.Checked;
     239    }
     240
     241    private void highlightAllButton_Click(object sender, EventArgs e) {
     242      symbolicExpressionTreeChart.Repaint();
     243      genealogyGraphChart.HighlightAll();
     244    }
     245
     246    private void lockGenealogyCheckBox_CheckedChanged(object sender, EventArgs e) {
     247      genealogyGraphChart.LockGenealogy = lockGenealogyCheckBox.Checked;
     248    }
    210249  }
    211250}
Note: See TracChangeset for help on using the changeset viewer.