00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 using System;
00013 using System.Collections.Generic;
00014 using System.ComponentModel;
00015 using System.Windows.Forms;
00016 using Mcs.Epm.MicrosoftProject.mpFx.ResourcesWebService;
00017
00018 namespace Mcs.Epm.MicrosoftProject.mpFx.WinForms
00019 {
00020
00021
00022
00023 public partial class SecurityManagerForm : Form
00024 {
00025 #region Instance Data
00026
00027 private readonly ProjectServer _ProjectServer;
00028 private Dictionary<Guid, string> _Groups;
00029
00030 #endregion
00031
00032 #region Constructors
00033
00034 public SecurityManagerForm(ProjectServer projectServer)
00035 {
00036 if (projectServer == null)
00037 {
00038 throw new ArgumentNullException("projectServer");
00039 }
00040
00041 _ProjectServer = projectServer;
00042
00043 InitializeComponent();
00044 }
00045
00046 #endregion
00047
00048 #region Event Handlers
00049
00050 private void SecurityManagerForm_Shown(object sender, EventArgs e)
00051 {
00052 Application.DoEvents();
00053
00054 _Groups = _ProjectServer.Security.Groups.GetGroupsList(true);
00055
00056 foreach (KeyValuePair<Guid, string> group in _Groups)
00057 {
00058 TreeNode node = treeView.Nodes["groupNode"].Nodes.Add(group.Value);
00059 node.Tag = group.Key;
00060 node.ImageKey = "group";
00061 node.SelectedImageKey = "group";
00062 }
00063
00064 using (ResourceDataSet resourceDataSet = _ProjectServer.Resources.ReadResources(ResourceFilters.ListSecurityInformation, false))
00065 {
00066 foreach (ResourceDataSet.ResourcesRow resource in resourceDataSet.Resources.Rows)
00067 {
00068 if (!resource.IsWRES_ACCOUNTNull())
00069 {
00070 TreeNode node = treeView.Nodes["userNode"].Nodes.Add(resource.RES_NAME);
00071 node.Tag = resource.RES_UID;
00072 node.ImageKey = "user";
00073 node.SelectedImageKey = "user";
00074 }
00075 }
00076 }
00077
00078 foreach (KeyValuePair<Guid, string> category in _ProjectServer.Security.Categories)
00079 {
00080 TreeNode node = treeView.Nodes["categoryNode"].Nodes.Add(category.Value);
00081 node.Tag = category.Key;
00082 node.ImageKey = "brick";
00083 node.SelectedImageKey = "brick";
00084 }
00085
00086 foreach (KeyValuePair<Guid, string> template in _ProjectServer.Security.Templates)
00087 {
00088 TreeNode node = treeView.Nodes["templateNode"].Nodes.Add(template.Value);
00089 node.Tag = template.Key;
00090 node.ImageKey = "lock";
00091 node.SelectedImageKey = "lock";
00092
00093 }
00094 }
00095
00096 private void contextMenuStrip_Opening(object sender, CancelEventArgs e)
00097 {
00098 if (treeView.SelectedNode == null)
00099 {
00100 foreach (ToolStripMenuItem item in contextMenuStrip.Items)
00101 {
00102 item.Enabled = false;
00103 }
00104
00105 return;
00106 }
00107
00108 string nodeName = treeView.SelectedNode.Name;
00109
00110 if (nodeName == "userNode" || nodeName == "categoryNode" || nodeName == "templateNode")
00111 {
00112 addToolStripMenuItem.Enabled = true;
00113 removeToolStripMenuItem.Enabled = false;
00114 editToolStripMenuItem.Enabled = false;
00115 }
00116 else
00117 {
00118 addToolStripMenuItem.Enabled = false;
00119 removeToolStripMenuItem.Enabled = true;
00120 editToolStripMenuItem.Enabled = true;
00121 }
00122 }
00123
00124 private void removeToolStripMenuItem_Click(object sender, EventArgs e)
00125 {
00126 if (MessageBox.Show(this,
00127 string.Format("Are you sure you want to remove{0}? This action cannot be undone.", treeView.SelectedNode.Text),
00128 "Test",
00129 MessageBoxButtons.YesNo,
00130 MessageBoxIcon.Question) == DialogResult.Yes)
00131 {
00132
00133 switch (treeView.SelectedNode.Parent.Name)
00134 {
00135 case "userNode":
00136 break;
00137 case "categoryNode":
00138 break;
00139 case "templateNode":
00140 break;
00141
00142 }
00143 }
00144 }
00145
00146 #endregion
00147 }
00148 }