private void OnItemRemoved(object sender, ItemEventArgs <IImageSet> e)
 {
     foreach (IImageSetTreeItem item in _tree.Items)
     {
         if (item is ImageSetTreeItem)
         {
             ImageSetTreeItem treeItem = item as ImageSetTreeItem;
             if (treeItem.ImageSet == e.Item)
             {
                 _tree.Items.Remove(treeItem);
                 OnUpdated();
                 break;
             }
         }
     }
 }
        private void OnItemAdded(object sender, ItemEventArgs <IImageSet> e)
        {
            ImageSetTreeItem newItem = new ImageSetTreeItem(e.Item, this);

            ReadOnlyCollection <ImageSetTreeItem> items = GetItems();
            List <IImageSet> imageSets = CollectionUtils.Map <ImageSetTreeItem, IImageSet>(
                items, delegate(ImageSetTreeItem item) { return(item.ImageSet); });

            imageSets.Add(e.Item);

            if (_imageSetComparer != null)
            {
                imageSets.Sort(_imageSetComparer);
            }

            int insertIndex = imageSets.IndexOf(e.Item);

            if (insertIndex >= 0)
            {
                _tree.Items.Insert(insertIndex, newItem);
                OnUpdated();
            }
        }