Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/12/11 13:43:05 (13 years ago)
Author:
cneumuel
Message:

#1233

  • changed relationship between Job and HiveExperiment. There is no more HiveExperiment.RootJobId, instead there is Job.HiveExperimentId.
  • One HiveExperiment can now have multiple Experiments.
  • TreeView supports multiple root nodes
  • HiveEngine creates a HiveExperiment for each set of jobs, so jobs cannot be without an parent experiment anymore (no more loose jobs)
  • updated ExperimentManager binaries
Location:
branches/HeuristicLab.Hive-3.4/sources
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Hive-3.4/sources

    • Property svn:ignore
      •  

        old new  
        44PrecompiledWeb
        55CreateEventLogSources
         6WindowsFormsTestProject
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/ExperimentManager/ItemTreeView.cs

    r5797 r6006  
    2424using HeuristicLab.Collections;
    2525using HeuristicLab.Common;
     26using HeuristicLab.Core;
    2627using HeuristicLab.Core.Views;
    2728using HeuristicLab.MainForm;
     
    3031namespace HeuristicLab.Clients.Hive.Views {
    3132  [View("ItemTree View")]
    32   [Content(typeof(IItemTree), IsDefaultView = false)]
    33   public sealed partial class ItemTreeView : ItemView {
    34     public new IItemTree Content {
    35       get { return (IItemTree)base.Content; }
     33  [Content(typeof(ItemCollection<>), IsDefaultView = false)]
     34  [Content(typeof(ItemCollection<IItemTree>), IsDefaultView = true)]
     35  public sealed partial class ItemTreeView<T> : ItemView where T : class, IItemTree {
     36    public new ItemCollection<T> Content {
     37      get { return (ItemCollection<T>)base.Content; }
    3638      set { base.Content = value; }
     39    }
     40
     41    public T SelectedItem {
     42      get {
     43        if (treeView.SelectedNode != null)
     44          return (T)treeView.SelectedNode.Tag;
     45        return null;
     46      }
    3747    }
    3848
     
    4252
    4353    protected override void DeregisterContentEvents() {
     54      Content.ItemsAdded -= new CollectionItemsChangedEventHandler<T>(Content_ItemsAdded);
     55      Content.ItemsRemoved -= new CollectionItemsChangedEventHandler<T>(Content_ItemsRemoved);
     56      Content.CollectionReset -= new CollectionItemsChangedEventHandler<T>(Content_CollectionReset);
    4457      foreach (TreeNode node in treeView.Nodes) {
    45         DeregisterContentEvents((IItemTree)node.Tag, node);
     58        DeregisterContentEvents((T)node.Tag, node);
    4659      }
    4760      base.DeregisterContentEvents();
    4861    }
    4962
    50     private void DeregisterContentEvents(IItemTree item, TreeNode node) {
     63    private void DeregisterContentEvents(T item, TreeNode node) {
    5164      item.ItemsAdded -= new CollectionItemsChangedEventHandler<IItemTree>(item_ItemsAdded);
    5265      item.ItemsRemoved -= new CollectionItemsChangedEventHandler<IItemTree>(item_ItemsRemoved);
     
    5568      item.ItemImageChanged -= new EventHandler(item_ItemImageChanged);
    5669      foreach (TreeNode childNode in node.Nodes) {
    57         DeregisterContentEvents((IItemTree)childNode.Tag, childNode);
     70        DeregisterContentEvents((T)childNode.Tag, childNode);
    5871      }
    5972    }
     
    6174    protected override void RegisterContentEvents() {
    6275      base.RegisterContentEvents();
     76      Content.ItemsAdded += new CollectionItemsChangedEventHandler<T>(Content_ItemsAdded);
     77      Content.ItemsRemoved += new CollectionItemsChangedEventHandler<T>(Content_ItemsRemoved);
     78      Content.CollectionReset += new CollectionItemsChangedEventHandler<T>(Content_CollectionReset);
    6379      foreach (TreeNode node in treeView.Nodes) {
    64         RegisterContentEvents((IItemTree)node.Tag, node);
    65       }
    66     }
    67 
    68     private void RegisterContentEvents(IItemTree item, TreeNode node) {
     80        RegisterContentEvents((T)node.Tag, node);
     81      }
     82    }
     83
     84    private void RegisterContentEvents(T item, TreeNode node) {
    6985      item.ItemsAdded += new CollectionItemsChangedEventHandler<IItemTree>(item_ItemsAdded);
    7086      item.ItemsRemoved += new CollectionItemsChangedEventHandler<IItemTree>(item_ItemsRemoved);
     
    7389      item.ItemImageChanged += new EventHandler(item_ItemImageChanged);
    7490      foreach (TreeNode childNode in node.Nodes) {
    75         RegisterContentEvents((IItemTree)childNode.Tag, childNode);
     91        RegisterContentEvents((T)childNode.Tag, childNode);
    7692      }
    7793    }
    7894
    7995    #region Event Handlers (Content)
     96    private void Content_ItemsAdded(object sender, CollectionItemsChangedEventArgs<T> e) {
     97      if (InvokeRequired) {
     98        Invoke(new CollectionItemsChangedEventHandler<T>(Content_ItemsAdded), sender, e);
     99      } else {
     100        foreach (T item in e.Items) {
     101          var node = AddChildNodes(item, treeView.Nodes, true);
     102          UpdateNodeItemImage(node);
     103        }
     104      }
     105    }
     106    private void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<T> e) {
     107      if (InvokeRequired) {
     108        Invoke(new CollectionItemsChangedEventHandler<T>(Content_ItemsRemoved), sender, e);
     109      } else {
     110        foreach (T item in e.Items) {
     111          RemoveChildNodes(item, treeView.Nodes);
     112        }
     113        RebuildImageList();
     114      }
     115    }
     116    private void Content_CollectionReset(object sender, CollectionItemsChangedEventArgs<T> e) {
     117      if (InvokeRequired) {
     118        Invoke(new CollectionItemsChangedEventHandler<T>(Content_CollectionReset), sender, e);
     119      } else {
     120        foreach (T item in e.OldItems) {
     121          RemoveChildNodes(item, treeView.Nodes);
     122        }
     123        RebuildImageList();
     124        foreach (T item in e.Items) {
     125          AddChildNodes(item, treeView.Nodes, true);
     126        }
     127      }
     128    }
     129
    80130    private void item_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IItemTree> e) {
    81131      if (InvokeRequired) {
    82132        Invoke(new CollectionItemsChangedEventHandler<IItemTree>(item_ItemsAdded), sender, e);
    83133      } else {
    84         TreeNode node = GetNodeByItem(sender as IItemTree);
     134        TreeNode node = GetNodeByItem(sender as T);
    85135        if (node != null) {
    86           foreach (IItemTree item in e.Items) {
     136          foreach (T item in e.Items) {
    87137            AddChildNodes(item, node.Nodes, true);
    88138            node.ExpandAll();
     
    97147        Invoke(new CollectionItemsChangedEventHandler<IItemTree>(item_ItemsRemoved), sender, e);
    98148      } else {
    99         TreeNode node = GetNodeByItem(sender as IItemTree);
     149        TreeNode node = GetNodeByItem(sender as T);
    100150        if (node != null) {
    101           foreach (IItemTree item in e.Items) {
     151          foreach (T item in e.Items) {
    102152            RemoveChildNodes(item, node.Nodes);
    103153          }
     
    111161        Invoke(new CollectionItemsChangedEventHandler<IItemTree>(item_CollectionReset), sender, e);
    112162      } else {
    113         TreeNode node = GetNodeByItem(sender as IItemTree);
     163        TreeNode node = GetNodeByItem(sender as T);
    114164        if (node != null) {
    115           foreach (IItemTree item in e.OldItems) {
     165          foreach (T item in e.OldItems) {
    116166            RemoveChildNodes(item, node.Nodes);
    117167          }
    118168          RebuildImageList();
    119           foreach (IItemTree item in e.Items) {
     169          foreach (T item in e.Items) {
    120170            AddChildNodes(item, node.Nodes, true);
    121171          }
     
    128178        Invoke(new EventHandler(item_ToStringChanged), sender, e);
    129179      } else {
    130         var item = sender as IItemTree;
     180        var item = sender as T;
    131181        TreeNode node = GetNodeByItem(item);
    132182        if(node != null)
     
    139189        Invoke(new EventHandler(item_ItemImageChanged), sender, e);
    140190      } else {
    141         var item = sender as IItemTree;
     191        var item = sender as T;
    142192        TreeNode node = GetNodeByItem(item);
    143193        if(node != null)
     
    151201      } else {
    152202        if (treeView.SelectedNode != null) {
    153           var item = treeView.SelectedNode.Tag as IItemTree;
     203          var item = treeView.SelectedNode.Tag as T;
    154204          if (item != null) {
    155205            IContentView view = MainFormManager.MainForm.ShowContent(item);
     
    167217      base.OnContentChanged();
    168218      if (Content == null) {
    169         // Add code when content has been changed and is null
    170219        ClearNodes();
    171220        detailsViewHost.Content = null;
    172221      } else {
    173         // Add code when content has been changed and is not null
    174222        ClearNodes();
    175         AddChildNodes(Content, treeView.Nodes, false);
     223        foreach (T itemTree in Content) {
     224          AddChildNodes(itemTree, treeView.Nodes, false);
     225        }
    176226        foreach (TreeNode node in treeView.Nodes) {
    177227          UpdateNodeItemImage(node);
    178228        }
     229        detailsViewHost.Content = null;
    179230      }
    180231    }
     
    184235    }
    185236
    186     private void AddChildNodes(IItemTree item, TreeNodeCollection nodes, bool registerEvents) {
     237    private TreeNode AddChildNodes(T item, TreeNodeCollection nodes, bool registerEvents) {
    187238      TreeNode node = CreateTreeViewNode(item);
    188239      nodes.Add(node);
     
    190241      RegisterContentEvents(item, node);
    191242      var childItems = item.GetChildItems();
    192       foreach (var childItem in childItems) {
     243      foreach (T childItem in childItems) {
    193244        AddChildNodes(childItem, node.Nodes, registerEvents);
    194245      }
    195246      node.ExpandAll();
    196     }
    197 
    198     private void RemoveChildNodes(IItemTree item, TreeNodeCollection treeNodeCollection) {
     247      return node;
     248    }
     249
     250    private void RemoveChildNodes(T item, TreeNodeCollection treeNodeCollection) {
    199251      int idx = -1;
    200252      for (int i = 0; i < treeNodeCollection.Count; i++) {
     
    207259    }
    208260   
    209     private TreeNode GetNodeByItem(IItemTree item) {
     261    private TreeNode GetNodeByItem(T item) {
    210262      TreeNode found = null;
    211263      foreach (TreeNode node in treeView.Nodes) {
     
    217269    }
    218270
    219     private TreeNode GetNodeByItem(TreeNode node, IItemTree item) {
     271    private TreeNode GetNodeByItem(TreeNode node, T item) {
    220272      if (node.Tag == item)
    221273        return node;
     
    229281    }
    230282
    231     private TreeNode CreateTreeViewNode(IItemTree item) {
     283    private TreeNode CreateTreeViewNode(T item) {
    232284      var node = new TreeNode(item.ToString());
    233285      node.Tag = item;
     
    237289    private void UpdateNodeItemImage(TreeNode node) {
    238290      if (node == null) throw new ArgumentNullException();
    239       var item = node.Tag as IItemTree;
     291      var item = node.Tag as T;
    240292      int i = node.ImageIndex;
    241293      this.imageList.Images[i] = item == null ? HeuristicLab.Common.Resources.VSImageLibrary.Nothing : item.ItemImage;
     
    268320
    269321    private void RebuildImageList(TreeNode node) {
    270       var item = node.Tag as IItemTree;
     322      var item = node.Tag as T;
    271323      treeView.ImageList.Images.Add(item == null ? HeuristicLab.Common.Resources.VSImageLibrary.Nothing : item.ItemImage);
    272324      node.ImageIndex = treeView.ImageList.Images.Count - 1;
Note: See TracChangeset for help on using the changeset viewer.