using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using VEPROMS.CSLA.Library; [assembly: log4net.Config.XmlConfigurator(Watch = true)] namespace WinApp { public partial class frmUser : Form { public frmUser() { InitializeComponent(); } private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); private void BeforeFormClosing(object sender, FormClosingEventArgs e) { e.Cancel = (SaveAsNeeded() == DialogResult.Cancel); } private User _user; private GroupInfoList _gil=GroupInfoList.Get(); private void frmUser_Load(object sender, EventArgs e) { userInfoListBindingSource.DataSource = UserInfoList.Get(); groupInfoListBindingSource.DataSource = _gil; SetupDetail(); SetupButtons(); log.Info("This is a test"); //frmMembership f = new frmMembership(); //f.Show(); //f.TopMost = true; } private DialogResult SaveAsNeeded() { if (_user != null && _user.IsSavable) { DialogResult dr = MessageBox.Show("Do you want to save changes", "Save Changes", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == DialogResult.Yes) Save(); if (dr == DialogResult.No) Cancel(); // TODO: Need a Cancel return dr; } return DialogResult.Yes; } private void SetupDetail() { if (lbUsers.SelectedIndex != -1) { int uid = (int)lbUsers.SelectedValue; if (_user == null || _user.UID != uid) { if (SaveAsNeeded() != DialogResult.Cancel) { _user = User.Get(uid); userBindingSource.DataSource = _user; userMembershipsBindingSource.DataSource = _user.UserMemberships; } } } } private void lbUser_SelectedValueChanged(object sender, EventArgs e) { SetupDetail(); } private void SetupButtons() { if (_user != null) { btnSave.Enabled = _user.IsSavable; btnCancel.Enabled = _user.IsDirty; btnNew.Enabled = _user.IsValid; btnGroups.Enabled = this.userMembershipsDataGridView.SelectedRows.Count > 0; btnNewGA.Enabled = _gil.Count > this.userMembershipsDataGridView.Rows.Count; btnRemoveGA.Enabled = this.userMembershipsDataGridView.SelectedRows.Count > 0; } else { btnSave.Enabled = false; btnCancel.Enabled = false; btnNew.Enabled = true; btnGroups.Enabled = false; btnNewGA.Enabled = false; btnRemoveGA.Enabled = false; } } private void CurrentItemChanged(object sender, EventArgs e) { SetupButtons(); } private void btnCancel_Click(object sender, EventArgs e) { Cancel(); } private void btnSave_Click(object sender, EventArgs e) { Save(); } private void btnNew_Click(object sender, EventArgs e) { New(); } private void Cancel() { _user.CancelEdit(); //if (_user.IsDirty) //{ // foreach (UserMembership m in _user.UserMemberships) // if(m.IsDirty) // m.CancelEdit(); //} _user.BeginEdit(); } private void Save() { userBindingSource.RaiseListChangedEvents = false; userMembershipsBindingSource.RaiseListChangedEvents = false; userBindingSource.EndEdit(); userMembershipsBindingSource.EndEdit(); try { User temp = _user.Clone(); _user = temp.Save(); _user.BeginEdit(); userBindingSource.DataSource = null; userMembershipsBindingSource.DataSource = null; int uid = _user.UID; userInfoListBindingSource.DataSource = UserInfoList.Get(); if (lbUsers.SelectedIndex == -1) lbUsers.SelectedValue = uid; userBindingSource.DataSource = _user; userMembershipsBindingSource.DataSource = _user.UserMemberships; } catch (Csla.DataPortalException ex) { MessageBox.Show(ex.BusinessException.ToString(), "Error saving", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Error saving", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } finally { userBindingSource.RaiseListChangedEvents = true; userMembershipsBindingSource.RaiseListChangedEvents = true; userBindingSource.ResetBindings(false); userMembershipsBindingSource.ResetBindings(false); } SetupButtons(); } public void New() { if (SaveAsNeeded() != DialogResult.Cancel) { _user = User.New(); userBindingSource.DataSource = _user; userMembershipsBindingSource.DataSource = _user.UserMemberships; lbUsers.SelectedIndex = -1; } } private void btnGroups_Click(object sender, EventArgs e) { frmGroups fg = new frmGroups(GetGID()); fg.ShowDialog(); } private void btnNewGA_Click(object sender, EventArgs e) { using (frmGroupSelect f = new frmGroupSelect()) { f.ShowDialog(); if (f.DialogResult == DialogResult.OK) { _user.UserMemberships.Add(Group.Get(f.GID)); // TODO KBR - using SetupButtons(); } } } private int GetGID() { return int.Parse(userMembershipsDataGridView.SelectedRows[0].Cells[0].Value.ToString()); } private void btnRemoveGA_Click(object sender, EventArgs e) { if (this.userMembershipsDataGridView.SelectedRows.Count > 0) { MessageBox.Show("Conversion Error"); //TODO: KBR _user.UserMemberships.Remove(GetGID()); } } private void userMembershipsDataGridView_SelectionChanged(object sender, EventArgs e) { SetupButtons(); } private void btnStack_Click(object sender, EventArgs e) { _user.BeginEdit(); } private void btnPop_Click(object sender, EventArgs e) { _user.CancelEdit(); } } }