private void btnAddSite_Click(object sender, EventArgs e)
 {
     CreateEditSite frm = new CreateEditSite();
     frm.Text = "Create new Site";
     SiteSettings site = new SiteSettings();
     site.Name = "New";
     site.UtilName = "GenericSite";
     site.IsEnabled = true;
     frm.SiteSettingsBindingSource.DataSource = site;
     if (frm.ShowDialog() == DialogResult.OK)
     {
         bindingSourceSiteSettings.Position = bindingSourceSiteSettings.Add(site);
     }
 }
        private void btnEditSite_Click(object sender, EventArgs e)
        {
            SiteSettings siteSettings = (SiteSettings)bindingSourceSiteSettings.Current;

            // use a copy of the original settings so anything that is changed can be canceled
            SerializableSettings s = new SerializableSettings() { Sites = new BindingList<SiteSettings>() };
            s.Sites.Add(siteSettings);
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            s.Serialize(ms);
            ms.Position = 0;
            SiteSettings copiedSiteSettings = SerializableSettings.Deserialize(new StreamReader(ms))[0];

            CreateEditSite frm = new CreateEditSite();
            frm.Text = "Edit " + siteSettings.Name;
            frm.SiteSettingsBindingSource.DataSource = copiedSiteSettings;
            if (frm.ShowDialog() == DialogResult.OK)
            {
                // make sure the configuration is clean and for the cosen util
                copiedSiteSettings.AddConfigurationValues(frm.SiteUtil);
                // replace original settings object with the new one
                int index = bindingSourceSiteSettings.IndexOf(siteSettings);
                bindingSourceSiteSettings.RemoveCurrent();
                bindingSourceSiteSettings.Insert(index, copiedSiteSettings);
                bindingSourceSiteSettings.Position = index;
            }
        }