509 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			509 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
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;
 | 
						|
using Volian.Base.Library;
 | 
						|
 | 
						|
 | 
						|
namespace VEPROMS
 | 
						|
{
 | 
						|
	public partial class dlgManageSecurity : Form
 | 
						|
	{
 | 
						|
		#region Log4Net
 | 
						|
		private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
 | 
						|
		#endregion
 | 
						|
		private GroupInfoList myGroupInfoList;
 | 
						|
		private UserInfoList myUserInfoList;
 | 
						|
		private List<MembershipInfo> myMembershipInfoList;
 | 
						|
		private Folder myFolder;
 | 
						|
		public dlgManageSecurity()
 | 
						|
		{
 | 
						|
			InitializeComponent();
 | 
						|
		}
 | 
						|
		private void dlgManageSecurity_Load(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			myFolder = Folder.Get(1);
 | 
						|
			SetupSecurity();
 | 
						|
			SetupGroups();
 | 
						|
		}
 | 
						|
		private void SetupGroups()
 | 
						|
		{
 | 
						|
			pnlGroups.Controls.Clear();
 | 
						|
			foreach (GroupInfo gi in myGroupInfoList)
 | 
						|
			{
 | 
						|
				RadioButton rb = new RadioButton();
 | 
						|
				rb.Text = gi.GroupName;
 | 
						|
				rb.Parent = pnlGroups;
 | 
						|
				rb.Dock = DockStyle.Top;
 | 
						|
				rb.Tag = gi;
 | 
						|
				rb.CheckedChanged -= new EventHandler(rb_CheckedChanged);
 | 
						|
				rb.CheckedChanged += new EventHandler(rb_CheckedChanged);
 | 
						|
				pnlGroups.Controls.Add(rb);
 | 
						|
				rb.BringToFront();
 | 
						|
				if (myFolder.FolderConfig.Security_Group == 0 && gi.GID == 1)
 | 
						|
				{
 | 
						|
					myFolder.FolderConfig.Security_Group = gi.GID;
 | 
						|
					rb.Checked = true;
 | 
						|
					myFolder.Save();
 | 
						|
				}
 | 
						|
				else if (myFolder.FolderConfig.Security_Group == gi.GID)
 | 
						|
				{
 | 
						|
					rb.Checked = true;
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void rb_CheckedChanged(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			RadioButton rb = sender as RadioButton;
 | 
						|
			GroupInfo gi = rb.Tag as GroupInfo;
 | 
						|
			label8.Text = gi.GroupAssignments[0].MyRole.Title + " for " + gi.GroupAssignments[0].MyFolder.Name;
 | 
						|
			myFolder.FolderConfig.Security_Group = gi.GID;
 | 
						|
			myFolder.Save();
 | 
						|
		}
 | 
						|
		private void SetupSecurity()
 | 
						|
		{
 | 
						|
			if (tvFolders.Nodes.Count == 0)
 | 
						|
			{
 | 
						|
				FolderInfo fi = FolderInfo.Get(1);
 | 
						|
				LoadChildFolders(fi, null);
 | 
						|
			}
 | 
						|
			lstMembers.Items.Clear();
 | 
						|
			lstUsers.Items.Clear();
 | 
						|
			lstGroups.Items.Clear();
 | 
						|
			GroupInfoList.Reset();
 | 
						|
			UserInfoList.Reset();
 | 
						|
			myGroupInfoList = GroupInfoList.Get();
 | 
						|
			myUserInfoList = UserInfoList.Get();
 | 
						|
			foreach (GroupInfo gi in myGroupInfoList)
 | 
						|
				lstGroups.Items.Add(gi.GroupName);
 | 
						|
			lstGroups.SelectedIndex = 0;
 | 
						|
			foreach (UserInfo ui in myUserInfoList)
 | 
						|
				lstUsers.Items.Add(ui.UserID);
 | 
						|
			lstGroups.SelectedIndex = -1;
 | 
						|
			lstUsers.SelectedIndex = -1;
 | 
						|
		}
 | 
						|
		private void LoadChildFolders(FolderInfo fi, TreeNode tn)
 | 
						|
		{
 | 
						|
			if (tn == null)
 | 
						|
			{
 | 
						|
				tn = tvFolders.Nodes.Add(fi.Name);
 | 
						|
				tn.Tag = fi;
 | 
						|
			}
 | 
						|
			else
 | 
						|
			{
 | 
						|
				tn = tn.Nodes.Add(fi.Name);
 | 
						|
				tn.Tag = fi;
 | 
						|
			}
 | 
						|
			if (fi.ChildFolderCount > 0)
 | 
						|
			{
 | 
						|
				foreach (FolderInfo fic in fi.SortedChildFolders)
 | 
						|
				{
 | 
						|
					LoadChildFolders(fic, tn);
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void lstGroups_SelectedIndexChanged(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			lblMembers.Text = "Selected Group Users";
 | 
						|
			myMembershipInfoList = new List<MembershipInfo>();
 | 
						|
			lstMembers.Items.Clear();
 | 
						|
			if (lstGroups.SelectedIndex > -1)
 | 
						|
			{
 | 
						|
				GroupInfo gi = myGroupInfoList[lstGroups.SelectedIndex];
 | 
						|
				if (gi.GroupMembershipCount > 0)
 | 
						|
					foreach (MembershipInfo mi in gi.GroupMemberships)
 | 
						|
					{
 | 
						|
						if (mi.EndDate == null || mi.EndDate == string.Empty)
 | 
						|
						{
 | 
						|
							myMembershipInfoList.Add(mi);
 | 
						|
							lstMembers.Items.Add(mi.MyUser.UserID);
 | 
						|
						}
 | 
						|
					}
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void addMemberToolStripMenuItem_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			int groupIndex = lstGroups.SelectedIndex;
 | 
						|
			int userIndex = lstUsers.SelectedIndex;
 | 
						|
			GroupInfo gi = myGroupInfoList[groupIndex];
 | 
						|
			UserInfo ui = myUserInfoList[userIndex];
 | 
						|
			Membership.MakeMembership(User.Get(ui.UID), Group.Get(gi.GID), null, "");
 | 
						|
			SetupSecurity();
 | 
						|
			if ((sender as ToolStripMenuItem).Name.EndsWith("Group"))
 | 
						|
			{
 | 
						|
				lstUsers.SelectedIndex = userIndex;
 | 
						|
				lstGroups.SelectedIndex = groupIndex;
 | 
						|
			}
 | 
						|
			else
 | 
						|
			{
 | 
						|
				lstGroups.SelectedIndex = groupIndex;
 | 
						|
				lstUsers.SelectedIndex = userIndex;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void removeMemberToolStripMenuItem_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			MembershipInfo mi = myMembershipInfoList[lstMembers.SelectedIndex];
 | 
						|
			string msg = "Are you sure you want to remove this Group Member?";
 | 
						|
			if (MessageBox.Show(this, msg, "Confirm Group Member Removal", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
 | 
						|
			{
 | 
						|
				int groupIndex = lstGroups.SelectedIndex;
 | 
						|
				int userIndex = lstUsers.SelectedIndex;
 | 
						|
				if (mi.MyGroup.GroupName == "Administrators")
 | 
						|
				{
 | 
						|
					int k = 0;
 | 
						|
					foreach(MembershipInfo mm in mi.MyGroup.GroupMemberships)
 | 
						|
						if(mm.EndDate == null || mm.EndDate == string.Empty)
 | 
						|
							k++;
 | 
						|
					if (k == 1)
 | 
						|
					{
 | 
						|
						MessageBox.Show("You must have at least 1 user assigned to the Adminstrators group", "One Administrator Required", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | 
						|
						return;
 | 
						|
					}
 | 
						|
				}
 | 
						|
				Membership m = Membership.Get(mi.UGID);
 | 
						|
				m.EndDate = DateTime.Now.ToShortDateString();
 | 
						|
				m.Save();
 | 
						|
				SetupSecurity();
 | 
						|
				lstGroups.SelectedIndex = groupIndex;
 | 
						|
				lstUsers.SelectedIndex = userIndex;
 | 
						|
			}
 | 
						|
			//  foreach (int gg in lstGroups.SelectedIndices)
 | 
						|
			//  {
 | 
						|
			//    GroupInfo gi = myGroupInfoList[gg];
 | 
						|
			//    if (gi.GroupName == "Administrators" && gi.GroupMembershipCount == 1)
 | 
						|
			//    {
 | 
						|
			//      MessageBox.Show("You must have at least 1 user assigned to the Adminstrators group", "Can Not Delete User", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | 
						|
			//      return;
 | 
						|
			//    }
 | 
						|
			//    foreach (MembershipInfo mi in gi.GroupMemberships)
 | 
						|
			//    {
 | 
						|
			//      foreach (int mm in lstGroupUsers.SelectedIndices)
 | 
						|
			//      {
 | 
						|
			//        MembershipInfo mig = myMembershipInfoList[mm];
 | 
						|
			//        if (mi.MyUser.UID == mig.MyUser.UID)
 | 
						|
			//        {
 | 
						|
			//          Membership m = Membership.Get(mi.UGID);
 | 
						|
			//          m.EndDate = DateTime.Now.ToShortDateString();
 | 
						|
			//          m.Save();
 | 
						|
			//        }
 | 
						|
			//      }
 | 
						|
			//    }
 | 
						|
			//  }
 | 
						|
			//  SetupSecurity();
 | 
						|
			//}
 | 
						|
		}
 | 
						|
		private void addUserToolStripMenuItem_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			User u = User.MakeUser("[Enter New UserID]","", "", "", "", "", "", "", "", "", "",DateTime.Now,"");
 | 
						|
			frmManageUser frm = new frmManageUser("add");
 | 
						|
			frm.MyUser = u;
 | 
						|
			if (frm.ShowDialog(this) == DialogResult.OK)
 | 
						|
			{
 | 
						|
				u = frm.MyUser;
 | 
						|
				u.Save();
 | 
						|
				Membership.MakeMembership(u, Group.Get(myFolder.FolderConfig.Security_Group), "", "");
 | 
						|
				SetupSecurity();
 | 
						|
			}
 | 
						|
			else
 | 
						|
			{
 | 
						|
				u.Delete();
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void editUserToolStripMenuItem_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			if (lstUsers.SelectedIndex == -1)
 | 
						|
			{
 | 
						|
				MessageBox.Show("You must select a user to edit", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | 
						|
				return;
 | 
						|
			}
 | 
						|
			UserInfo ui = myUserInfoList[lstUsers.SelectedIndex];
 | 
						|
			using (User u = User.Get(ui.UID))
 | 
						|
			{
 | 
						|
				frmManageUser frm = new frmManageUser("edit");
 | 
						|
				frm.MyUser = u;
 | 
						|
				if (frm.ShowDialog(this) == DialogResult.OK)
 | 
						|
				{
 | 
						|
					frm.MyUser.Save();
 | 
						|
          SetupSecurity();
 | 
						|
        }
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void deleteUserToolStripMenuItem_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			if (lstUsers.SelectedIndex == -1)
 | 
						|
			{
 | 
						|
				MessageBox.Show("You must select a user to delete", "No User Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | 
						|
				return;
 | 
						|
			}
 | 
						|
			UserInfo ui = myUserInfoList[lstUsers.SelectedIndex];
 | 
						|
			SessionInfoList sil = SessionInfoList.Get();
 | 
						|
			foreach (SessionInfo si in sil)
 | 
						|
			{
 | 
						|
				if (si.UserID == ui.UserID && (si.DTSEnd == null))
 | 
						|
				{
 | 
						|
					MessageBox.Show("The user selected has an active session.  You may not delete the user at this time.", "User Active Session", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | 
						|
					return;
 | 
						|
				}
 | 
						|
			}
 | 
						|
			int k = 0;
 | 
						|
			if (ui.UserMembershipCount > 0)
 | 
						|
			{
 | 
						|
				foreach (MembershipInfo mi in ui.UserMemberships)
 | 
						|
				{
 | 
						|
					if (mi.EndDate == null || mi.EndDate == string.Empty)
 | 
						|
						k++;
 | 
						|
				}
 | 
						|
			}
 | 
						|
			if (k > 0)
 | 
						|
			{
 | 
						|
				MessageBox.Show("You must remove user from all groups that user is a member of in order to delete user", "User Has Memberships", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | 
						|
				return;
 | 
						|
			}
 | 
						|
			if (MessageBox.Show("Are you sure you want to delete this user?", "Confirm Deleting User", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
 | 
						|
			{
 | 
						|
				User.Delete(ui.UID);
 | 
						|
				SetupSecurity();
 | 
						|
			}
 | 
						|
			//to do delete user
 | 
						|
			//end date user memberships
 | 
						|
			//delete user
 | 
						|
		}
 | 
						|
		private void createGroupMenuItem(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			try
 | 
						|
			{
 | 
						|
				ToolStripDropDownItem tsddi = sender as ToolStripDropDownItem;
 | 
						|
				TreeNode tn = tvFolders.SelectedNode;
 | 
						|
				FolderInfo fi = tn.Tag as FolderInfo;
 | 
						|
				AddNewGroup(tsddi.Text, fi);
 | 
						|
				SetupSecurity();
 | 
						|
			}
 | 
						|
			catch (Exception ex)
 | 
						|
			{
 | 
						|
				_MyLog.Warn("createGroupMenuItem", ex);
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void AddNewGroup(string txt, FolderInfo fi)
 | 
						|
		{
 | 
						|
			txt = txt.Replace("Create", "").Replace(" a ", "").Replace("Group", "").Trim();
 | 
						|
			RoleInfoList ril = RoleInfoList.Get();
 | 
						|
			// B2022-080: cannot add a new group in Proms security.  if the sql database's 'Roles' table was not initialized with the default roles, such as Set Administrator,
 | 
						|
			//   Writer, Reviewer, RO Editor, the Adding of new groups won't work.  Databases should have this loaded by default.
 | 
						|
			//   Promsfixes has queries that insert these, but only gets run if there are no assignments (see commands under --define Roles)
 | 
						|
			if (ril == null || ril.Count < 2)
 | 
						|
			{
 | 
						|
				MessageBox.Show("Roles table is missing entries.\r\nPlease contact Volian to create other groups.", "Cannot create groups", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | 
						|
				return;
 | 
						|
			}
 | 
						|
			foreach(RoleInfo ri in ril)
 | 
						|
			{
 | 
						|
				if (ri.Name == txt)
 | 
						|
				{
 | 
						|
					string gin = string.Format("{0}s - {1}", ri.Name, fi.Name);
 | 
						|
					bool addOK = true;
 | 
						|
					foreach (GroupInfo gi in myGroupInfoList)
 | 
						|
					{
 | 
						|
						if (gin == gi.GroupName)
 | 
						|
						{
 | 
						|
							addOK = false;
 | 
						|
							break;
 | 
						|
						}
 | 
						|
					}
 | 
						|
					if (addOK)
 | 
						|
					{
 | 
						|
						Group group = Group.MakeGroup(gin, null, null);
 | 
						|
						Assignment.MakeAssignment(group, Role.Get(ri.RID), Folder.Get(fi.FolderID), null);
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
			GroupInfoList.Reset();
 | 
						|
			myGroupInfoList = GroupInfoList.Get();
 | 
						|
			SetupGroups();
 | 
						|
		}
 | 
						|
		private void lstUsers_SelectedIndexChanged(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			lblMembers.Text = "Selected User Groups";
 | 
						|
			myMembershipInfoList = new List<MembershipInfo>();
 | 
						|
			lstMembers.Items.Clear();
 | 
						|
			if (lstUsers.SelectedIndex > -1)
 | 
						|
			{
 | 
						|
				UserInfo ui = myUserInfoList[lstUsers.SelectedIndex];
 | 
						|
				if (ui.UserMembershipCount > 0)
 | 
						|
				{
 | 
						|
					foreach (MembershipInfo mi in ui.UserMemberships)
 | 
						|
					{
 | 
						|
						if (mi.EndDate == null || mi.EndDate == string.Empty)
 | 
						|
						{
 | 
						|
							myMembershipInfoList.Add(mi);
 | 
						|
							lstMembers.Items.Add(mi.MyGroup.GroupName);
 | 
						|
						}
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void tvFolders_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
 | 
						|
		{
 | 
						|
			tvFolders.SelectedNode = e.Node;
 | 
						|
		}
 | 
						|
		private void deleteGroupToolStripMenuItem_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			if (lstGroups.SelectedIndex < 0)
 | 
						|
			{
 | 
						|
				MessageBox.Show("You must select a group to delete", "No Group Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | 
						|
				return;
 | 
						|
			}
 | 
						|
			GroupInfo gi = myGroupInfoList[lstGroups.SelectedIndex];
 | 
						|
			if(myFolder.FolderConfig.Security_Group == gi.GID)
 | 
						|
			{
 | 
						|
				MessageBox.Show("Cannot Delete Default Group", "Attempt to Delete Default", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | 
						|
				return;
 | 
						|
			}
 | 
						|
			bool deleteOK = true;
 | 
						|
			if(gi.GroupMembershipCount > 0)
 | 
						|
			{
 | 
						|
				foreach (MembershipInfo mi in gi.GroupMemberships)
 | 
						|
				{
 | 
						|
					if (mi.EndDate == null || mi.EndDate == string.Empty)
 | 
						|
					{
 | 
						|
						deleteOK = false;
 | 
						|
						break;
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
			if (!deleteOK)
 | 
						|
			{
 | 
						|
				MessageBox.Show("There are still users who are members of this group.  You need to delete all members in order to delete this group.", "Group Has Members", MessageBoxButtons.OK, MessageBoxIcon.Warning);
 | 
						|
				return;
 | 
						|
			}
 | 
						|
			if (MessageBox.Show("Are you sure you want to delete this group?", "Confirm Deleting Group", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
 | 
						|
			{
 | 
						|
				Group.Delete(gi.GID);
 | 
						|
				GroupInfoList.Reset();
 | 
						|
				myGroupInfoList = GroupInfoList.Get();
 | 
						|
				SetupGroups();
 | 
						|
				SetupSecurity();
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void lstGroups_MouseUp(object sender, MouseEventArgs e)
 | 
						|
		{
 | 
						|
			lstGroups.SelectedIndex = -1;
 | 
						|
			if (e.Button == MouseButtons.Right)
 | 
						|
			{
 | 
						|
				int k = lstGroups.IndexFromPoint(e.Location);
 | 
						|
				if (k >= 0)
 | 
						|
				{
 | 
						|
					lstGroups.SelectedIndex = k;
 | 
						|
					if (lstUsers.SelectedIndex >= 0)
 | 
						|
					{
 | 
						|
						GroupInfo gi = myGroupInfoList[k];
 | 
						|
						if (gi.GroupMembershipCount > 0)
 | 
						|
						{
 | 
						|
							addMemberToolStripMenuItemGroup.Visible = true;
 | 
						|
							UserInfo ui = myUserInfoList[lstUsers.SelectedIndex];
 | 
						|
							foreach (MembershipInfo mi in gi.GroupMemberships)
 | 
						|
							{
 | 
						|
								if (mi.MyUser.UserID == ui.UserID && (mi.EndDate == null || mi.EndDate == string.Empty))
 | 
						|
								{
 | 
						|
									addMemberToolStripMenuItemGroup.Visible = false;
 | 
						|
									break;
 | 
						|
								}
 | 
						|
							}
 | 
						|
						}
 | 
						|
					}
 | 
						|
					else
 | 
						|
						addMemberToolStripMenuItemGroup.Visible = false;
 | 
						|
					cmGroups.Show(lstGroups, e.Location);
 | 
						|
				}
 | 
						|
			}
 | 
						|
			else if (e.Button == MouseButtons.Left)
 | 
						|
			{
 | 
						|
				int k = lstGroups.IndexFromPoint(e.Location);
 | 
						|
				if (k >= 0)
 | 
						|
				{
 | 
						|
					lstGroups.SelectedIndex = k;
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void lstUsers_MouseUp(object sender, MouseEventArgs e)
 | 
						|
		{
 | 
						|
			lstUsers.SelectedIndex = -1;
 | 
						|
			if (e.Button == MouseButtons.Right)
 | 
						|
			{
 | 
						|
				int k = lstUsers.IndexFromPoint(e.Location);
 | 
						|
				if (k >= 0)
 | 
						|
				{
 | 
						|
					lstUsers.SelectedIndex = k;
 | 
						|
          //addUserToolStripMenuItem.Visible = false;
 | 
						|
					editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = true;
 | 
						|
					if (lstGroups.SelectedIndex >= 0)
 | 
						|
					{
 | 
						|
						UserInfo ui = myUserInfoList[k];
 | 
						|
						if(ui.UserMembershipCount > 0)
 | 
						|
						{
 | 
						|
							addMemberToolStripMenuItemUser.Visible = true;
 | 
						|
							GroupInfo gi = myGroupInfoList[lstGroups.SelectedIndex];
 | 
						|
							foreach(MembershipInfo mi in ui.UserMemberships)
 | 
						|
							{
 | 
						|
								if (mi.MyGroup.GroupName == gi.GroupName && (mi.EndDate == null || mi.EndDate == string.Empty))
 | 
						|
								{
 | 
						|
									addMemberToolStripMenuItemUser.Visible = false;
 | 
						|
									break;
 | 
						|
								}
 | 
						|
							}
 | 
						|
						}
 | 
						|
					}
 | 
						|
					else
 | 
						|
						addMemberToolStripMenuItemUser.Visible = false;
 | 
						|
					cmUsers.Show(lstUsers, e.Location);
 | 
						|
				}
 | 
						|
				else
 | 
						|
				{
 | 
						|
					addUserToolStripMenuItem.Visible = true;
 | 
						|
					editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = addMemberToolStripMenuItemUser.Visible = false;
 | 
						|
					cmUsers.Show(lstUsers, e.Location);
 | 
						|
				}
 | 
						|
			}
 | 
						|
			else if (e.Button == MouseButtons.Left)
 | 
						|
			{
 | 
						|
				int k = lstUsers.IndexFromPoint(e.Location);
 | 
						|
				if (k >= 0)
 | 
						|
				{
 | 
						|
					lstUsers.SelectedIndex = k;
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private void lstMembers_MouseUp(object sender, MouseEventArgs e)
 | 
						|
		{
 | 
						|
			lstMembers.SelectedIndex = -1;
 | 
						|
			if (e.Button == MouseButtons.Right)
 | 
						|
			{
 | 
						|
				int k = lstMembers.IndexFromPoint(e.Location);
 | 
						|
				if (k >= 0)
 | 
						|
				{
 | 
						|
					lstMembers.SelectedIndex = k;
 | 
						|
					addMemberToolStripMenuItemUser.Visible = false;
 | 
						|
					removeMemberToolStripMenuItem.Visible = true;
 | 
						|
					cmMembers.Show(lstMembers, e.Location);
 | 
						|
				}
 | 
						|
				else
 | 
						|
				{
 | 
						|
					addMemberToolStripMenuItemUser.Visible = true;
 | 
						|
					removeMemberToolStripMenuItem.Visible = false;
 | 
						|
					cmMembers.Show(lstMembers, e.Location);
 | 
						|
				}
 | 
						|
			}
 | 
						|
			else if (e.Button == MouseButtons.Left)
 | 
						|
			{
 | 
						|
				int k = lstMembers.IndexFromPoint(e.Location);
 | 
						|
				if (k >= 0)
 | 
						|
				{
 | 
						|
					lstMembers.SelectedIndex = k;
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
} |