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 frmAssignmentSelect : Form { Group _grp; FolderTreeNode _topnode; public frmAssignmentSelect(Group grp) { InitializeComponent(); _grp = grp; this.Text = grp.GroupName + " Assignments"; //_grp.BeginEdit();// Push _topnode = FolderTreeNode.BuildTreeList(); tvFolder.Nodes.Add(_topnode); tvFolder.Nodes[0].Expand(); roleInfoListBindingSource.DataSource = RoleInfoList.Get(); //Initialize cmbRoles if (grp.GroupAssignments.Count > 0) { int rid = grp.GroupAssignments[0].RID; cmbRoles.SelectedValue = rid; SetupFolders(rid); } } private void BeforeFormClosing(object sender, FormClosingEventArgs e) { e.Cancel = (SaveAsNeeded() == DialogResult.Cancel); } private DialogResult SaveAsNeeded() { return DialogResult.Yes; } private void btnOK_Click(object sender, EventArgs e) { // This should save the changes to _grp.GroupAssignments _grp.ApplyEdit(); //Apply } private void btnCancel_Click(object sender, EventArgs e) { // This should throw away any changes to _grp.GroupAssignments _grp.CancelEdit();// Pop } private void btnRoles_Click(object sender, EventArgs e) { // TODO: Maybe should not be able to do this if unsaved data frmRoles fr = new frmRoles(); fr.ShowDialog(); roleInfoListBindingSource.DataSource = RoleInfoList.Get(); } private void tvFolder_BeforeCheck(object sender, TreeViewCancelEventArgs e) { if(!bSetup) { FolderTreeNode ftn = (FolderTreeNode)e.Node; if (!ftn.Checked) { MessageBox.Show("Conversion Error"); //_grp.GroupAssignments.Add(int.Parse(cmbRoles.SelectedValue.ToString()), ftn.FolderInfo.FolderID); } else { MessageBox.Show("Conversion Error"); //TODO: KBR _grp.GroupAssignments.Remove(ftn.FolderInfo.FolderID, int.Parse(cmbRoles.SelectedValue.ToString())); } } } private void cmbRoles_SelectedValueChanged(object sender, EventArgs e) { if (cmbRoles.SelectedIndex >= 0) { int rid = int.Parse(cmbRoles.SelectedValue.ToString()); SetupFolders(rid); } } private bool bSetup = false; private void ResetTree(TreeNodeCollection tc) { foreach(TreeNode tn in tc) { tn.Checked=false; if(tn.Nodes != null)ResetTree(tn.Nodes); } } private void SetupFolders(int rid) { bSetup=true; ResetTree(tvFolder.Nodes); foreach(GroupAssignment ga in _grp.GroupAssignments) { if (ga.RID == rid) _topnode.FindTreeNode(ga.FolderID).Checked = true; } bSetup=false; } } }