/// <summary>
 /// Updates the list of configuration targets included/excluded in a set
 /// </summary>
 private void UpdateSetTargets()
 {
     lvTargetsInSet.Items.Clear();
     lvTargetsNotInSet.Items.Clear();
     if (lvSets.SelectedItems.Count > 0)
     {
         int curSetID = (int)lvSets.SelectedItems[0].Tag;
         ConfigDS.SetTargetsDataTable targets = new ConfigDS.SetTargetsDataTable();
         // list targets included current set
         setTargetsTA.FillTargetsInSet(targets, curSetID);
         lvTargetsInSet.BeginUpdate();
         try
         {
             foreach (var item in targets)
             {
                 ListViewItem lvi = new ListViewItem(new string[] { item.TargetGroup, item.TargetName });
                 lvi.Tag = item.ConfigTargetID;
                 lvTargetsInSet.Items.Add(lvi);
             }
         }
         finally
         {
             lvTargetsInSet.EndUpdate();
             lvTargetsInSet.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
             lvTargetsInSet.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
         }
         if (lvTargetsInSet.Items.Count > 0)
         {
             lvTargetsInSet.Items[0].Selected = true;
         }
         // list targets not in set, but matchin the specified group filter
         setTargetsTA.FillTargetsNotInSet(targets, curSetID);
         lvTargetsNotInSet.BeginUpdate();
         try
         {
             foreach (var item in targets)
             {
                 if (item.TargetGroup == cbxTargetGroupFilter.Text)
                 {
                     ListViewItem lvi = lvTargetsNotInSet.Items.Add(item.TargetName);
                     lvi.Tag = item.ConfigTargetID;
                 }
             }
         }
         finally
         {
             lvTargetsNotInSet.EndUpdate();
             lvTargetsNotInSet.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
             lvTargetsNotInSet.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
         }
         if (lvTargetsNotInSet.Items.Count > 0)
         {
             lvTargetsNotInSet.Items[0].Selected = true;
         }
     }
     RefreshTargetList();
 }
 /// <summary>
 /// Refreshes the selectable configuration target list depending on the selected configuration set
 /// </summary>
 private void RefreshTargetList()
 {
     if (cbxConfigSets.SelectedItem != null)
     {
         ConfigDS.SetTargetsDataTable setTargets = new ConfigDS.SetTargetsDataTable();
         int selSetID = ((ConfigDS.ConfigSetsRow)cbxConfigSets.SelectedItem).ConfigSetID;
         setTargetsTA.FillTargetsInSet(setTargets, selSetID);
         cbxConfigSetTargets.DataSource = setTargets.ToList();
         ShowConfiguration();
     }
 }