Compare commits

..

116 Commits

Author SHA1 Message Date
8c5c7a5d93 Merge pull request 'Development' (#634) from Development into master
Merging dev into master after successful testing.
2025-10-09 12:50:13 -04:00
864ec2709c Merge pull request 'Development' (#620) from Development into master
Merging Dev into master after successful testing.
2025-09-24 08:25:00 -04:00
4b1ca8d7bf Merge pull request 'Development' (#612) from Development into master
Merging data into master after successful testing
2025-09-11 12:13:22 -04:00
3b73d54ea2 Merge pull request 'Development' (#600) from Development into master
Merging dev into master after successful testing.
2025-08-15 08:37:48 -04:00
2ca433c83f Merge pull request 'Development' (#576) from Development into master
Merging Dev into Master after successful testing.
2025-07-28 08:20:18 -04:00
0b40569727 Merge pull request 'Development' (#570) from Development into master
Reviewed-on: #570
2025-06-23 14:58:28 -04:00
afb0247d87 Merge pull request 'Development' (#559) from Development into master
Merging changes from dev into master after successful testing.
2025-05-20 13:24:21 -04:00
bce8461a7e Merge pull request 'Development' (#555) from Development into master
Merging all changes from dev into master after successful testing.
2025-05-15 15:01:00 -04:00
9d5cc43d71 Merge pull request 'Development' (#543) from Development into master
Merging dev into master after successful testing.
2025-05-01 11:25:49 -04:00
bc1370ab29 Merge pull request 'Development' (#540) from Development into master
Merging changes from Development into master after successful testing.
2025-04-23 15:13:56 -04:00
eaf2b14cfc Merge pull request 'Development' (#535) from Development into master
Merging all changes from development into master after successful testing.
2025-03-26 09:25:11 -04:00
1cf7d81aa5 Merge pull request 'Development' (#530) from Development into master
Merging all changes through B2025-017 from dev into master after successful testing.
2025-03-04 10:24:28 -05:00
f11a9536f0 Merge pull request 'Development' (#524) from Development into master
Merging all changes through B2025-015 from development into master after successful testing.
2025-02-20 15:33:44 -05:00
c7bdcf0104 Merge pull request 'Development' (#516) from Development into master
Merging changes from development into master after successful testing
2025-02-11 15:25:38 -05:00
df026499d5 Merge pull request 'Development' (#512) from Development into master
Merging all changes from development into master after successful testing.
2025-02-10 09:20:43 -05:00
a3aa4157b8 Merge pull request 'Development' (#508) from Development into master
Merging all changes through B2025-012 from development into master after successful testing.
2025-02-05 10:50:35 -05:00
8f3268e1bc Merge pull request 'Development' (#504) from Development into master
Merging all changes from development into master after successful testing.
2025-01-30 15:55:02 -05:00
5721d440e9 Merge branch 'master' of https://git.volian.com/Volian/SourceCode 2025-01-21 10:42:15 -05:00
505c396283 Merge pull request 'Development' (#489) from Development into master
Merging from development into master after successful testing.
2025-01-21 10:41:15 -05:00
643e6bc94f Merge pull request 'Development' (#486) from Development into master
Merging all items through B2025-003 from development in master after successful testing.
2025-01-09 15:02:16 -05:00
76502e6d97 Merge pull request 'Development' (#481) from Development into master
Merging all changes through F2024-087 after successful testing.
2024-12-11 11:52:34 -05:00
851a0b3810 Merge pull request 'Development' (#464) from Development into master
Merging all items through B2024-092 from development into master after successful testing.
2024-11-11 11:39:01 -05:00
fd8dbb4c8b Merge pull request 'Development' (#454) from Development into master
Merging all changes from development into master after successful testing.
2024-11-01 14:18:00 -04:00
4ffd994c5e Merge pull request 'Development' (#450) from Development into master
Merging all development items into master after successful testing.
2024-10-31 09:11:59 -04:00
a34828113a Merge pull request 'Development' (#416) from Development into master
Merging C2017-031 and B2024-075 from development into master after successful testing.
2024-10-03 12:08:30 -04:00
461329468c Merge pull request 'Development' (#413) from Development into master
Merging F2023-136 and F2024-074 in master after successful testing
2024-09-27 14:27:22 -04:00
35de5df04d Merge pull request 'Development' (#410) from Development into master
Merging all items through B2024-03 from development into master after successful testing.
2024-09-17 12:03:23 -04:00
4f0548fd60 Merge pull request 'Development' (#402) from Development into master
Merging C2021-034 and B2024-065 into master after successful testing.
2024-09-06 09:56:37 -04:00
5c1d96cc51 Merge pull request 'Development' (#399) from Development into master
Merging all fixes through B2024-063 from development into master after successful testing.
2024-08-27 15:58:15 -04:00
57049c0c52 Merge pull request 'Development' (#392) from Development into master
Merging B2024-059 and B2024-058 from development into master after successful testing.
2024-08-15 14:55:27 -04:00
31326e1c91 Merge pull request 'Development' (#389) from Development into master
Merging all changes through F2024-069 from development into master after successful testing.
2024-08-09 13:06:40 -04:00
3c60994a0a Merge pull request 'Development' (#373) from Development into master
Merging all changes through B2024-053 from development into master after successful testing.
2024-08-01 08:37:23 -04:00
773cc42346 Merge pull request 'Development' (#362) from Development into master
Merging B2024-046 and B2024-047 from development into master after successful testing.
2024-07-25 10:44:42 -04:00
f46a1f39dc Merge pull request 'Development' (#359) from Development into master
Merging B2024-042 from development into master after successful testing.
2024-07-22 11:14:19 -04:00
b7175bf77f Merge pull request 'Development' (#357) from Development into master
Merging C2024-005 from development into master after successful testing.
2024-07-18 15:41:20 -04:00
ec22232aa8 Merge pull request 'Development' (#356) from Development into master
Merging all items through B2024-041 from development into master after successful testing.
2024-07-18 09:51:54 -04:00
f303cd2236 Merge pull request 'Development' (#348) from Development into master
Merging F2024-065 and F2024-066 from development into master after successful testing.
2024-07-03 10:45:41 -04:00
f40cef4416 Merge pull request 'Development' (#346) from Development into master
Merging F2024-064 from development into master after successful testing.
2024-07-01 11:54:15 -04:00
fbca97d38d Merge pull request 'Development' (#344) from Development into master
Merging C2024-013 from development into master after successful testing.
2024-06-25 15:55:32 -04:00
28bd2cba5c Merge pull request 'Development' (#342) from Development into master
Merging C2022-029 from development into master after successful testing.
2024-06-20 11:36:59 -04:00
4b35f73bbf Merge pull request 'Development' (#340) from Development into master
Merging C2024-004 from development into master after successful testing.
2024-06-19 16:23:23 -04:00
f4706eb126 Merge pull request 'Development' (#338) from Development into master
Merging C2019-047 from development into master after successful testing.
2024-06-17 08:38:34 -04:00
21bcb90558 Merge pull request 'Development' (#335) from Development into master
Merging B2024-036 and F2024-063 from development into master after successful testing.
2024-06-06 14:51:13 -04:00
ae48ac0cae Merge pull request 'Development' (#332) from Development into master
Merging changes through B2024-035 from development into master after successful testing.
2024-05-30 08:08:28 -04:00
cb4979d5bc Merge pull request 'Development' (#327) from Development into master
Merging F2024-061 from development into master after successful testing.
2024-05-20 14:11:12 -04:00
7d3ae74e1f Merge pull request 'Development' (#325) from Development into master
Merging F2024-060 from development into master after successful testing.
2024-05-16 15:32:13 -04:00
9d680aa500 Merge pull request 'Development' (#323) from Development into master
Merging C2024-001 from development into master after successful testing.
2024-05-16 14:17:17 -04:00
0d50b1c2fe Merge pull request 'Development' (#321) from Development into master
Merging all items through B2024-030 from development into master after successful testing.
2024-05-15 08:33:58 -04:00
75e034863f Merge pull request 'Development' (#315) from Development into master
Merging all changes through B2024-026 from development into master after successful testing.
2024-05-09 14:01:48 -04:00
3b42de1571 Merge pull request 'F2024-059_Callaway' (#311) from F2024-059_Callaway into master
Format only changes
2024-05-07 16:00:36 -04:00
668472286e Merge pull request 'Development' (#307) from Development into master
Merging all changes through C2023-006 into master after successful testing.
2024-04-26 09:21:44 -04:00
e00d34c99d Merge pull request 'Development' (#300) from Development into master
Merging C2024-008 and C2024-007 from development into master after successful testing.
2024-04-17 14:57:22 -04:00
9fb496dfb3 Merge pull request 'Development' (#297) from Development into master
Merging F2024-053 from development into master after successful testing.
2024-04-11 09:23:34 -04:00
f4eaa4a3ef Merge pull request 'Development' (#295) from Development into master
Merging F2024-052 from development into master after successful testing.
2024-04-08 11:11:43 -04:00
5d50ed6bdf Merge pull request 'Development' (#292) from Development into master
Merging F2024-051, B2024-021, F2024-049, F2024-050 and F2024-045 after successful testing.
2024-04-05 10:54:57 -04:00
d7ace4eaf9 Merge pull request 'Development' (#287) from Development into master
Merging F2024-047, F2024-048, B2024-017 and B2024-019 from development into master after successful testing.
2024-04-04 11:36:56 -04:00
16a4d335ea Merge pull request 'Development' (#282) from Development into master
Merging all items through B2024-018 from development into master after successful testing.
2024-03-27 13:39:46 -04:00
ba69bb0772 Merge pull request 'Development' (#275) from Development into master
Merging F2024-037 and CSLA updates into master after successful testing.
2024-03-20 16:07:27 -04:00
455940caa2 Merge pull request 'Development' (#271) from Development into master
Merging F2024-040 into master after successful testing.
2024-03-18 10:00:30 -04:00
439344757e Merge pull request 'Development' (#269) from Development into master
Merging F2024-044, F2024-043, and F2024-019 in master after successful testing.
2024-03-15 09:33:57 -04:00
ad912691c9 Merge pull request 'Development' (#265) from Development into master
Merging 	F2024-016, 	F2024-032, 	B2024-013, 	F2024-025,	F2024-027 & F2024-028 into master after successful testing.
2024-03-12 14:01:12 -04:00
237144aff6 Merge pull request 'Development' (#259) from Development into master
Merging B2024-014 from development into master after successful testing.
2024-03-04 15:02:18 -05:00
810332d558 Merge pull request 'Development' (#256) from Development into master
Merging F2024-020 from development into master.  No testing required since formats are under development.
2024-02-29 13:23:48 -05:00
f8431d0ba1 Merge pull request 'Development' (#252) from Development into master
Merging F2024-022 from development into master.  No testing required since formats are under development.
2024-02-29 09:23:51 -05:00
57c3bfa16a Merge pull request 'Development' (#250) from Development into master
Merging C2023-003 and F2024-026 into master after successful testing.
2024-02-28 11:56:15 -05:00
61f1077608 Merge pull request 'Development' (#248) from Development into master
Merging F2024-029, B2024-009, F2024-023, B2024-011, B2024-012 and F2024-017 from development into master after successful testing.
2024-02-27 14:21:22 -05:00
8877e968b9 Merge pull request 'Development' (#239) from Development into master
Merging F2024-018, B2024-008, B2024-007, and F2024-015 from development into master after successful testing.
2024-02-22 08:22:26 -05:00
4575c90bee Merge pull request 'Development' (#233) from Development into master
Merging updated formats from development into master after successful testing.
2024-02-14 16:07:57 -05:00
21279a87ae Merge pull request 'Development' (#231) from Development into master
Merging B2024-006 from development into master after successful testing.
2024-02-14 08:19:09 -05:00
3d5ad4a17e Merge pull request 'Development' (#229) from Development into master
Merging C2024-002 and F2024-013 from development into master after successful testing.
2024-02-09 11:30:41 -05:00
9bb7b044a8 Merge pull request 'Development' (#226) from Development into master
Merging F2024-010, 	F2024-011, 	F2024-008, 	B2024-002, 	F2024-012  and B2024-005 from development into master after successful testing.
2024-02-08 11:38:49 -05:00
dc8f2f7561 Merge pull request 'Development' (#219) from Development into master
Merging C2022-009 into master after successful testing.
2024-02-02 13:53:22 -05:00
829dbf84da Merge pull request 'Development' (#217) from Development into master
Merging F2024-005 and B2024-004 from development into master after successful testing
2024-01-31 08:34:00 -05:00
7b156c17f8 Merge pull request 'Development' (#212) from Development into master
Merging all changes up through F2024-006 from development into master after successful testing.
2024-01-24 11:30:40 -05:00
cbf7cbc164 Merge pull request 'Development' (#198) from Development into master
Merging F2024-002 and F2023-112 from development into master.  No testing required since formats are under development.
2024-01-08 15:24:15 -05:00
b04faa816e Merge pull request 'Development' (#196) from Development into master
Merging F2023-126, F2024-001, C2022-009, C2023-024 and C2023-023 from development into Master after successful testing.
2024-01-03 10:54:22 -05:00
517ebe2902 Merge pull request 'Development' (#189) from Development into master
Initial check-in of Vogtle Background formats.  No testing required since formats are under development.
2023-12-15 15:48:55 -05:00
03d0d314e3 Merge pull request 'Development' (#187) from Development into master
Merging B2023-115 from development into master after successful testing.
2023-12-12 15:31:06 -05:00
3e804c5cce Merge pull request 'Development' (#185) from Development into master
Merging F2023-133 into from development into master. No testing required since formats are under development.
2023-12-11 10:08:22 -05:00
ee2b8b538e Merge pull request 'Development' (#183) from Development into master
Merging PROMSFixes from development into master after minor changes to UpdateFormatList.
2023-12-08 14:51:21 -05:00
fdfd34fe92 Merge pull request 'Development' (#181) from Development into master
Merging F2023-151 from development into master.  No testing required since formats are under development.
2023-12-07 15:55:16 -05:00
2d6fb6523b Merge pull request 'Development' (#179) from Development into master
Merging F2023-133 from development into master.  No testing required since formats are under development.
2023-12-07 11:44:31 -05:00
3084bf3982 Merge pull request 'Development' (#177) from Development into master
Merging B2023-115 and F2023-150 from development into master.  No testing required since formats are under development.
2023-12-06 09:08:18 -05:00
5ba51e8392 Merge pull request 'Development' (#174) from Development into master
Merging F2023-149 from development into master.  No testing required since formats are under development.
2023-12-05 16:30:39 -05:00
fb5eb43e34 Merge pull request 'Development' (#172) from Development into master
Merging F2023-124 from development into master.  No testing required since formats are under development.
2023-12-04 11:22:59 -05:00
b154056276 Merge pull request 'Development' (#170) from Development into master
Merging F2023-119 from development into master.  No testing required since formats are under development.
2023-12-01 15:36:22 -05:00
c67b8f9ca1 Merge pull request 'Development' (#168) from Development into master
Merging F2023-146 from development to master.  No testing required since formats are under development.
2023-12-01 10:02:50 -05:00
95e4181360 Merge pull request 'Development' (#166) from Development into master
Merging F2023-148, F2023-148, and B2023-120 from development into Master. No testing required since formats are under development.
2023-11-30 14:38:49 -05:00
32dffbe56b Merge pull request 'Development' (#162) from Development into master
Merging B2023-116, B2023-117, and F2023-143 from development to master after successful testing.
2023-11-29 15:58:44 -05:00
6b3c8d373b Merge pull request 'F2023-143_Vogtle3&4_Alrm_Footer' (#159) from F2023-143_Vogtle3&4_Alrm_Footer into master
Format only change.
Vogtle 3&4 formats under development. This change will be tested as data in entered into PROMS by Volian
2023-11-27 16:23:44 -05:00
db29107f47 Merge pull request 'Development' (#156) from Development into master
Merging F2023-142 and B2022-046 in from development to master after successful testing.
2023-11-14 08:45:47 -05:00
355537f2ab Merge pull request 'Development' (#153) from Development into master
Merging F2023-140, F2023-123, B2023-007, B2023-108, F2023-139, F2023-138 and B2023-103
2023-11-09 10:33:40 -05:00
0729ef0c21 Merge pull request 'Development' (#147) from Development into master
Merging F2023-139 from development into master after successful testing.
2023-10-26 10:10:33 -04:00
6fe82bfd0f Merge pull request 'Development' (#145) from Development into master
Merging F2023-138 from development into master after successful testing.
2023-10-25 14:40:15 -04:00
39bf072363 Merge pull request 'Development' (#142) from Development into master
Merging B2023-103 from development into master after successful testing.
2023-10-23 15:28:31 -04:00
da7c384fd8 Merge pull request 'Development' (#139) from Development into master
Merging C2023-017, C2023-019, B2023-104, B2023-101 and B2023-102 from development into master after successful testing.
2023-10-18 10:37:59 -04:00
95130fd9a0 Merge pull request 'Development' (#133) from Development into master
Merging C2023-018 from development into master after successful testing.
2023-10-11 09:26:45 -04:00
978e2344a3 Merge pull request 'Development' (#131) from Development into master
Merging C2023-016 and C2023-017 from development into master after successful testing.
2023-10-06 10:56:34 -04:00
c9bf45602c Merge pull request 'Development' (#128) from Development into master
Merging F2023-137 and B2023-100 from development into master. F2023-137 does not require testing since formats are under development. B2023-100 tested successfully.
2023-10-02 11:52:22 -04:00
aa160b2036 Merge pull request 'Development' (#124) from Development into master
Merging B2023-099 from development into master after successful testing.
2023-09-28 15:58:27 -04:00
f82b32d351 Merge pull request 'Development' (#122) from Development into master
Merging B2023-097 and B2023-098 from development into master after successful testing.
2023-09-26 14:58:05 -04:00
e519dc9a57 Merge pull request 'Development' (#120) from Development into master
Merging B2023-094 from development into master after successful testing.
2023-09-22 13:24:17 -04:00
f020c37db9 Merge pull request 'Development' (#118) from Development into master
Merged B2023-096 from development into master after successful testing.
2023-09-15 11:50:57 -04:00
5a4ec3b6b1 Merge pull request 'Development' (#117) from Development into master
Merging F2023-135 and B2023-093 from development into master after successful testing.
2023-09-14 15:58:52 -04:00
2602d6c9d2 Merge pull request 'Development' (#113) from Development into master
Merging C2023-015 from development into master.
2023-09-12 09:23:57 -04:00
ff403583d7 Merge pull request 'Development' (#111) from Development into master
Merging B2023-091 and B2023-078 from development into master.
2023-08-30 16:07:17 -04:00
c5577cc2bd Merge pull request 'Development' (#108) from Development into master
Merging F2023-134 from development into master.  No testing required since formats are under development.
2023-08-24 15:01:12 -04:00
78be6e5dc1 Merge pull request 'Development' (#106) from Development into master
Merging GitAutomation from Development into Master.
2023-08-24 09:13:06 -04:00
b954a41375 Merge pull request 'Development' (#104) from Development into master
Merging B2023-089 and F2023-131 from Development into Master.  No testing required since formats are under development.
2023-08-24 09:05:31 -04:00
0100a11cfe Merge pull request 'Development' (#101) from Development into master
Merging F2023-125 from development into master.  No testing required since formats are under development.
2023-08-23 08:19:00 -04:00
04cf2e8534 Merge pull request 'Development' (#99) from Development into master
Merging F2023-130 from Development into Master. No testing required since formats are under development.
2023-08-22 15:04:22 -04:00
be00724818 Merge pull request 'Development' (#97) from Development into master
Merging B2023-088 from development into master.  No testing required since formats are under development.
2023-08-22 10:52:09 -04:00
274d93c61a Merge pull request 'Development' (#94) from Development into master
Merging F2023-122 from development into master.  No testing required since formats are under development.
2023-08-22 08:53:57 -04:00
7dc4c30436 Merge pull request 'Development' (#92) from Development into master
Merging F2023-127 from development into master.  No testing required since formats are under development.
2023-08-22 08:33:56 -04:00
028ef4bc31 Merge pull request 'Development' (#89) from Development into master
Merging F2023-128 and F2023-129 from development into master.  No testing required since formats are under development.
2023-08-21 11:46:01 -04:00
42124d65c7 Merge pull request 'Development' (#87) from Development into master
Merging F2023-118,  F2023-120 and F2023-121 from development into master.  No testing required since formats are under development.
2023-08-16 10:13:52 -04:00
36 changed files with 829 additions and 1354 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1099,9 +1099,7 @@ namespace VEPROMS
(int)changeBarData.FixedChangeColumn :
System.Convert.ToInt32(changeBarData.DefaultCBLoc.Split(" ,".ToCharArray())[System.Convert.ToInt32(cbd.MyChangeBarLoc)]);
//cbd.MyChangeBarColumn = (int)changeBarData.FixedChangeColumn;
if (cbd.MyChangeBarText == PrintChangeBarText.UserDef && !string.IsNullOrEmpty(ppTxbxChangeBarUserMsgOne.Text))
cbd.MyChangeBarMessage = ppTxbxChangeBarUserMsgOne.Text + @"\n" + ppTxbxChangeBarUserMsgTwo.Text;
else if (cbd.MyChangeBarText == PrintChangeBarText.UserDef)
if (cbd.MyChangeBarText == PrintChangeBarText.UserDef)
cbd.MyChangeBarMessage = _DocVersionConfig.Print_UserCBMess1 + @"\n" + _DocVersionConfig.Print_UserCBMess2;
}

View File

@@ -28,416 +28,328 @@ namespace VEPROMS
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.tcSecurity = new System.Windows.Forms.TabControl();
this.tpManageFolders = new System.Windows.Forms.TabPage();
this.label6 = new System.Windows.Forms.Label();
this.tvFolders = new System.Windows.Forms.TreeView();
this.cmFolders = new System.Windows.Forms.ContextMenuStrip(this.components);
this.createSetAdministratorGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.createWriterGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.createROEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.createReviewerGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.tpManageGroups = new System.Windows.Forms.TabPage();
this.btnAddMember = new System.Windows.Forms.Button();
this.btnRemoveMember = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.lbNonMembers = new System.Windows.Forms.Label();
this.btnDeleteGroup = new System.Windows.Forms.Button();
this.cbGroupSelection = new System.Windows.Forms.ComboBox();
this.lstNonMembers = new System.Windows.Forms.ListBox();
this.pnlMembers = new System.Windows.Forms.Panel();
this.lstMembers = new System.Windows.Forms.ListBox();
this.lblMembers = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.tpManageUsers = new System.Windows.Forms.TabPage();
this.lblUserGroups = new System.Windows.Forms.Label();
this.lstGroups = new System.Windows.Forms.ListBox();
this.lstUsers = new System.Windows.Forms.ListBox();
this.lblUsers = new System.Windows.Forms.Label();
this.tpDefault = new System.Windows.Forms.TabPage();
this.label8 = new System.Windows.Forms.Label();
this.pnlGroups = new System.Windows.Forms.Panel();
this.cmMembers = new System.Windows.Forms.ContextMenuStrip(this.components);
this.removeMemberToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.cmUsers = new System.Windows.Forms.ContextMenuStrip(this.components);
this.addUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.editUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.deleteUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.tt = new System.Windows.Forms.ToolTip(this.components);
this.tcSecurity.SuspendLayout();
this.tpManageFolders.SuspendLayout();
this.cmFolders.SuspendLayout();
this.tpManageGroups.SuspendLayout();
this.pnlMembers.SuspendLayout();
this.tpManageUsers.SuspendLayout();
this.tpDefault.SuspendLayout();
this.cmUsers.SuspendLayout();
this.SuspendLayout();
//
// tcSecurity
//
this.tcSecurity.Controls.Add(this.tpManageFolders);
this.tcSecurity.Controls.Add(this.tpManageGroups);
this.tcSecurity.Controls.Add(this.tpManageUsers);
this.tcSecurity.Controls.Add(this.tpDefault);
this.tcSecurity.Dock = System.Windows.Forms.DockStyle.Fill;
this.tcSecurity.Location = new System.Drawing.Point(0, 0);
this.tcSecurity.Name = "tcSecurity";
this.tcSecurity.SelectedIndex = 0;
this.tcSecurity.Size = new System.Drawing.Size(784, 564);
this.tcSecurity.TabIndex = 0;
this.tcSecurity.SelectedIndexChanged += new System.EventHandler(this.changedTab);
//
// tpManageFolders
//
this.tpManageFolders.BackColor = System.Drawing.SystemColors.ButtonFace;
this.tpManageFolders.Controls.Add(this.label6);
this.tpManageFolders.Controls.Add(this.tvFolders);
this.tpManageFolders.Location = new System.Drawing.Point(4, 22);
this.tpManageFolders.Name = "tpManageFolders";
this.tpManageFolders.Padding = new System.Windows.Forms.Padding(3);
this.tpManageFolders.Size = new System.Drawing.Size(776, 538);
this.tpManageFolders.TabIndex = 2;
this.tpManageFolders.Text = "Manage Folders / Add Groups";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label6.Location = new System.Drawing.Point(8, 5);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(55, 15);
this.label6.TabIndex = 7;
this.label6.Text = "Folders";
//
// tvFolders
//
this.tvFolders.ContextMenuStrip = this.cmFolders;
this.tvFolders.Dock = System.Windows.Forms.DockStyle.Bottom;
this.tvFolders.HideSelection = false;
this.tvFolders.Location = new System.Drawing.Point(3, 32);
this.tvFolders.Name = "tvFolders";
this.tvFolders.Size = new System.Drawing.Size(770, 503);
this.tvFolders.TabIndex = 6;
this.tvFolders.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.tvFolders_NodeMouseClick);
//
// cmFolders
//
this.cmFolders.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.components = new System.ComponentModel.Container();
this.tcSecurity = new System.Windows.Forms.TabControl();
this.tpGroupUsers = new System.Windows.Forms.TabPage();
this.pnlMembers = new System.Windows.Forms.Panel();
this.lstMembers = new System.Windows.Forms.ListBox();
this.lblMembers = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.tvFolders = new System.Windows.Forms.TreeView();
this.cmFolders = new System.Windows.Forms.ContextMenuStrip(this.components);
this.createSetAdministratorGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.createWriterGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.createROEToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.createReviewerGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.lstUsers = new System.Windows.Forms.ListBox();
this.label5 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.lstGroups = new System.Windows.Forms.ListBox();
this.tpDefault = new System.Windows.Forms.TabPage();
this.label8 = new System.Windows.Forms.Label();
this.pnlGroups = new System.Windows.Forms.Panel();
this.cmMembers = new System.Windows.Forms.ContextMenuStrip(this.components);
this.removeMemberToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.cmUsers = new System.Windows.Forms.ContextMenuStrip(this.components);
this.addUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.editUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.deleteUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addMemberToolStripMenuItemUser = new System.Windows.Forms.ToolStripMenuItem();
this.cmGroups = new System.Windows.Forms.ContextMenuStrip(this.components);
this.deleteGroupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addMemberToolStripMenuItemGroup = new System.Windows.Forms.ToolStripMenuItem();
this.tcSecurity.SuspendLayout();
this.tpGroupUsers.SuspendLayout();
this.pnlMembers.SuspendLayout();
this.cmFolders.SuspendLayout();
this.tpDefault.SuspendLayout();
this.cmMembers.SuspendLayout();
this.cmUsers.SuspendLayout();
this.cmGroups.SuspendLayout();
this.SuspendLayout();
//
// tcSecurity
//
this.tcSecurity.Controls.Add(this.tpGroupUsers);
this.tcSecurity.Controls.Add(this.tpDefault);
this.tcSecurity.Dock = System.Windows.Forms.DockStyle.Fill;
this.tcSecurity.Location = new System.Drawing.Point(0, 0);
this.tcSecurity.Name = "tcSecurity";
this.tcSecurity.SelectedIndex = 0;
this.tcSecurity.Size = new System.Drawing.Size(784, 564);
this.tcSecurity.TabIndex = 0;
//
// tpGroupUsers
//
this.tpGroupUsers.BackColor = System.Drawing.SystemColors.ButtonFace;
this.tpGroupUsers.Controls.Add(this.pnlMembers);
this.tpGroupUsers.Controls.Add(this.label6);
this.tpGroupUsers.Controls.Add(this.tvFolders);
this.tpGroupUsers.Controls.Add(this.lstUsers);
this.tpGroupUsers.Controls.Add(this.label5);
this.tpGroupUsers.Controls.Add(this.label3);
this.tpGroupUsers.Controls.Add(this.lstGroups);
this.tpGroupUsers.Location = new System.Drawing.Point(4, 22);
this.tpGroupUsers.Name = "tpGroupUsers";
this.tpGroupUsers.Padding = new System.Windows.Forms.Padding(3);
this.tpGroupUsers.Size = new System.Drawing.Size(776, 538);
this.tpGroupUsers.TabIndex = 2;
this.tpGroupUsers.Text = "Folders, Groups and Users";
//
// pnlMembers
//
this.pnlMembers.Controls.Add(this.lstMembers);
this.pnlMembers.Controls.Add(this.lblMembers);
this.pnlMembers.Location = new System.Drawing.Point(384, 304);
this.pnlMembers.Name = "pnlMembers";
this.pnlMembers.Size = new System.Drawing.Size(386, 232);
this.pnlMembers.TabIndex = 12;
//
// lstMembers
//
this.lstMembers.Dock = System.Windows.Forms.DockStyle.Fill;
this.lstMembers.FormattingEnabled = true;
this.lstMembers.Location = new System.Drawing.Point(0, 19);
this.lstMembers.Name = "lstMembers";
this.lstMembers.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.lstMembers.Size = new System.Drawing.Size(386, 212);
this.lstMembers.TabIndex = 10;
this.lstMembers.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstMembers_MouseUp);
//
// lblMembers
//
this.lblMembers.Dock = System.Windows.Forms.DockStyle.Top;
this.lblMembers.Location = new System.Drawing.Point(0, 0);
this.lblMembers.Name = "lblMembers";
this.lblMembers.Size = new System.Drawing.Size(386, 19);
this.lblMembers.TabIndex = 2;
this.lblMembers.Text = "Members";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(8, 5);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(41, 13);
this.label6.TabIndex = 7;
this.label6.Text = "Folders";
//
// tvFolders
//
this.tvFolders.ContextMenuStrip = this.cmFolders;
this.tvFolders.HideSelection = false;
this.tvFolders.Location = new System.Drawing.Point(8, 21);
this.tvFolders.Name = "tvFolders";
this.tvFolders.Size = new System.Drawing.Size(370, 511);
this.tvFolders.TabIndex = 6;
this.tvFolders.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.tvFolders_NodeMouseClick);
//
// cmFolders
//
this.cmFolders.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.createSetAdministratorGroupToolStripMenuItem,
this.createWriterGroupToolStripMenuItem,
this.createROEToolStripMenuItem,
this.createReviewerGroupToolStripMenuItem});
this.cmFolders.Name = "cmFolders";
this.cmFolders.Size = new System.Drawing.Size(249, 92);
//
// createSetAdministratorGroupToolStripMenuItem
//
this.createSetAdministratorGroupToolStripMenuItem.Name = "createSetAdministratorGroupToolStripMenuItem";
this.createSetAdministratorGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22);
this.createSetAdministratorGroupToolStripMenuItem.Text = "Create a Set Administrator Group";
this.createSetAdministratorGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem);
//
// createWriterGroupToolStripMenuItem
//
this.createWriterGroupToolStripMenuItem.Name = "createWriterGroupToolStripMenuItem";
this.createWriterGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22);
this.createWriterGroupToolStripMenuItem.Text = "Create a Writer Group";
this.createWriterGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem);
//
// createROEToolStripMenuItem
//
this.createROEToolStripMenuItem.Name = "createROEToolStripMenuItem";
this.createROEToolStripMenuItem.Size = new System.Drawing.Size(248, 22);
this.createROEToolStripMenuItem.Text = "Create a RO Editor Group";
this.createROEToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem);
//
// createReviewerGroupToolStripMenuItem
//
this.createReviewerGroupToolStripMenuItem.Name = "createReviewerGroupToolStripMenuItem";
this.createReviewerGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22);
this.createReviewerGroupToolStripMenuItem.Text = "Create a Reviewer Group";
this.createReviewerGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem);
//
// tpManageGroups
//
this.tpManageGroups.Controls.Add(this.btnAddMember);
this.tpManageGroups.Controls.Add(this.btnRemoveMember);
this.tpManageGroups.Controls.Add(this.label1);
this.tpManageGroups.Controls.Add(this.lbNonMembers);
this.tpManageGroups.Controls.Add(this.btnDeleteGroup);
this.tpManageGroups.Controls.Add(this.cbGroupSelection);
this.tpManageGroups.Controls.Add(this.lstNonMembers);
this.tpManageGroups.Controls.Add(this.pnlMembers);
this.tpManageGroups.Controls.Add(this.label3);
this.tpManageGroups.Location = new System.Drawing.Point(4, 22);
this.tpManageGroups.Name = "tpManageGroups";
this.tpManageGroups.Padding = new System.Windows.Forms.Padding(3);
this.tpManageGroups.Size = new System.Drawing.Size(776, 538);
this.tpManageGroups.TabIndex = 3;
this.tpManageGroups.Text = "Manage Groups";
this.tpManageGroups.UseVisualStyleBackColor = true;
//
// btnAddMember
//
this.btnAddMember.Location = new System.Drawing.Point(337, 190);
this.btnAddMember.Name = "btnAddMember";
this.btnAddMember.Size = new System.Drawing.Size(36, 29);
this.btnAddMember.TabIndex = 19;
this.btnAddMember.Text = "<<";
this.tt.SetToolTip(this.btnAddMember, "Add User as Members of Group");
this.btnAddMember.UseVisualStyleBackColor = true;
this.btnAddMember.Click += new System.EventHandler(this.addMember_Click);
//
// btnRemoveMember
//
this.btnRemoveMember.Location = new System.Drawing.Point(337, 254);
this.btnRemoveMember.Name = "btnRemoveMember";
this.btnRemoveMember.Size = new System.Drawing.Size(36, 29);
this.btnRemoveMember.TabIndex = 18;
this.btnRemoveMember.Text = ">>";
this.tt.SetToolTip(this.btnRemoveMember, "Remove User From Group");
this.btnRemoveMember.UseVisualStyleBackColor = true;
this.btnRemoveMember.Click += new System.EventHandler(this.removeMember_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.Location = new System.Drawing.Point(386, 42);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(97, 15);
this.label1.TabIndex = 17;
this.label1.Text = "Non Members";
//
// lbNonMembers
//
this.lbNonMembers.AutoSize = true;
this.lbNonMembers.Location = new System.Drawing.Point(386, 42);
this.lbNonMembers.Name = "lbNonMembers";
this.lbNonMembers.Size = new System.Drawing.Size(73, 13);
this.lbNonMembers.TabIndex = 17;
this.lbNonMembers.Text = "Non Members";
//
// btnDeleteGroup
//
this.btnDeleteGroup.ForeColor = System.Drawing.Color.Red;
this.btnDeleteGroup.Location = new System.Drawing.Point(668, 12);
this.btnDeleteGroup.Name = "btnDeleteGroup";
this.btnDeleteGroup.Size = new System.Drawing.Size(89, 23);
this.btnDeleteGroup.TabIndex = 16;
this.btnDeleteGroup.Text = "Delete Group";
this.btnDeleteGroup.UseVisualStyleBackColor = true;
this.btnDeleteGroup.Click += new System.EventHandler(this.deleteGroup_Click);
//
// cbGroupSelection
//
this.cbGroupSelection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbGroupSelection.FormattingEnabled = true;
this.cbGroupSelection.Location = new System.Drawing.Point(50, 9);
this.cbGroupSelection.Name = "cbGroupSelection";
this.cbGroupSelection.Size = new System.Drawing.Size(272, 21);
this.cbGroupSelection.TabIndex = 15;
this.cbGroupSelection.SelectedIndexChanged += new System.EventHandler(this.cbGroupSelection_SelectedIndexChanged);
//
// lstNonMembers
//
this.lstNonMembers.FormattingEnabled = true;
this.lstNonMembers.Location = new System.Drawing.Point(389, 61);
this.lstNonMembers.Name = "lstNonMembers";
this.lstNonMembers.Size = new System.Drawing.Size(316, 472);
this.lstNonMembers.TabIndex = 14;
//
// pnlMembers
//
this.pnlMembers.Controls.Add(this.lstMembers);
this.pnlMembers.Controls.Add(this.lblMembers);
this.pnlMembers.Location = new System.Drawing.Point(6, 42);
this.pnlMembers.Name = "pnlMembers";
this.pnlMembers.Size = new System.Drawing.Size(316, 493);
this.pnlMembers.TabIndex = 13;
//
// lstMembers
//
this.lstMembers.Dock = System.Windows.Forms.DockStyle.Fill;
this.lstMembers.FormattingEnabled = true;
this.lstMembers.Location = new System.Drawing.Point(0, 19);
this.lstMembers.Name = "lstMembers";
this.lstMembers.Size = new System.Drawing.Size(316, 474);
this.lstMembers.TabIndex = 10;
//
// lblMembers
//
this.lblMembers.Dock = System.Windows.Forms.DockStyle.Top;
this.lblMembers.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblMembers.Location = new System.Drawing.Point(0, 0);
this.lblMembers.Name = "lblMembers";
this.lblMembers.Size = new System.Drawing.Size(316, 19);
this.lblMembers.TabIndex = 2;
this.lblMembers.Text = "Selected Group Users";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(3, 12);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(39, 13);
this.label3.TabIndex = 3;
this.label3.Text = "Group:";
//
// tpManageUsers
//
this.tpManageUsers.Controls.Add(this.lblUserGroups);
this.tpManageUsers.Controls.Add(this.lstGroups);
this.tpManageUsers.Controls.Add(this.lstUsers);
this.tpManageUsers.Controls.Add(this.lblUsers);
this.tpManageUsers.Location = new System.Drawing.Point(4, 22);
this.tpManageUsers.Name = "tpManageUsers";
this.tpManageUsers.Size = new System.Drawing.Size(776, 538);
this.tpManageUsers.TabIndex = 4;
this.tpManageUsers.Text = "Manage Users";
this.tpManageUsers.UseVisualStyleBackColor = true;
//
// lblUserGroups
//
this.lblUserGroups.AutoSize = true;
this.lblUserGroups.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblUserGroups.Location = new System.Drawing.Point(268, 11);
this.lblUserGroups.Name = "lblUserGroups";
this.lblUserGroups.Size = new System.Drawing.Size(225, 15);
this.lblUserGroups.TabIndex = 9;
this.lblUserGroups.Text = "Groups That User Is a Member Of:";
//
// lstGroups
//
this.lstGroups.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.lstGroups.FormattingEnabled = true;
this.lstGroups.Location = new System.Drawing.Point(271, 36);
this.lstGroups.Name = "lstGroups";
this.lstGroups.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.lstGroups.Size = new System.Drawing.Size(502, 498);
this.lstGroups.TabIndex = 8;
this.lstGroups.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstGroups_MouseUp);
//
// lstUsers
//
this.lstUsers.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.lstUsers.FormattingEnabled = true;
this.lstUsers.Location = new System.Drawing.Point(8, 36);
this.lstUsers.Name = "lstUsers";
this.lstUsers.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.lstUsers.Size = new System.Drawing.Size(217, 498);
this.lstUsers.TabIndex = 7;
this.lstUsers.SelectedIndexChanged += new System.EventHandler(this.lstUsers_SelectedIndexChanged);
this.lstUsers.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstUsers_MouseUp);
//
// lblUsers
//
this.lblUsers.AutoSize = true;
this.lblUsers.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lblUsers.Location = new System.Drawing.Point(8, 11);
this.lblUsers.Name = "lblUsers";
this.lblUsers.Size = new System.Drawing.Size(44, 15);
this.lblUsers.TabIndex = 6;
this.lblUsers.Text = "Users";
//
// tpDefault
//
this.tpDefault.BackColor = System.Drawing.SystemColors.ButtonFace;
this.tpDefault.Controls.Add(this.label8);
this.tpDefault.Controls.Add(this.pnlGroups);
this.tpDefault.Location = new System.Drawing.Point(4, 22);
this.tpDefault.Name = "tpDefault";
this.tpDefault.Padding = new System.Windows.Forms.Padding(3);
this.tpDefault.Size = new System.Drawing.Size(776, 538);
this.tpDefault.TabIndex = 0;
this.tpDefault.Text = "Default Group";
//
// label8
//
this.label8.Location = new System.Drawing.Point(308, 6);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(460, 172);
this.label8.TabIndex = 5;
this.label8.Text = "label8";
//
// pnlGroups
//
this.pnlGroups.AutoScroll = true;
this.pnlGroups.Location = new System.Drawing.Point(3, 6);
this.pnlGroups.Name = "pnlGroups";
this.pnlGroups.Size = new System.Drawing.Size(299, 526);
this.pnlGroups.TabIndex = 4;
//
// cmMembers
//
this.cmMembers.Name = "cmGroupMembers";
this.cmMembers.Size = new System.Drawing.Size(61, 4);
//
// removeMemberToolStripMenuItem
//
this.removeMemberToolStripMenuItem.Name = "removeMemberToolStripMenuItem";
this.removeMemberToolStripMenuItem.Size = new System.Drawing.Size(165, 22);
this.removeMemberToolStripMenuItem.Text = "Remove Member";
this.removeMemberToolStripMenuItem.Click += new System.EventHandler(this.removeMemberToolStripMenuItem_Click);
//
// cmUsers
//
this.cmUsers.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.cmFolders.Name = "cmFolders";
this.cmFolders.Size = new System.Drawing.Size(249, 92);
//
// createSetAdministratorGroupToolStripMenuItem
//
this.createSetAdministratorGroupToolStripMenuItem.Name = "createSetAdministratorGroupToolStripMenuItem";
this.createSetAdministratorGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22);
this.createSetAdministratorGroupToolStripMenuItem.Text = "Create a Set Administrator Group";
this.createSetAdministratorGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem);
//
// createWriterGroupToolStripMenuItem
//
this.createWriterGroupToolStripMenuItem.Name = "createWriterGroupToolStripMenuItem";
this.createWriterGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22);
this.createWriterGroupToolStripMenuItem.Text = "Create a Writer Group";
this.createWriterGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem);
//
// createROEToolStripMenuItem
//
this.createROEToolStripMenuItem.Name = "createROEToolStripMenuItem";
this.createROEToolStripMenuItem.Size = new System.Drawing.Size(248, 22);
this.createROEToolStripMenuItem.Text = "Create a RO Editor Group";
this.createROEToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem);
//
// createReviewerGroupToolStripMenuItem
//
this.createReviewerGroupToolStripMenuItem.Name = "createReviewerGroupToolStripMenuItem";
this.createReviewerGroupToolStripMenuItem.Size = new System.Drawing.Size(248, 22);
this.createReviewerGroupToolStripMenuItem.Text = "Create a Reviewer Group";
this.createReviewerGroupToolStripMenuItem.Click += new System.EventHandler(this.createGroupMenuItem);
//
// lstUsers
//
this.lstUsers.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.lstUsers.FormattingEnabled = true;
this.lstUsers.Location = new System.Drawing.Point(630, 21);
this.lstUsers.Name = "lstUsers";
this.lstUsers.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.lstUsers.Size = new System.Drawing.Size(140, 277);
this.lstUsers.TabIndex = 5;
this.lstUsers.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstUsers_MouseUp);
this.lstUsers.SelectedIndexChanged += new System.EventHandler(this.lstUsers_SelectedIndexChanged);
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(630, 6);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(34, 13);
this.label5.TabIndex = 4;
this.label5.Text = "Users";
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(381, 6);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(41, 13);
this.label3.TabIndex = 1;
this.label3.Text = "Groups";
//
// lstGroups
//
this.lstGroups.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.lstGroups.FormattingEnabled = true;
this.lstGroups.Location = new System.Drawing.Point(384, 21);
this.lstGroups.Name = "lstGroups";
this.lstGroups.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
this.lstGroups.Size = new System.Drawing.Size(240, 277);
this.lstGroups.TabIndex = 0;
this.lstGroups.MouseUp += new System.Windows.Forms.MouseEventHandler(this.lstGroups_MouseUp);
this.lstGroups.SelectedIndexChanged += new System.EventHandler(this.lstGroups_SelectedIndexChanged);
//
// tpDefault
//
this.tpDefault.BackColor = System.Drawing.SystemColors.ButtonFace;
this.tpDefault.Controls.Add(this.label8);
this.tpDefault.Controls.Add(this.pnlGroups);
this.tpDefault.Location = new System.Drawing.Point(4, 22);
this.tpDefault.Name = "tpDefault";
this.tpDefault.Padding = new System.Windows.Forms.Padding(3);
this.tpDefault.Size = new System.Drawing.Size(776, 538);
this.tpDefault.TabIndex = 0;
this.tpDefault.Text = "Default Group";
//
// label8
//
this.label8.Location = new System.Drawing.Point(308, 6);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(460, 172);
this.label8.TabIndex = 5;
this.label8.Text = "label8";
//
// pnlGroups
//
this.pnlGroups.AutoScroll = true;
this.pnlGroups.Location = new System.Drawing.Point(3, 6);
this.pnlGroups.Name = "pnlGroups";
this.pnlGroups.Size = new System.Drawing.Size(299, 526);
this.pnlGroups.TabIndex = 4;
//
// cmMembers
//
this.cmMembers.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.removeMemberToolStripMenuItem});
this.cmMembers.Name = "cmGroupMembers";
this.cmMembers.Size = new System.Drawing.Size(166, 26);
//
// removeMemberToolStripMenuItem
//
this.removeMemberToolStripMenuItem.Name = "removeMemberToolStripMenuItem";
this.removeMemberToolStripMenuItem.Size = new System.Drawing.Size(165, 22);
this.removeMemberToolStripMenuItem.Text = "Remove Member";
this.removeMemberToolStripMenuItem.Click += new System.EventHandler(this.removeMemberToolStripMenuItem_Click);
//
// cmUsers
//
this.cmUsers.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.addUserToolStripMenuItem,
this.editUserToolStripMenuItem,
this.deleteUserToolStripMenuItem});
this.cmUsers.Name = "cmUsers";
this.cmUsers.Size = new System.Drawing.Size(145, 92);
//
// addUserToolStripMenuItem
//
this.addUserToolStripMenuItem.Name = "addUserToolStripMenuItem";
this.addUserToolStripMenuItem.Size = new System.Drawing.Size(144, 22);
this.addUserToolStripMenuItem.Text = "Add User";
this.addUserToolStripMenuItem.Click += new System.EventHandler(this.addUserToolStripMenuItem_Click);
//
// editUserToolStripMenuItem
//
this.editUserToolStripMenuItem.Name = "editUserToolStripMenuItem";
this.editUserToolStripMenuItem.Size = new System.Drawing.Size(144, 22);
this.editUserToolStripMenuItem.Text = "Edit User";
this.editUserToolStripMenuItem.Click += new System.EventHandler(this.editUserToolStripMenuItem_Click);
//
// deleteUserToolStripMenuItem
//
this.deleteUserToolStripMenuItem.Name = "deleteUserToolStripMenuItem";
this.deleteUserToolStripMenuItem.Size = new System.Drawing.Size(144, 22);
this.deleteUserToolStripMenuItem.Text = "Delete User";
this.deleteUserToolStripMenuItem.Click += new System.EventHandler(this.deleteUserToolStripMenuItem_Click);
//
// dlgManageSecurity
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(784, 564);
this.Controls.Add(this.tcSecurity);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "dlgManageSecurity";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Manage Security";
this.Load += new System.EventHandler(this.dlgManageSecurity_Load);
this.tcSecurity.ResumeLayout(false);
this.tpManageFolders.ResumeLayout(false);
this.tpManageFolders.PerformLayout();
this.cmFolders.ResumeLayout(false);
this.tpManageGroups.ResumeLayout(false);
this.tpManageGroups.PerformLayout();
this.pnlMembers.ResumeLayout(false);
this.tpManageUsers.ResumeLayout(false);
this.tpManageUsers.PerformLayout();
this.tpDefault.ResumeLayout(false);
this.cmUsers.ResumeLayout(false);
this.ResumeLayout(false);
this.deleteUserToolStripMenuItem,
this.addMemberToolStripMenuItemUser});
this.cmUsers.Name = "cmUsers";
this.cmUsers.Size = new System.Drawing.Size(153, 114);
//
// addUserToolStripMenuItem
//
this.addUserToolStripMenuItem.Name = "addUserToolStripMenuItem";
this.addUserToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.addUserToolStripMenuItem.Text = "Add User";
this.addUserToolStripMenuItem.Click += new System.EventHandler(this.addUserToolStripMenuItem_Click);
//
// editUserToolStripMenuItem
//
this.editUserToolStripMenuItem.Name = "editUserToolStripMenuItem";
this.editUserToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.editUserToolStripMenuItem.Text = "Edit User";
this.editUserToolStripMenuItem.Click += new System.EventHandler(this.editUserToolStripMenuItem_Click);
//
// deleteUserToolStripMenuItem
//
this.deleteUserToolStripMenuItem.Name = "deleteUserToolStripMenuItem";
this.deleteUserToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.deleteUserToolStripMenuItem.Text = "Delete User";
this.deleteUserToolStripMenuItem.Click += new System.EventHandler(this.deleteUserToolStripMenuItem_Click);
//
// addMemberToolStripMenuItemUser
//
this.addMemberToolStripMenuItemUser.Name = "addMemberToolStripMenuItemUser";
this.addMemberToolStripMenuItemUser.Size = new System.Drawing.Size(152, 22);
this.addMemberToolStripMenuItemUser.Text = "Add Member";
this.addMemberToolStripMenuItemUser.Click += new System.EventHandler(this.addMemberToolStripMenuItem_Click);
//
// cmGroups
//
this.cmGroups.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.deleteGroupToolStripMenuItem,
this.addMemberToolStripMenuItemGroup});
this.cmGroups.Name = "cmGroups";
this.cmGroups.Size = new System.Drawing.Size(145, 48);
//
// deleteGroupToolStripMenuItem
//
this.deleteGroupToolStripMenuItem.Name = "deleteGroupToolStripMenuItem";
this.deleteGroupToolStripMenuItem.Size = new System.Drawing.Size(144, 22);
this.deleteGroupToolStripMenuItem.Text = "Delete Group";
this.deleteGroupToolStripMenuItem.Click += new System.EventHandler(this.deleteGroupToolStripMenuItem_Click);
//
// addMemberToolStripMenuItemGroup
//
this.addMemberToolStripMenuItemGroup.Name = "addMemberToolStripMenuItemGroup";
this.addMemberToolStripMenuItemGroup.Size = new System.Drawing.Size(144, 22);
this.addMemberToolStripMenuItemGroup.Text = "Add Member";
this.addMemberToolStripMenuItemGroup.Click += new System.EventHandler(this.addMemberToolStripMenuItem_Click);
//
// dlgManageSecurity
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(784, 564);
this.Controls.Add(this.tcSecurity);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "dlgManageSecurity";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Manage Security";
this.Load += new System.EventHandler(this.dlgManageSecurity_Load);
this.tcSecurity.ResumeLayout(false);
this.tpGroupUsers.ResumeLayout(false);
this.tpGroupUsers.PerformLayout();
this.pnlMembers.ResumeLayout(false);
this.cmFolders.ResumeLayout(false);
this.tpDefault.ResumeLayout(false);
this.cmMembers.ResumeLayout(false);
this.cmUsers.ResumeLayout(false);
this.cmGroups.ResumeLayout(false);
this.ResumeLayout(false);
}
@@ -445,14 +357,20 @@ namespace VEPROMS
private System.Windows.Forms.TabControl tcSecurity;
private System.Windows.Forms.TabPage tpDefault;
private System.Windows.Forms.TabPage tpManageFolders;
private System.Windows.Forms.TabPage tpGroupUsers;
private System.Windows.Forms.ListBox lstGroups;
private System.Windows.Forms.Label lblMembers;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.ContextMenuStrip cmGroups;
private System.Windows.Forms.ListBox lstUsers;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.ContextMenuStrip cmUsers;
private System.Windows.Forms.ToolStripMenuItem addUserToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem editUserToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem deleteUserToolStripMenuItem;
private System.Windows.Forms.ContextMenuStrip cmMembers;
private System.Windows.Forms.ToolStripMenuItem removeMemberToolStripMenuItem;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.ContextMenuStrip cmMembers;
private System.Windows.Forms.ToolStripMenuItem removeMemberToolStripMenuItem;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.TreeView tvFolders;
private System.Windows.Forms.ContextMenuStrip cmFolders;
private System.Windows.Forms.ToolStripMenuItem createSetAdministratorGroupToolStripMenuItem;
@@ -461,23 +379,10 @@ namespace VEPROMS
private System.Windows.Forms.ToolStripMenuItem createReviewerGroupToolStripMenuItem;
private System.Windows.Forms.Panel pnlGroups;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.TabPage tpManageGroups;
private System.Windows.Forms.TabPage tpManageUsers;
private System.Windows.Forms.Panel pnlMembers;
private System.Windows.Forms.ListBox lstMembers;
private System.Windows.Forms.Label lblMembers;
private System.Windows.Forms.ListBox lstUsers;
private System.Windows.Forms.Label lblUsers;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.ComboBox cbGroupSelection;
private System.Windows.Forms.ListBox lstNonMembers;
private System.Windows.Forms.Button btnDeleteGroup;
private System.Windows.Forms.Label lbNonMembers;
private System.Windows.Forms.ListBox lstGroups;
private System.Windows.Forms.Button btnAddMember;
private System.Windows.Forms.Button btnRemoveMember;
private System.Windows.Forms.ToolTip tt;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label lblUserGroups;
}
private System.Windows.Forms.ToolStripMenuItem deleteGroupToolStripMenuItem;
private System.Windows.Forms.Panel pnlMembers;
private System.Windows.Forms.ListBox lstMembers;
private System.Windows.Forms.ToolStripMenuItem addMemberToolStripMenuItemUser;
private System.Windows.Forms.ToolStripMenuItem addMemberToolStripMenuItemGroup;
}
}

View File

@@ -7,492 +7,30 @@ using System.Text;
using System.Windows.Forms;
using VEPROMS.CSLA.Library;
using Volian.Base.Library;
using Volian.Controls.Library;
using System.Linq;
namespace VEPROMS
{
//C2024-047 Redesign PROMS Security Dialog
public partial class dlgManageSecurity : Form
{
#region Log4Net
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
#endregion
#region Main Form / Shared Code
private GroupInfoList myGroupInfoList;
private UserInfoList myUserInfoList;
private List<MembershipInfo> myMembershipInfoList;
private Folder myFolder;
public dlgManageSecurity()
{
InitializeComponent();
}
private void dlgManageSecurity_Load(object sender, EventArgs e)
{
//load all folders
myFolder = Folder.Get(1);
//Default to Users Tab
tcSecurity.SelectedIndex = 2;
SetupSecurity();
SetupGroups();
}
//This is called when the Index Changes for main tab Control
//it loads info for the current tab
private void changedTab(object sender, EventArgs e)
{
LoadRefreshGroupUsers();
switch (tcSecurity.SelectedIndex)
{
//Manage Folders
case 0:
SetupFolderOptions();
break;
//Manage Groups
case 1:
SetupGroups();
break;
//Manage Users (note that this is the default)
case 2:
SetupUserOptions();
break;
//Default Options tab
case 3:
SetupDefaultGroupOptions();
break;
}
}
//Loads a refreshed list of Groups and Users
private void LoadRefreshGroupUsers()
{
GroupInfoList.Reset();
myGroupInfoList = GroupInfoList.Get();
UserInfoList.Reset();
myUserInfoList = UserInfoList.Get();
}
#endregion
#region Manage Folders
//Sets up Folders
private void SetupFolderOptions()
{
if (tvFolders.Nodes.Count == 0)
{
FolderInfo fi = FolderInfo.Get(1);
LoadChildFolders(fi, null);
}
}
//loads child folders in tree view
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);
}
}
}
//Handles Creating a New Group
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);
}
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 (var ri in ril.Where(ri => ri.Name == txt))
{
string gin = string.Format("{0}s - {1}", ri.Name, fi.Name);
if (!myGroupInfoList.Any(gi => gi.GroupName == gin))
{
Group group = Group.MakeGroup(gin, null, null);
Assignment.MakeAssignment(group, Role.Get(ri.RID), Folder.Get(fi.FolderID), null);
}
}
LoadRefreshGroupUsers();
}
private void tvFolders_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
tvFolders.SelectedNode = e.Node;
}
#endregion
#region Manage Groups
//Sets up Group Options
private void SetupGroups()
{
cbGroupSelection.Items.Clear();
foreach (GroupInfo gi in myGroupInfoList)
cbGroupSelection.Items.Add(gi.GroupName);
cbGroupSelection.SelectedIndex = 0;
}
private void cbGroupSelection_SelectedIndexChanged(object sender, EventArgs e) => updateMembershipLists();
//Updates the lists of members / nonMembers
private void updateMembershipLists()
{
myMembershipInfoList = new List<MembershipInfo>();
if (cbGroupSelection.SelectedIndex > -1)
{
GroupInfo gi = myGroupInfoList[cbGroupSelection.SelectedIndex];
gi.RefreshGroupMemberships();
if (gi.GroupMembershipCount > 0)
myMembershipInfoList.AddRange(gi.GroupMemberships.Where(mi => mi.EndDate == null || mi.EndDate == string.Empty).OrderBy(x => x.MyUserUserID));
}
lstMembers.DataSource = myMembershipInfoList;
lstMembers.ValueMember = "UID";
lstMembers.DisplayMember = "MyUserUserID";
//set NonMembers to Users that are not in Members
lstNonMembers.DataSource = myUserInfoList.Select(x => x.UserID).Except(myMembershipInfoList.Select(x => x.MyUser.UserID)).ToList();
}
//Add a Member to a Group
private void addMember_Click(object sender, EventArgs e)
{
int groupIndex = cbGroupSelection.SelectedIndex;
string selectedUserID = lstNonMembers.SelectedValue.ToString();
int selectedUID = UserInfo.GetByUserID(selectedUserID).UID;
GroupInfo gi = myGroupInfoList[groupIndex];
User selectedUser = User.Get(selectedUID);
Membership.MakeMembership(selectedUser, Group.Get(gi.GID), null, "");
updateMembershipLists();
lstNonMembers.SelectedIndex = -1;
int index = lstMembers.FindString(selectedUserID);
lstMembers.SetSelected(index, true);
}
//Remove a Member From a Group
private void removeMember_Click(object sender, EventArgs e)
{
if (lstMembers.SelectedIndex > -1)
{
MembershipInfo mi = (MembershipInfo)lstMembers.SelectedItem;
string selectedUserID = mi.MyUserUserID;
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)
{
if (mi.MyGroup.GroupName == "Administrators" && mi.MyGroup.GroupMemberships.Count(mm => mm.EndDate == null || mm.EndDate == string.Empty) == 1)
{
MessageBox.Show("You must have at least 1 user assigned to the Administrators group", "One Administrator Required", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
Membership m = Membership.Get(mi.UGID);
m.EndDate = DateTime.Now.ToShortDateString();
m.Save();
updateMembershipLists();
lstMembers.SelectedIndex = -1;
lstNonMembers.SelectedItem = selectedUserID;
}
}
}
//Deletes the Currently Selected Group
private void deleteGroup_Click(object sender, EventArgs e)
{
if (cbGroupSelection.SelectedIndex < 0)
{
MessageBox.Show("You must select a group to delete", "No Group Selected", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
GroupInfo gi = myGroupInfoList[cbGroupSelection.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 && gi.GroupMemberships.Any(mi => mi.EndDate == null || mi.EndDate == string.Empty))
deleteOK = false;
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);
LoadRefreshGroupUsers();
SetupGroups();
}
}
#endregion
#region Manage Users
//Sets up UserOptions
private void SetupUserOptions()
{
lstUsers.Items.Clear();
foreach (UserInfo ui in myUserInfoList)
lstUsers.Items.Add(ui.UserID);
lstUsers.SelectedIndex = -1;
lstGroups.DataSource = null;
}
#region Manage Users - User Options
//Build Membership list based on selected user
private void lstUsers_SelectedIndexChanged(object sender, EventArgs e)
{
myMembershipInfoList = new List<MembershipInfo>();
if (lstUsers.SelectedIndex > -1)
{
UserInfo ui = myUserInfoList[lstUsers.SelectedIndex];
if (ui.UserMembershipCount > 0)
{
myMembershipInfoList.AddRange(ui.UserMemberships.Where(mi => mi.EndDate == null || mi.EndDate == string.Empty));
}
}
lstGroups.DataSource = myMembershipInfoList;
lstGroups.ValueMember = "UGID";
lstGroups.DisplayMember = "MyGroupName";
}
//Select User and set up Mouse Click Menus based on
//where click in User Box
private void lstUsers_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
int k = lstUsers.IndexFromPoint(e.Location);
if (k >= 0)
{
lstUsers.SelectedIndex = k;
editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.Visible = true;
}
else
{
addUserToolStripMenuItem.Visible = true;
editUserToolStripMenuItem.Visible = deleteUserToolStripMenuItem.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;
}
}
}
//Adds a new User
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), "", "");
//Update the User list to reflect the added user
LoadRefreshGroupUsers();
SetupUserOptions();
lstUsers.SelectedItem = u.UserID;
}
else
{
u.Delete();
}
}
//Edit a User's details
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();
//Update the User list to reflect the edited user
//this is done in case the UserID is updated so the list updates to reflect that
LoadRefreshGroupUsers();
SetupUserOptions();
lstUsers.SelectedItem = u.UserID;
}
}
}
//Delete a User
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 nummemberships = ui.UserMemberships.Count(mi => mi.EndDate == null || mi.EndDate == string.Empty);
string mem_text = nummemberships > 0 ? "\r\nNote that this will remove all memberships that this user has." : "";
if (MessageBox.Show($"Are you sure you want to delete this user?{mem_text}", "Confirm Deleting User", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
{
foreach (MembershipInfo minfo in ui.UserMemberships.Where(mi => mi.EndDate == null || mi.EndDate == string.Empty))
{
Membership m = Membership.Get(minfo.UGID);
m.EndDate = DateTime.Now.ToShortDateString();
m.Save();
}
User.Delete(ui.UID);
//Update the User list to reflect the deleted user
LoadRefreshGroupUsers();
SetupUserOptions();
lstUsers.SelectedIndex = -1;
lstGroups.DataSource = null;
}
}
#endregion
#region Manage Users - Member Options
//Adds Context Menu for when a Group is selected
private void lstGroups_MouseUp(object sender, MouseEventArgs e)
{
cmMembers.Items.Clear();
lstGroups.SelectedIndex = -1;
//shouldn<64>t be bringing up a menu in the Group box unless a user is 1st selected in the Users box.
if (e.Button == MouseButtons.Right && lstUsers.SelectedIndex > -1)
{
int k = lstGroups.IndexFromPoint(e.Location);
if (k >= 0)
{
lstGroups.SelectedIndex = k;
cmMembers.Items.Add(this.removeMemberToolStripMenuItem);
}
var groupsCanAddTo = myGroupInfoList.Select(x => new { x.GroupName, x.GID }).Except(myMembershipInfoList.Select(x => new { x.MyGroup.GroupName, x.GID }));
foreach (var possiblegroup in groupsCanAddTo)
{
ToolStripMenuItemwithValue AddToMenuItem = new ToolStripMenuItemwithValue($"Add as Member to Group: {possiblegroup.GroupName}", possiblegroup.GID);
AddToMenuItem.Click += addMemberToolStripMenuItem_Click;
cmMembers.Items.Add(AddToMenuItem);
}
cmMembers.Show(lstGroups, e.Location);
}
else if (e.Button == MouseButtons.Left)
{
int k = lstGroups.IndexFromPoint(e.Location);
if (k >= 0)
{
lstGroups.SelectedIndex = k;
}
}
}
//Adds a User to a Group
private void addMemberToolStripMenuItem_Click(object sender, EventArgs e)
{
ToolStripMenuItemwithValue item = (ToolStripMenuItemwithValue)sender;
int userIndex = lstUsers.SelectedIndex;
UserInfo ui = myUserInfoList[userIndex];
Membership.MakeMembership(User.Get(ui.UID), Group.Get((int) item.Value), null, "");
//Update the Group list to reflect the added group
LoadRefreshGroupUsers();
lstUsers_SelectedIndexChanged(sender, e);
}
//Removes a User from a Group
private void removeMemberToolStripMenuItem_Click(object sender, EventArgs e)
{
MembershipInfo mi = (MembershipInfo)lstGroups.SelectedItem;
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)
{
if (mi.MyGroup.GroupName == "Administrators" && mi.MyGroup.GroupMemberships.Count(mm => mm.EndDate == null || mm.EndDate == string.Empty) == 1)
{
MessageBox.Show("You must have at least 1 user assigned to the Administrators group", "One Administrator Required", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
Membership m = Membership.Get(mi.UGID);
m.EndDate = DateTime.Now.ToShortDateString();
m.Save();
//Update the Group list to reflect the removed group
LoadRefreshGroupUsers();
lstUsers_SelectedIndexChanged(sender, e);
}
}
#endregion
#endregion
#region Default Options
//Sets up Default Group options for Default Tab
private void SetupDefaultGroupOptions()
{
pnlGroups.Controls.Clear();
foreach (GroupInfo gi in myGroupInfoList)
@@ -518,7 +56,6 @@ namespace VEPROMS
}
}
}
//Handles changing the default group
private void rb_CheckedChanged(object sender, EventArgs e)
{
RadioButton rb = sender as RadioButton;
@@ -527,7 +64,446 @@ namespace VEPROMS
myFolder.FolderConfig.Security_Group = gi.GID;
myFolder.Save();
}
#endregion
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;
}
}
}
}
}

View File

@@ -112,27 +112,21 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="cmFolders.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>234, 17</value>
</metadata>
<metadata name="tt.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<metadata name="cmFolders.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>341, 17</value>
</metadata>
<metadata name="cmMembers.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<metadata name="cmMembers.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="cmUsers.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<metadata name="cmUsers.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>243, 17</value>
</metadata>
<metadata name="cmGroups.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>136, 17</value>
</metadata>
<metadata name="tt.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>341, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>58</value>
</metadata>
</root>

View File

@@ -98,8 +98,6 @@ namespace VEPROMS
_SelectedStepTabPanel.MyStepTabRibbon.ContActionSummaryRequest += MyStepTabRibbon_ContActionSummaryRequest;
_SelectedStepTabPanel.MyStepTabRibbon.AddProcToDVInTree -= new StepTabRibbonEvent(MyStepTabRibbon_AddProcToDocVersionInTree);
_SelectedStepTabPanel.MyStepTabRibbon.AddProcToDVInTree += new StepTabRibbonEvent(MyStepTabRibbon_AddProcToDocVersionInTree);
_SelectedStepTabPanel.MyStepTabRibbon.EnableDisableStepProperties -= EnableDisableStepProperties;
_SelectedStepTabPanel.MyStepTabRibbon.EnableDisableStepProperties += new StepTabRibbonEvent(EnableDisableStepProperties);
// F2022-024 Time Critical Action Summary
_SelectedStepTabPanel.MyStepTabRibbon.TimeCriticalActionSummaryRequest -= MyStepTabRibbon_TimeCriticalActionSummaryRequest;
_SelectedStepTabPanel.MyStepTabRibbon.TimeCriticalActionSummaryRequest += MyStepTabRibbon_TimeCriticalActionSummaryRequest;
@@ -121,7 +119,7 @@ namespace VEPROMS
//added by jcb 20130718 to support create pdf button when multi-unit and user selects a unit
pi.MyDocVersion.DocVersionConfig.SelectedSlave = pi.ProcedureConfig.SelectedSlave;
DlgPrintProcedure prnDlg = new DlgPrintProcedure(pi);
//added by jcb 20130718 to support create pdf button when multi-unit and user selects a unit
@@ -374,12 +372,12 @@ namespace VEPROMS
cmbFont.SelectedIndex = -1;
string[] parameters = System.Environment.CommandLine.Split(" ".ToCharArray());
string db = Volian.Base.Library.VlnSettings.GetDB();
if (db != null)
Database.SelectedDatabase = db;
//B2018-129 Most Recently Used list was being cleared. Needed to remove a (string) type case in the IF statement
if (!string.IsNullOrEmpty((string)Properties.Settings.Default["DefaultDB"]))
if (!string.IsNullOrEmpty((string)Properties.Settings.Default["DefaultDB"]))
Database.LastDatabase = Properties.Settings.Default.DefaultDB;
// Setup the Context menu for DisplaySearch including the symbols
@@ -418,7 +416,7 @@ namespace VEPROMS
// B2019-107 Error Log message for inconsistent PromsFixes
_MyLog.InfoFormat("\r\nSession Beginning\r\n<===={0}[SQL:{1:yyMM.ddHH}]====== User: {2}/{3} Started {4} ===============>{5}"
, Application.ProductVersion, Database.RevDate, Environment.UserDomainName, Environment.UserName, DateTime.Now.ToString("dddd MMMM d, yyyy h:mm:ss tt"), FormatInfo.Failed ?? "");
// C2022-030 Notify the user if the stored procedure in the database are not update to date
// with those in the PROMSFixes.sql delivered with the PROMS executable
string pfVersion = ExeInfo.GetAssocicatedPROMSFixesVersion();
@@ -548,7 +546,7 @@ namespace VEPROMS
tv.ProcedureCheckedOutTo += new vlnTreeViewEvent(tv_ProcedureCheckedOutTo);
tv.ViewPDF += new vlnTreeViewPdfEvent(tv_ViewPDF);
displayApplicability.ApplicabilityViewModeChanged += new DisplayApplicability.DisplayApplicabilityEvent(displayApplicability_ApplicabilityViewModeChanged);
tv.ExportImportProcedureSets += new vlnTreeViewEvent(tv_ExportImportProcedureSets);
tv.PrintTransitionReport += new vlnTreeViewEvent(tv_PrintTransitionReport);
tv.ProcessingComplete += tv_ProcessingComplete;
@@ -556,23 +554,10 @@ namespace VEPROMS
tv.CreateContinuousActionSummary += new vlnTreeViewEvent(tv_CreateContinuousActionSummary);
tv.SelectDateToStartChangeBars += tv_SelectDateToStartChangeBars;
tv.CreateTimeCriticalActionSummary += new vlnTreeViewEvent(tv_CreateTimeCriticalActionSummary);
tv.RefreshFormats += new vlnTreeViewStatusEvent(RefreshFormats);
displayBookMarks.ResetBookMarksInPROMSWindows += displayBookMarks_ResetBookMarksInPROMSWindows;
}
//C2021-035 Add Refresh Tree Option at highest level
void RefreshFormats(object sender, vlnTreeStatusEventArgs args)
{
Format.ClearFormatCache();
FormatInfo.ClearFormatInfoCache();
FormatInfo.Reset();
FormatInfoList.Reset();
Format.Reset();
FormatList.Reset();
displaySearch1.SetupContextMenu();
}
// Part of Separate Windows upgrade C2015-022
// Extend Changes to BookMark information to all of the child windows
void displayBookMarks_ResetBookMarksInPROMSWindows(object sender, EventArgs args)
@@ -589,7 +574,7 @@ namespace VEPROMS
}
}
void tv_SelectDateToStartChangeBars(object sender, vlnTreeEventArgs args)
void tv_SelectDateToStartChangeBars(object sender, vlnTreeEventArgs args)
{
ProcedureInfo pi = (args.Node as VETreeNode).VEObject as ProcedureInfo;
if (pi == null) return;
@@ -1198,7 +1183,6 @@ namespace VEPROMS
if (!MySessionInfo.CanCheckOutItem(pi.ItemID, CheckOutType.Procedure, ref message))
{
message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", "");
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
@@ -2088,10 +2072,7 @@ namespace VEPROMS
{
foreach (DisplayTabItem dti in tc.MyBar.Items)
{
//C2019-036 View Only mode work with Checked Out Procedures
// View Only Mode is no longer checked out, so no longer has an OwnerID
// This will keep those tabs from auto-closing based on the timer
if (!myList.Contains(dti.OwnerID) && dti.MyStepTabPanel.MyStepPanel.VwMode != E_ViewMode.View)
if (!myList.Contains(dti.OwnerID))
{
MyCloseTabList.PushDTI(dti);
}
@@ -2497,7 +2478,7 @@ namespace VEPROMS
//and set checkboxes based on what they are set to
UserSettings usersettings = new UserSettings(VlnSettings.UserID);
if (!Settings.Default.SeparateWindows && DisPlayTabState.Rows.Count > 0 && (usersettings.UserSetting_OpenTabs_AutoOpen || !usersettings.UserSetting_OpenTabs_Remember))
if (DisPlayTabState.Rows.Count > 0 && (usersettings.UserSetting_OpenTabs_AutoOpen || !usersettings.UserSetting_OpenTabs_Remember))
{
//will open tabs by default / ask by default
DialogResult result = DialogResult.Yes;
@@ -3932,7 +3913,6 @@ namespace VEPROMS
string message = string.Empty;
if (!MySessionInfo.CanCheckOutItem(args.ProcedureConfig.MyProcedure.ItemID, CheckOutType.Procedure, ref message))
{
message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", "");
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
this.Cursor = Cursors.Default;
return DialogResult.None;
@@ -3956,7 +3936,6 @@ namespace VEPROMS
string message = string.Empty;
if (!MySessionInfo.CanCheckOutItem(args.SectionConfig.MySection.MySectionInfo.MyProcedure.ItemID, CheckOutType.Procedure, ref message))
{
message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", "");
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
this.Cursor = Cursors.Default;
return DialogResult.None;
@@ -4757,11 +4736,6 @@ namespace VEPROMS
// B2022-026 RO Memory reduction coding (Jakes Merge)
displayRO.SetFindDocROButton(false);
displayRO.LoadTree();
//C2019-036 View Only mode work with Checked Out Procedures
//In View Only Mode - Step Properties should be disabled
EnableDisableStepProperties(sender, new StepTabRibbonEventArgs(args.MyEditItem.MyItemInfo, 0, args.MyEditItem.MyStepPanel.VwMode));
}
else
{
@@ -4793,22 +4767,6 @@ namespace VEPROMS
}
//C2019-036 View Only mode work with Checked Out Procedures
//In View Only Mode - Step Properties should be disabled
public void EnableDisableStepProperties(object sender, StepTabRibbonEventArgs args)
{
if (args.ViewMode == E_ViewMode.View && (infoTabs.Enabled || infoTabs.SelectedTab != infotabTags))
{
infoTabs.Enabled = true;
infoTabs.SelectedTab = infotabTags;
infoTabs.Enabled = false;
}
else if (args.ViewMode != E_ViewMode.View && !infoTabs.Enabled)
{
infoTabs.Enabled = true;
}
}
void _LastStepRTB_EditModeChanged(object sender, EventArgs args)
{
if (_LastStepRTB.EditMode) // going into edit mode in a cell of the grid.

View File

@@ -765,19 +765,6 @@ namespace VEPROMS.CSLA.Library
foreach (DocVersionInfo dvi in _CacheByPrimaryKey[key])
dvi.ResetProcedures();
}
//C2021-035 Add Refresh Tree Option at highest level
public static void ResetAllProcedures()
{
foreach (string key in _CacheByPrimaryKey.Keys)
{
foreach (DocVersionInfo dvi in _CacheByPrimaryKey[key])
dvi.ResetProcedures();
}
foreach (DocVersionInfo dvi in _CacheList)
dvi.ResetProcedures();
}
#region IVEReadOnlyItem
public System.Collections.IList GetChildren()
{

View File

@@ -275,14 +275,6 @@ namespace VEPROMS.CSLA.Library
}
}
//C2021-035 Add Refresh Tree Option at highest level
public static void Reset()
{
_LookupFormats?.Clear();
_LookupFormats = null;
_ = LookupFormats;
}
private static Format AddFormatToDB(Format parent, string format, bool issub, DateTime Dts, string Userid, string fmtPath, string genmacPath)
{
string fmtdata = null;
@@ -517,12 +509,7 @@ public partial class FormatInfo : IFormatOrFormatInfo
return _PROMSBaseFormat;
}
}
public static void Reset()
{
_PROMSBaseFormat = null;
}
public static FormatInfo Get(string name)
public static FormatInfo Get(string name)
{
try
{

View File

@@ -7984,20 +7984,12 @@ namespace VEPROMS.CSLA.Library
public ProcedureInfo(SafeDataReader dr) : base(dr) { }
#endif
private ProcedureInfo() : base() { ;}
public new static ProcedureInfo Get(int itemID, bool forcerefresh = false)
public new static ProcedureInfo Get(int itemID)
{
//if (!CanGetObject())
// throw new System.Security.SecurityException("User not authorized to view a Item");
try
{
//C2019-036 View Only mode work with Checked Out Procedures
// fixes caching issue
// so this forces a refresh of the cache
if (forcerefresh)
{
_CacheByPrimaryKey.Remove(itemID.ToString());
}
ProcedureInfo tmp = GetCachedByPrimaryKey(itemID);
if (tmp == null)
{

View File

@@ -1638,7 +1638,7 @@ namespace VEPROMS.CSLA.Library
// get the first enhanced section, there may be non-linked sections before first linked section:
SectionConfig firstEnhSectionConfig = pastedEnhancedProc.Sections == null ? null : pastedEnhancedProc.Sections[0].MyConfig as SectionConfig;
ItemInfo pastedEnhancedCurrentSection = null;
if (firstEnhSectionConfig?.MyEnhancedDocuments.Count > 0) pastedEnhancedCurrentSection = pastedEnhancedProc.Sections[0];
if (firstEnhSectionConfig.MyEnhancedDocuments.Count > 0) pastedEnhancedCurrentSection = pastedEnhancedProc.Sections[0];
else pastedEnhancedCurrentSection = GetNextEnhancedSection(pastedEnhancedProc.Sections[0]);
// newly pasted procedure has sections/steps, need to adjust 'MyEnhancedDocuments' config items to point to correct
@@ -1647,7 +1647,7 @@ namespace VEPROMS.CSLA.Library
foreach (ItemInfo sourceSect in Sections)
{
SectionConfig srcCfg = sourceSect.MyConfig as SectionConfig;
if (srcCfg != null && (srcCfg.Section_LnkEnh != "N") && srcCfg.MyEnhancedDocuments != null && srcCfg.MyEnhancedDocuments.Count > 0)
if (srcCfg != null && (srcCfg.Section_LnkEnh=="Y" || srcCfg.Section_LnkEnh=="T") && srcCfg.MyEnhancedDocuments != null && srcCfg.MyEnhancedDocuments.Count > 0)
{
// use pastedEnhancedCurrentSection to link to:
foreach (EnhancedDocument ed in srcCfg.MyEnhancedDocuments)
@@ -1664,7 +1664,7 @@ namespace VEPROMS.CSLA.Library
enhSectCfg.MyEnhancedDocuments[0].ItemID = sourceSect.ItemID;
enhSectCfg.SaveEnhancedDocuments();
pastedEnhancedCurrentSection.SaveConfig(enhSectCfg.ToString());
if (srcCfg.Section_LnkEnh != "T") EnhancedSetStepLinks(sourceSect, enhProc.Type); //if steps, do them for this type
if (srcCfg.Section_LnkEnh == "Y") EnhancedSetStepLinks(sourceSect, enhProc.Type); //if steps, do them for this type
pastedEnhancedCurrentSection = GetNextEnhancedSection(pastedEnhancedCurrentSection);
}
}

View File

@@ -186,7 +186,7 @@ namespace VEPROMS.CSLA.Library
if (string.IsNullOrEmpty(name))
{ name = tmpproc.DisplayText; }
message = string.Format("The procedure {0} is already checked out to {1}.\r\nWould You like to open the procedure in View Only Mode?", name, si.UserID);
message = string.Format("The procedure {0} is already checked out to {1}", name, si.UserID);
rv = rv && false;
}
else if (si.ProcessID != this.ProcessID && objectType == CheckOutType.Document)

View File

@@ -97,12 +97,6 @@ namespace VEPROMS.CSLA.Library
if (formatInfo != null && formatInfo.ToString() == formatName) return formatInfo.Get();
return null;
}
//C2021-035 Add Refresh Tree Option at highest level
public static void Reset()
{
_MyFormatInfoList?.Clear();
_MyFormatInfoList = null;
}
}
public class DocStyleListConverter : System.ComponentModel.StringConverter
{

View File

@@ -1145,12 +1145,8 @@ namespace VEPROMS.CSLA.Library
{
//string thisTab = StepInfo.Get(pitem.ItemID).MyTab.CleanText;
string thisTab = pitem.MyTab.CleanText;// StepInfo.Get(pitem.ItemID).MyTab.CleanText;
//B2025-058 remove continuous action indicator
string medittag = pitem.FormatStepData.TabData.MacroEditTag;
if (medittag != null && thisTab.StartsWith(medittag))
thisTab = thisTab.Substring(medittag.Length);
// remove delimiters of '.' and ')' in tab.
if (!hasDelim)
if (!hasDelim)
{
// get list of delimiters to remove from the format:
foreach (string rmvDelim in DelimList) thisTab = thisTab.Replace(rmvDelim, "");

View File

@@ -4341,16 +4341,6 @@ public LeftJustifyList(XmlNodeList xmlNodeList) : base(xmlNodeList) { }
return LazyLoad(ref _IncludeSectionNumAndTitle, "@IncludeSectionNumAndTitle");
}
}
//F2025-038 default (in base format) is True. The lable "SECTION" will precede the section number an title
private LazyLoad<bool> _IncludeSectionLabel;
public bool IncludeSectionLabel
{
get
{
return LazyLoad(ref _IncludeSectionLabel, "@IncludeSectionLabel");
}
}
// the font and font styles to use for the continuous action summary
private VE_Font _Font;
public VE_Font Font

View File

@@ -990,21 +990,12 @@ namespace VEPROMS.CSLA.Library
}
return tmp;
}
public static Content Get(int contentID, bool forcerefresh = false)
public static Content Get(int contentID)
{
if (!CanGetObject())
throw new System.Security.SecurityException("User not authorized to view a Content");
try
{
//C2019-036 View Only mode work with Checked Out Procedures
// fixes caching issue
// this forces a refresh of the cache for a case when need to do a hard refresh
if (forcerefresh)
{
ConvertListToDictionary();
_CacheByPrimaryKey.Remove(contentID.ToString());
}
Content tmp = GetCachedByPrimaryKey(contentID);
if (tmp == null)
{

View File

@@ -502,15 +502,6 @@ namespace VEPROMS.CSLA.Library
_FolderInfoExtension.Refresh(this);
OnChange();// raise an event
}
//C2021-035 Add Refresh Tree Option at highest level
public static void ClearFolderInfoCache()
{
_CacheByPrimaryKey.Clear();
while (_CacheList.Count > 0)
{ _CacheList[0].Dispose(); }
}
public static FolderInfo Get(int folderID)
{
//if (!CanGetObject())

View File

@@ -143,14 +143,6 @@ namespace VEPROMS.CSLA.Library
if (_CacheByParentID_Name.ContainsKey(key)) return _CacheByParentID_Name[key][0];
return null;
}
//C2021-035 Add Refresh Tree Option at highest level
public static void ClearFormatCache()
{
_CacheByPrimaryKey.Clear();
while (_CacheList.Count > 0)
{ _CacheList[0].Dispose(); }
}
#endregion
#region Business Methods
private string _ErrorMessage = string.Empty;

View File

@@ -71,13 +71,6 @@ namespace VEPROMS.CSLA.Library
if (_CacheByPrimaryKey.ContainsKey(key)) return _CacheByPrimaryKey[key][0];
return null;
}
//C2021-035 Add Refresh Tree Option at highest level
public static void ClearFormatInfoCache()
{
_CacheByPrimaryKey.Clear();
while (_CacheList.Count > 0)
{ _CacheList[0].Dispose(); }
}
#endregion
#region Business Methods
private string _ErrorMessage = string.Empty;

View File

@@ -119,15 +119,6 @@ namespace VEPROMS.CSLA.Library
return _MyUser;
}
}
public string MyUserUserID
{
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
get
{
if (_MyUser == null && _UID != 0) _MyUser = UserInfo.Get(_UID);
return _MyUser?.UserID;
}
}
private int _GID;
public int GID
{
@@ -148,15 +139,6 @@ namespace VEPROMS.CSLA.Library
return _MyGroup;
}
}
public string MyGroupName
{
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
get
{
if (_MyGroup == null && _GID != 0) _MyGroup = GroupInfo.Get(_GID);
return _MyGroup?.GroupName;
}
}
private string _StartDate = string.Empty;
public string StartDate
{

View File

@@ -188,6 +188,7 @@ namespace Volian.Controls.Library
this.tabSearchTypes.Controls.Add(this.tabControlPanel5);
this.tabSearchTypes.Controls.Add(this.tabControlPanel2);
this.tabSearchTypes.Controls.Add(this.tabControlPanel3);
this.tabSearchTypes.Controls.Add(this.tabControlPanel1);
this.tabSearchTypes.Controls.Add(this.contextMenuBar1);
this.tabSearchTypes.Dock = System.Windows.Forms.DockStyle.Top;
this.tabSearchTypes.Location = new System.Drawing.Point(0, 0);
@@ -982,6 +983,7 @@ namespace Volian.Controls.Library
this.tabControlPanel1.Controls.Add(this.lblSrchIncTran);
this.tabControlPanel1.Controls.Add(this.groupBox1);
this.tabControlPanel1.DisabledBackColor = System.Drawing.Color.Empty;
this.tabControlPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabControlPanel1.Location = new System.Drawing.Point(0, 34);
this.tabControlPanel1.Name = "tabControlPanel1";
this.tabControlPanel1.Padding = new System.Windows.Forms.Padding(1);
@@ -995,8 +997,6 @@ namespace Volian.Controls.Library
this.tabControlPanel1.Style.GradientAngle = 90;
this.tabControlPanel1.TabIndex = 17;
this.tabControlPanel1.TabItem = this.tabIncTrans;
this.tabControlPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)(( System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.tabControlPanel1.RightToLeft = System.Windows.Forms.RightToLeft.No;
//
// btnTranCvtSelToTxt
//
@@ -1732,12 +1732,6 @@ namespace Volian.Controls.Library
this.Controls.Add(this.xpStepTypes);
this.Controls.Add(this.xpSetToSearch);
this.Controls.Add(this.tabSearchTypes);
this.Controls.Add(this.tabControlPanel1);
//B2025-056 Click on Incoming Transitions
// This needs to be part of overall control
// since if it is part of tabSearchTypes,
// then when that is disabled, buttons on
// this will be also
this.Margin = new System.Windows.Forms.Padding(2);
this.Name = "DisplaySearch";
this.RightToLeft = System.Windows.Forms.RightToLeft.Yes;

View File

@@ -1857,15 +1857,14 @@ namespace Volian.Controls.Library
lbSrchResultsIncTrans.Enabled = false;
lbSrchResultsIncTrans.UseWaitCursor = true;
}
//B2025-056 Click on Incoming Transitions
// Clicking on Incoming Transitions
// will now open that item
ListBox mylb_lbSrchResults = sender as ListBox;
ListBoxAdv mylb_lbSrchResultsIncTrans = sender as ListBoxAdv;
ListBox mylb = sender as ListBox;
// If the list is being refreshed, then set the selection index to -1 (no selection)
// B2022-044: don't set selection to top of list (commented out/changed if)
if ((mylb_lbSrchResults != null || mylb_lbSrchResultsIncTrans != null) && !_SearchResults.RefreshingList)
//if (mylb != null && _SearchResults.RefreshingList && mylb.SelectedIndex != -1)
// //mylb.SelectedIndex = -1;
//else
if (mylb != null && !_SearchResults.RefreshingList)
{
_ItemInfo = (tabSearchTypes.SelectedTab == tabSearchTypes.Tabs[4]) ? lbSrchResultsIncTrans.SelectedValue as ItemInfo : lbSrchResults.SelectedValue as ItemInfo;
if ((tabSearchTypes.SelectedTab == tabSearchTypes.Tabs[1]) && (_ItemInfo != null))

View File

@@ -603,8 +603,6 @@ namespace Volian.Controls.Library
{
ItemInfo myItemInfo = myItemInfo2;
bool viewonlymode = false;
//B2025-046 Remember Tabs failing when swapping versions of PROMS
if (myItemInfo?.MyDocVersion == null) // bug fix: B2016-108 disconnected data will not have a MyDocVersion
{
@@ -622,20 +620,8 @@ namespace Volian.Controls.Library
{
if (!MySessionInfo.CanCheckOutItem(myItemInfo.MyProcedure.ItemID, CheckOutType.Procedure, ref message))
{
DisplayTabItem dti = MyBar?.Items?.OfType<DisplayTabItem>().FirstOrDefault(x => x.MyItemInfo?.ItemID == myItemInfo.MyProcedure.ItemID);
//C2019-036 View Only mode work with Checked Out Procedures
//shouldn't prompt - should just auto put in view only if already in open tab
//in view only
if (
(dti != null && dti.MyStepTabPanel.MyStepPanel.VwMode == E_ViewMode.View)
||
(SeparateWindows && VersionID == myItemInfo.MyDocVersion.VersionID)
|| //to handle special case where item will be opened in a separate window
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
viewonlymode = true;
else
return null;
FlexibleMessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return null;
}
}
else
@@ -696,7 +682,7 @@ namespace Volian.Controls.Library
// C2023-016 if a Word section and doing Find/Replace don't open Word section, position to section title in step editor instead
if (myItemInfo.MyContent.MyEntry == null || doingFindReplace) // If it is not a Word document open in step editor
{
return OpenStepTabPage(myItemInfo, setFocus, viewonlymode);
return OpenStepTabPage(myItemInfo, setFocus);
}
else // Otherwise open it in the Word editor
{
@@ -1192,7 +1178,7 @@ namespace Volian.Controls.Library
//}
//public Dictionary<DocVersionInfo, frmEnhanced> dicEnhancedDocuments = new Dictionary<DocVersionInfo, frmEnhanced>();
private DisplayTabItem OpenStepTabPage(ItemInfo myItemInfo, bool setFocus, bool viewonlymode = false)
private DisplayTabItem OpenStepTabPage(ItemInfo myItemInfo, bool setFocus)
{
ItemInfo proc = myItemInfo.MyProcedure; // Find procedure Item
string key = "Item - " + proc.ItemID.ToString();
@@ -1211,7 +1197,7 @@ namespace Volian.Controls.Library
}
else // If not already open, create a new Page
{
pg = new DisplayTabItem(this.components, this, proc, key, viewonlymode); // Open a new Procedure Tab
pg = new DisplayTabItem(this.components, this, proc, key); // Open a new Procedure Tab
_MyDisplayTabItems.Add(key, pg);
if (setFocus)
{

View File

@@ -98,18 +98,13 @@ namespace Volian.Controls.Library
}
#endregion
#region Constructors
public DisplayTabItem(IContainer container, DisplayTabControl myDisplayTabControl, ItemInfo myItemInfo, string myKey, bool viewonlymode = false)
public DisplayTabItem(IContainer container, DisplayTabControl myDisplayTabControl, ItemInfo myItemInfo, string myKey)
{
_MyItemInfo = myItemInfo;
//C2019-036 View Only mode work with Checked Out Procedures
//don't want to check out if opening in View Only Mode Due to someone else having it checked out
if (!viewonlymode)
{
if (MyItemInfo.MyContent.MyEntry == null)
OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyProcedure.ItemID, CheckOutType.Procedure);
else
OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyContent.MyEntry.DocID, CheckOutType.Document);
}
if (MyItemInfo.MyContent.MyEntry == null)
OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyProcedure.ItemID, CheckOutType.Procedure);
else
OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyContent.MyEntry.DocID, CheckOutType.Document);
//Console.WriteLine("DisplayTabItem");
_MyKey = myKey;
_MyDisplayTabControl = myDisplayTabControl;
@@ -117,7 +112,7 @@ namespace Volian.Controls.Library
InitializeComponent();
this.Click += new EventHandler(DisplayTabItem_Click);
if (myItemInfo.MyContent.MyEntry == null)
SetupStepTabPanel(viewonlymode);
SetupStepTabPanel();
else
SetupDSOTabPanel();
SetupSecurity(myItemInfo);
@@ -133,37 +128,7 @@ namespace Volian.Controls.Library
private bool MesssageShown = false;
public void SetupSecurity(ItemInfo myItem)
{
//C2019-036 View Only mode work with Checked Out Procedures
//is in View Only Mode, so do not set up the Security
if (OwnerID == 0)
{
UserInfo uiViewOnly = UserInfo.GetByUserID(Base.Library.VlnSettings.UserID);
if (uiViewOnly.IsAdministrator())
{
MyUserRole = $"{Base.Library.VlnSettings.UserID} - Administrator";
}
else if (uiViewOnly.IsSetAdministrator(myItem.MyDocVersion))
{
MyUserRole = $"{Base.Library.VlnSettings.UserID} - Set Administrator";
}
else if (uiViewOnly.IsWriter(myItem.MyDocVersion))
{
MyUserRole = $"{Base.Library.VlnSettings.UserID} - Writer";
}
else if (uiViewOnly.IsROEditor(myItem.MyDocVersion))
{
MyUserRole = $"{Base.Library.VlnSettings.UserID} - RO Editor";
}
else
{
MyUserRole = $"{Base.Library.VlnSettings.UserID} - Reviewer";
}
return;
}
UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID);
UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID);
if (ui == null)
{
@@ -281,7 +246,7 @@ namespace Volian.Controls.Library
/// <summary>
/// Creates and sets-up a StepTabPanel
/// </summary>
private void SetupStepTabPanel(bool viewonlymode = false)
private void SetupStepTabPanel()
{
((System.ComponentModel.ISupportInitialize)(_MyDisplayTabControl.MyBar)).BeginInit();
_MyDisplayTabControl.MyBar.SuspendLayout();
@@ -311,7 +276,7 @@ namespace Volian.Controls.Library
_MyDisplayTabControl.MyBar.ResumeLayout(false);
DocVersionInfo dvi = _MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo; //MyRTBItem.MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo;
if (dvi == null) return;
if (dvi.VersionType > 127 || viewonlymode)
if (dvi.VersionType > 127)
MyStepTabPanel.MyStepPanel.VwMode = E_ViewMode.View;
// C2021 - 027: Procedure level PC/PC - add _MyIteminfo to argument list
if (dvi.MultiUnitCount > 1)

View File

@@ -9,7 +9,6 @@ using System.Drawing;
using System.Text.RegularExpressions;
using Volian.Base.Library;
using JR.Utils.GUI.Forms;
using System.Linq;
namespace Volian.Controls.Library
{
@@ -387,26 +386,6 @@ namespace Volian.Controls.Library
// The following line expands the items needed to display SelectedItemInfo
ExpandAsNeeded(myItemInfo);
}
//C2019-036 View Only mode work with Checked Out Procedures
public void ResetAll()
{
List<int> itemIDs = Controls.OfType<RTBItem>().Where(t => t?.MyItemInfo?.ActiveParent != null && t.MyItemInfo.ActiveParent.GetType() == typeof(ItemInfo)).Select(x => (x.MyItemInfo.ActiveParent as ItemInfo).ItemID).Distinct().ToList();
foreach (int itemID in itemIDs)
{
ItemInfo.ResetParts(itemID);
}
// The following line actually reloads the procedure item
MyProcedureItemInfo = ItemInfo.Get(MyProcedureItemInfo.ItemID, true);
MyProcedureItemInfo.RefreshConfig();
ContentInfo.Refresh(Content.Get(MyProcedureItemInfo.MyContent.ContentID, true));
// The following line expands the items needed to display SelectedItemInfo
ExpandAsNeeded(SelectedItemInfo);
}
/// <summary>
/// Currently selected StepRTB
/// </summary>

View File

@@ -16,8 +16,6 @@ using DevComponents.DotNetBar;
using Microsoft.Win32;
using System.Diagnostics;
using JR.Utils.GUI.Forms;
using System.Collections.Concurrent;
using System.Threading.Tasks;
namespace Volian.Controls.Library
{
@@ -908,11 +906,6 @@ namespace Volian.Controls.Library
// //SetButtonAndMenuEnabling(false);
//}
private Bitmap createTextBitmap(char ch)
{
return createTextBitmap(ch, new Font("FreeMono", 18, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel));
}
private Bitmap createTextBitmap(char ch, Font objFont)
{
string txt = string.Format("{0}", ch);
Bitmap objBmpImage = new Bitmap(1, 1);
@@ -923,6 +916,8 @@ namespace Volian.Controls.Library
// Create the Font object for the image text drawing.
// later on, we could add logic to use either FreeMono or Arial Unicode MS based on the format being used
// but for now, we are going to use FreeMono to create the symbol list
Font objFont = new Font("FreeMono", 18, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
//Font objFont = new Font("Arial Unicode MS", 18, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
// Create a graphics object to measure the text's width and height.
Graphics objGraphics = Graphics.FromImage(objBmpImage);
@@ -942,6 +937,7 @@ namespace Volian.Controls.Library
objGraphics.SmoothingMode = SmoothingMode.AntiAlias;
objGraphics.TextContrast = 0;
objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias;
//objGraphics.DrawString(txt, objFont, new SolidBrush(Color.FromArgb(102, 102, 102)), 0, 0);
objGraphics.DrawString(txt, objFont, new SolidBrush(Color.Black),0,0);
objGraphics.Flush();
return (objBmpImage);
@@ -2071,9 +2067,6 @@ namespace Volian.Controls.Library
rtabHome.Select();
rtabTableGridTools.Visible = false;
SetButtonMenuEnabledDisabledOnStepType(false);
//C2019-036 View Only mode work with Checked Out Procedures
//Is in View Only Mode so show button as selected
btnEditMode.Checked = btnCMEditMode1.Checked = true;
this.Refresh();
return;
}
@@ -3345,43 +3338,10 @@ namespace Volian.Controls.Library
public void SetupAdminMode()
{
}
//C2019-036 View Only mode work with Checked Out Procedures
public event StepTabRibbonEvent EnableDisableStepProperties;
private void OnEnableDisableStepProperties(StepTabRibbonEventArgs args)
{
if (EnableDisableStepProperties != null)
EnableDisableStepProperties(this, args);
}
private void btnToggleEditView_Click(object sender, EventArgs e)
{
if (MyEditItem == null) return;
//C2019-036 View Only mode work with Checked Out Procedures
string message = string.Empty;
if (MyEditItem.MyStepPanel.VwMode == E_ViewMode.View && !MySessionInfo.CanCheckOutItem(MyEditItem.MyItemInfo.MyProcedure.ItemID, CheckOutType.Procedure, ref message))
{
//someone else has the procedure checked out so cannot swap out of view only mode
message = message.Replace("\r\nWould You like to open the procedure in View Only Mode?", "\r\n\r\nYou will be unable to turn off View Only Mode for this procedure until it is checked in by the user specified above.");
MessageBox.Show(this, message, "Procedure Already Checked Out", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
else if (MyEditItem.MyStepPanel.VwMode == E_ViewMode.View)
{
//swapping into edit mode, so check out procedure and Setup Security
(this.Parent as StepTabPanel).MyDisplayTabItem.OwnerID = MySessionInfo.CheckOutItem(MyEditItem.MyItemInfo.MyProcedure.ItemID, 0);
(this.Parent as StepTabPanel).MyDisplayTabItem.SetupSecurity(MyItemInfo);
}
else
{
//swapping into View Only mode, so check in procedure
OwnerInfo oi = OwnerInfo.GetByItemID(MyEditItem.MyItemInfo.MyProcedure.ItemID, CheckOutType.Procedure);
MySessionInfo.CheckInItem(oi.OwnerID);
}
MyEditItem.MyStepPanel.VwMode = MyEditItem.MyStepPanel.VwMode == E_ViewMode.Edit ? E_ViewMode.View : E_ViewMode.Edit;
//enable / disable the Step Properties Panel based on the ViewMode
OnEnableDisableStepProperties(new StepTabRibbonEventArgs(MyEditItem.MyItemInfo, 0, MyEditItem.MyStepPanel.VwMode));
MyEditItem.ToggleEditView(MyEditItem.MyStepPanel.VwMode);
SetButtonAndMenuEnabling(true);
SetStepButtonAndMenuEnabling(true);
@@ -3395,62 +3355,7 @@ namespace Volian.Controls.Library
// btnEnhancedDocSync.Checked = !btnEnhancedDocSync.Checked;
//}
//C2019-036 View Only mode work with Checked Out Procedures
// using a blocking collection to make it thread safe in case someone
// spams hitting the refresh button
private BlockingCollection<bool> blockingRefreshProcedure = new BlockingCollection<bool>();
//C2019-036 View Only mode work with Checked Out Procedures
private void btnRefreshProcedure_Click(object sender, EventArgs e)
{
//Consumer
Task.Run(() =>
{
//Blocks until a newRefresh Procedure Run is available
while (!blockingRefreshProcedure.IsCompleted)
{
_ = blockingRefreshProcedure.Take();
RefreshProcedure();
}
});
//Producer
Task.Run(() => { blockingRefreshProcedure.Add(true); });
}
public void RefreshProcedure()
{
StepTabPanel stab_Panel = Parent as StepTabPanel;
if (MyEditItem != null)
{
if (!MyEditItem.MyStepPanel.ContainsFocus)
this.Invoke((Action)(() => { MyEditItem.MyStepPanel.Focus(); }));
E_ViewMode mode = MyEditItem.MyStepPanel.VwMode;
Application.DoEvents();
this.Invoke((Action)(() => {MyEditItem.MyStepPanel.ResetAll();}));
Application.DoEvents();
this.Invoke((Action)(() => {MyEditItem.MyStepPanel.Refresh();}));
Application.DoEvents();
MyEditItem.MyStepPanel.VwMode = mode;
Application.DoEvents();
}
else if (stab_Panel != null)
{
if (!stab_Panel.MyStepPanel.ContainsFocus)
this.Invoke((Action)(() => {stab_Panel.MyStepPanel.Focus();}));
E_ViewMode mode = stab_Panel.MyStepPanel.VwMode;
Application.DoEvents();
this.Invoke((Action)(() => {stab_Panel.MyStepPanel.ResetAll();}));
Application.DoEvents();
this.Invoke((Action)(() => {stab_Panel.MyStepPanel.Refresh();}));
Application.DoEvents();
stab_Panel.MyStepPanel.VwMode = mode;
Application.DoEvents();
}
}
private void btnROEdit_Click(object sender, EventArgs e)
{
if (VlnSettings.ReleaseMode.Equals("DEMO"))
@@ -4285,19 +4190,15 @@ namespace Volian.Controls.Library
if (oring == eEventSource.Keyboard)
_OringFlg = 1;
int selectedSlave = MyItemInfo.MyProcedure.ProcedureConfig.SelectedSlave;
if (MyItemInfo == null) return; // if creating a pdf before rtb exists, return;
if (MyEditItem != null) MyEditItem.SaveCurrentAndContents();
MyItemInfo.MyProcedure.ProcedureConfig.SelectedSlave = selectedSlave;
OnPrintRequest(new StepTabRibbonEventArgs(MyItemInfo.MyProcedure, _OringFlg), 0);
}
private void btnPdfQuickCreate_Click(object sender, EventArgs e)
{
int selectedSlave = MyItemInfo.MyProcedure.ProcedureConfig.SelectedSlave;
if (MyItemInfo == null) return; // if creating a pdf before rtb exists, return;
if (MyEditItem != null) MyEditItem.SaveCurrentAndContents();
MyItemInfo.MyProcedure.ProcedureConfig.SelectedSlave = selectedSlave;
OnPrintRequest(new StepTabRibbonEventArgs(MyItemInfo.MyProcedure, _OringFlg), 1);
}
@@ -4960,11 +4861,10 @@ namespace Volian.Controls.Library
public class StepTabRibbonEventArgs : EventArgs
{
public StepTabRibbonEventArgs() { ; }
public StepTabRibbonEventArgs(ItemInfo proc, int oringFlg = 0, E_ViewMode viewMode = E_ViewMode.Edit)
public StepTabRibbonEventArgs(ItemInfo proc, int oringFlg = 0)
{
_Proc = proc;
OringFlg = oringFlg;
ViewMode = viewMode;
}
private ItemInfo _Proc;
@@ -4980,9 +4880,6 @@ namespace Volian.Controls.Library
get { return _OringFlg; }
set { _OringFlg = value; }
}
//C2019-036 View Only mode work with Checked Out Procedures
public E_ViewMode ViewMode { get; set; }
}
public delegate void StepTabRibbonEvent(object sender, StepTabRibbonEventArgs args);

View File

@@ -1,16 +0,0 @@
using System.Windows.Forms;
namespace Volian.Controls.Library
{
//ToolStripMenuItem with Added Value Property
public class ToolStripMenuItemwithValue : ToolStripMenuItem
{
public readonly object Value;
public ToolStripMenuItemwithValue(string text, object value)
{
Value = value;
Text = text;
}
}
}

View File

@@ -384,9 +384,6 @@
<Compile Include="TablePropertiesControl.Designer.cs">
<DependentUpon>TablePropertiesControl.cs</DependentUpon>
</Compile>
<Compile Include="ToolStripMenuItemwithValue.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="TransPanel.cs">
<SubType>Component</SubType>
</Compile>

View File

@@ -1269,11 +1269,6 @@ namespace Volian.Controls.Library
if (ok)
if (pia == null && tn.VEObject as StepInfo == null) cm.MenuItems.Add("Properties...", new EventHandler(mi_Click));
#endregion
#region Refresh_Tree
//C2021-035 Add Refresh Tree Option at highest level
if (tn == (VETreeNode)Nodes[0])
cm.MenuItems.Add("Refresh Tree", new EventHandler(mi_Click));
#endregion
//_MyLog.WarnFormat("Context Menu 7 - {0}", GC.GetTotalMemory(true));
if (fi != null && fi.HasWorkingDraft)
@@ -2357,10 +2352,6 @@ namespace Volian.Controls.Library
case "Print All Approved Procedures": //C2025-017 print all approved procedures
OnPrintAllApprovedProcedures(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
break;
//C2021-035 Add Refresh Tree Option at highest level
case "Refresh Tree":
RefreshTree();
break;
default:
if (mi.Text.StartsWith("Showing Change Bars Starting"))
OnSelectDateToStartChangeBars(this, new vlnTreeEventArgs(SelectedNode as VETreeNode, null, 0));
@@ -3935,13 +3926,6 @@ namespace Volian.Controls.Library
if (Processing != null)
Processing(this, new vlnTreeStatusEventArgs(status, message));
}
//C2021-035 Add Refresh Tree Option at highest level
public event vlnTreeViewStatusEvent RefreshFormats;
private void OnRefreshFormats(bool status, string message)
{
if (RefreshFormats != null)
RefreshFormats(this, new vlnTreeStatusEventArgs(status, message));
}
#endregion
#region SetLastValuesAndSaveIfChangedStuff
private void SetLastValues(VETreeNode node)
@@ -4664,36 +4648,6 @@ namespace Volian.Controls.Library
if (myFolder.FolderID == ((FolderInfo)obj2).FolderID) return true;
return false;
}
//C2021-035 Add Refresh Tree Option at highest level
public void RefreshTree()
{
//reload the base node
VETreeNode tbase = (VETreeNode) Nodes[0];
tbase.ChildrenLoaded = false;
//Refresh the formats
OnRefreshFormats(true, "Refreshing Formats");
//reset the procedure lists so db is re-queried in case they changed
//also clear other caches in case added steps / sections / etc...
PartInfo.ClearPartInfoCache();
ItemInfo.ClearItemInfoCache();
DocVersionInfo.ResetAllProcedures();
FolderInfo.ClearFolderInfoCache();
//Refresh the base VEPROMS object
var fldr = tbase.VEObject as FolderInfo;
if (fldr != null)
{
Invoke((Action)(() => { tbase.VEObject = FolderInfo.Get(fldr.FolderID); }));
}
//refresh the tree
Invoke((Action)(() => { tbase.RefreshNode(); }));
this.Invoke((Action)(() => { this.Update(); }));
}
}
#region DragHelper
public class DragHelper

View File

@@ -49,7 +49,7 @@ namespace Volian.Print.Library
{
if (myContAct.MyChildren.Count > 0)
if (myContAct.MyParagraph.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.AccSectionData.ContinuousActionSummaryData.IncludeSectionNumAndTitle) // only print the section title if it has Continuous Action Steps
AddSectionHeader(myContAct.MyParagraph.MyItemInfo.DisplayNumber, myContAct.MyParagraph.MyItemInfo.FormattedDisplayText, myContAct.MyParagraph.MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.AccSectionData.ContinuousActionSummaryData.IncludeSectionLabel);
AddSectionHeader(myContAct.MyParagraph.MyItemInfo.DisplayNumber, myContAct.MyParagraph.MyItemInfo.FormattedDisplayText);
foreach (pkParagraph pgh in myContAct.MyChildren) // within each section...
{
ItemInfo hlsii = GetHLSii(pgh.MyParagraph.MyItemInfo);
@@ -175,7 +175,7 @@ namespace Volian.Print.Library
WriteCell("DONE", true, true);
WriteCell("PAGE", true, false);
}
private void AddSectionHeader(string number, string title, bool IncludeSectionLabel)
private void AddSectionHeader(string number, string title)
{
if (!_FirstSection)
{
@@ -187,10 +187,7 @@ namespace Volian.Print.Library
_FirstSection = false;
Advance(2);
SetIndent(0, 0);
if (IncludeSectionLabel)
WriteCell("SECTION " + number, true, false);
else
WriteCell(number, true, false); // F2025-038 don't include the word SECTION before number and title
WriteCell("SECTION " + number, true, false);
WriteCell(" " + title, false, true);
Advance();
}

View File

@@ -1855,10 +1855,7 @@ namespace Volian.Print.Library
if (doSectionContinue) DoTopContinueMsg(cb, ref yPageStart, yTopMargin, docstyle, null);
// If "ContinueSectionHeader" (format flag) is true then print the section title with "(Continued)" appended to it
// B2020-164 added check for SpecialCaseCalvert to bypass IsSeparateSubsection STP O-67B-2 step 6.5
// B2025-060 no section continue message if previous was not in same section or sub-section
// fixes Vogtle units 3&4 3-AOP-116 Attachments 2 & 3
if ((!MyItemInfo.IsSection || MyItemInfo.IsSubsection) &&
(MyItemInfo.MyPrevious != null && MyItemInfo.ActiveSection == MyItemInfo.MyPrevious.ActiveSection) &&
if ((!MyItemInfo.IsSection || MyItemInfo.IsSubsection) &&
MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.ContinueSectionHeader &&
(!MyItemInfo.IsSection || (MyItemInfo.IsSeparateSubsection || MyItemInfo.ActiveFormat.PlantFormat.FormatData.PrintData.SpecialCaseCalvert)))
{