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; namespace WinApp { public partial class frmGroups : Form { public frmGroups(int gid) { InitializeComponent(); _gid = gid; } private int _gid; private Group _group; private void frmGroup_Load(object sender, EventArgs e) { groupInfoListBindingSource.DataSource = GroupInfoList.Get(); userInfoListBindingSource.DataSource = UserInfoList.Get(); lbGroups.SelectedValue = _gid; SetupDetail(); SetupButtons(); } private void BeforeFormClosing(object sender, FormClosingEventArgs e) { e.Cancel = (SaveAsNeeded() == DialogResult.Cancel); } private DialogResult SaveAsNeeded() { if (_group != null && _group.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 (lbGroups.SelectedValue != null) { int gid = (int)lbGroups.SelectedValue; if (_group == null || _group.GID != gid) { if (SaveAsNeeded() != DialogResult.Cancel) { _group = Group.Get(gid); groupBindingSource.DataSource = _group; groupMembershipsBindingSource.DataSource = _group.GroupMemberships; groupAssignmentsBindingSource.DataSource = _group.GroupAssignments; } } } } private void lbGroup_SelectedValueChanged(object sender, EventArgs e) { SetupDetail(); } private void SetupButtons() { if (_group != null) { btnSave.Enabled = _group.IsSavable; btnCancel.Enabled = _group.IsDirty; btnNew.Enabled = _group.IsValid; } else { btnSave.Enabled = false; btnCancel.Enabled = false; btnNew.Enabled = true; } } 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() { _group.CancelEdit(); _group.BeginEdit(); } private void Save() { groupBindingSource.RaiseListChangedEvents = false; groupMembershipsBindingSource.RaiseListChangedEvents = false; groupBindingSource.EndEdit(); groupMembershipsBindingSource.EndEdit(); try { Group temp = _group.Clone(); _group = temp.Save(); _group.BeginEdit(); groupBindingSource.DataSource = null; groupMembershipsBindingSource.DataSource = null; int gid = _group.GID; groupInfoListBindingSource.DataSource = GroupInfoList.Get(); lbGroups.SelectedValue = gid; groupBindingSource.DataSource = _group; groupMembershipsBindingSource.DataSource = _group.GroupMemberships; } 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 { groupBindingSource.RaiseListChangedEvents = true; groupMembershipsBindingSource.RaiseListChangedEvents = true; groupBindingSource.ResetBindings(false); groupMembershipsBindingSource.ResetBindings(false); } SetupButtons(); } public void New() { if (SaveAsNeeded() != DialogResult.Cancel) { _group = Group.New(); groupBindingSource.DataSource = _group; groupMembershipsBindingSource.DataSource = _group.GroupMemberships; } } private void btnNewGA_Click(object sender, EventArgs e) { using (frmUserSelect f = new frmUserSelect()) { f.ShowDialog(); if (f.DialogResult == DialogResult.OK) { _group.GroupMemberships.Add(User.Get(f.UID)); // KBR using? SetupButtons(); } } } private void btnRemoveGA_Click(object sender, EventArgs e) { if (this.groupMembershipsDataGridView.SelectedRows.Count > 0) { int uid = int.Parse( this.groupMembershipsDataGridView.SelectedRows[0].Cells[0].Value.ToString()); MessageBox.Show("Conversion error"); //TODO KBR: _group.GroupMemberships.Remove(uid); } } private void btnRemoveAssign_Click(object sender, EventArgs e) { if (this.groupAssignmentsDataGridView.SelectedRows.Count > 0) { int rid = int.Parse( this.groupAssignmentsDataGridView.SelectedRows[0].Cells[1].Value.ToString()); int folderid = int.Parse( this.groupAssignmentsDataGridView.SelectedRows[0].Cells[2].Value.ToString()); MessageBox.Show("Conversion error"); //TODO KBR: _group.GroupAssignments.Remove(folderid, rid); } } private void btnNewAssign_Click(object sender, EventArgs e) { using (frmAssignmentSelect f = new frmAssignmentSelect(_group)) { f.ShowDialog(); if (f.DialogResult == DialogResult.OK) { //TODO: Do I need to refresh Assignments? } } } } }