Exemple #1
0
 private void Repopulate()
 {
     if (_inRepopulate)
     {
         return;
     }
     try
     {
         _inRepopulate = true;
         if (!Equals(SelectedGroup, toolStripComboGroup.SelectedItem))
         {
             listView1.Items.Clear();
         }
         toolStripComboGroup.Items.Clear();
         imageList1.Images.Clear();
         var newItems  = new List <ListViewItem>();
         var newGroups = new List <ListViewGroup>();
         if (null != ViewContext)
         {
             imageList1.Images.AddRange(ViewContext.GetImageList());
             toolStripComboGroup.Items.AddRange(ViewContext.ViewGroups.ToArray());
             IEnumerable <ViewGroup> groups;
             if (null != SelectedGroup)
             {
                 groups         = new[] { SelectedGroup };
                 listView1.View = View.List;
             }
             else
             {
                 groups         = ViewContext.ViewGroups;
                 listView1.View = View.SmallIcon;
             }
             foreach (var group in groups)
             {
                 var listViewGroup = new ListViewGroup(group.Id.Name, group.Label)
                 {
                     Tag = group
                 };
                 newGroups.Add(listViewGroup);
                 foreach (var viewSpec in ViewContext.GetViewSpecList(group.Id).ViewSpecs)
                 {
                     bool validRowSource = null != ViewContext.GetViewInfo(new ViewName(group.Id, viewSpec.Name));
                     if (FilterRowSources && !validRowSource)
                     {
                         continue;
                     }
                     var viewName = new ViewName(group.Id, viewSpec.Name);
                     var item     = new ListViewItem(viewSpec.Name, ViewContext.GetImageIndex(viewSpec))
                     {
                         Name    = viewName.ToString(),
                         Group   = listViewGroup,
                         Tag     = viewName,
                         Checked = _checkedItems.Contains(viewName),
                     };
                     if (!validRowSource && GrayDisabledRowSources)
                     {
                         item.ForeColor = SystemColors.GrayText;
                     }
                     newItems.Add(item);
                 }
             }
             toolStripComboGroup.SelectedItem = SelectedGroup;
         }
         ReplaceItems(listView1, newGroups, newItems);
     }
     finally
     {
         _inRepopulate = false;
     }
 }