Exemplo n.º 1
0
    private TreeNode CreateTreeNode(IOptimizer optimizer) {
      TreeNode node = new TreeNode(optimizer.ToString());
      node.Tag = optimizer;

      var algorithm = optimizer as IAlgorithm;
      if (algorithm != null) {
        foreach (TreeNode childNode in CreateAlgorithmChildNodes(algorithm))
          node.Nodes.Add(childNode);
      }
      var batchRun = optimizer as BatchRun;
      if (batchRun != null) {
        node.Text += string.Format(" {0}/{1}", batchRun.RepetitionsCounter, batchRun.Repetitions);
      }

      List<TreeNode> nodes;
      if (!treeNodeTagMapping.TryGetValue(optimizer, out nodes)) {
        nodes = new List<TreeNode>();
        treeNodeTagMapping.Add(optimizer, nodes);
        RegisterNamedItemEvents(optimizer);
      }
      nodes.Add(node);

      foreach (TreeNode childNode in node.Nodes) {
        INamedItem namedItem = childNode.Tag as INamedItem;
        if (namedItem != null) {
          if (!treeNodeTagMapping.TryGetValue(namedItem, out nodes)) {
            nodes = new List<TreeNode>();
            treeNodeTagMapping.Add(namedItem, nodes);
            RegisterNamedItemEvents(namedItem);
          }
          nodes.Add(childNode);
        }
      }
      return node;
    }