B2025-013 PROMS –Admin Tool Tree Behavior #513

Merged
jjenko merged 1 commits from B2025-013 into Development 2025-02-10 11:04:08 -05:00
2 changed files with 28 additions and 89 deletions

View File

@ -576,7 +576,7 @@
this.myTVdel.Name = "myTVdel"; this.myTVdel.Name = "myTVdel";
this.myTVdel.Size = new System.Drawing.Size(299, 367); this.myTVdel.Size = new System.Drawing.Size(299, 367);
this.myTVdel.TabIndex = 34; this.myTVdel.TabIndex = 34;
this.myTVdel.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.myTV_AfterCheck_DelAnn); this.myTVdel.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.myTV_AfterCheck);
// //
// btnDeleteItems // btnDeleteItems
// //

View File

@ -124,9 +124,11 @@ namespace VEPROMS
// check to see if at least one tree node is checked. // check to see if at least one tree node is checked.
// Used to determin whether to make the process button active for // Used to determin whether to make the process button active for
// Refresh Transitions and for Update RO Values // Refresh Transitions and for Update RO Values
private bool AtLeastOneNodeChecked() // B2025-013 Admin Tool Tree Behavior
//Made this generic so same logic for all the TreeViews on this form
private bool AtLeastOneNodeChecked(TreeNodeCollection col)
{ {
foreach (TreeNode tn in myTV.Nodes) foreach (TreeNode tn in col)
if (NodeIsChecked(tn)) if (NodeIsChecked(tn))
return true; return true;
return false; return false;
@ -1230,24 +1232,30 @@ namespace VEPROMS
private void myTV_AfterCheck(object sender, TreeViewEventArgs e) private void myTV_AfterCheck(object sender, TreeViewEventArgs e)
{ {
//B2025 - 013 Admin Tool Tree Behavior
//only want to perform this if
// not an unknown action
// aka is a mouse click
// if this is fire-ing because clicked a parent or a child of an item
// want this to only fire once - for the item clicked - not for parents/children
if (e.Action != TreeViewAction.Unknown) if (e.Action != TreeViewAction.Unknown)
{ {
if (e.Node.Nodes.Count > 0) if (e.Node.Nodes.Count > 0)
{ {
CheckChildNodes(e.Node, e.Node.Checked); CheckChildNodes(e.Node, e.Node.Checked);
} }
} //B2025-013 Admin Tool Tree Behavior
if (swDeleteAnnotations.Value) //if a node gets unchecked,
{ //then uncheck both its parents and children
if (e.Node.Checked) if (!e.Node.Checked)
{ {
DiselectParentNodes(e.Node.Parent); DiselectParentNodes(e.Node.Parent);
DiselectChildNodes(e.Node.Nodes); DiselectChildNodes(e.Node.Nodes);
} }
btnFixLinks.Enabled = btnDeleteItems.Enabled = AtLeastOneNodeChecked(((TreeView)sender).Nodes); // C2017-030 support for Refresh Transitions/Update RO Values
} }
btnFixLinks.Enabled = AtLeastOneNodeChecked(); // C2017-030 support for Refresh Transitions/Update RO Values
} }
private void DiselectParentNodes(TreeNode parent) private void DiselectParentNodes(TreeNode parent)
@ -1283,76 +1291,6 @@ namespace VEPROMS
} }
} }
} }
//After check model to select and deselect nodes on the delete and annotation tree.
private void myTV_AfterCheck_DelAnn(object sender, TreeViewEventArgs e)
{
if (e.Action != TreeViewAction.Unknown)
{
if (e.Node.Nodes.Count > 0)
{
CheckChildNodes_DelAnn(e.Node, e.Node.Checked);
}
}
if (e.Node.Checked)
{
// Ensure child nodes follow the parent node's state
CheckChildNodes_DelAnn(e.Node, e.Node.Checked);
}
else
{
// Automatically deselect parent nodes if current node is unchecked
if (swDeleteFolder.Value)
DiselectParentNodes_DelAnn(e.Node);
}
btnFixLinks.Enabled = AtLeastOneNodeChecked_DelAnn(); // Ensure button is enabled based on custom logic
}
private void DiselectParentNodes_DelAnn(TreeNode node)
{
TreeNode parent = node.Parent;
while (parent != null)
{
parent.Checked = false;
parent = parent.Parent;
}
}
private void DiselectChildNodes_DelAnn(TreeNodeCollection children)
{
foreach (TreeNode child in children)
{
child.Checked = false;
DiselectChildNodes_DelAnn(child.Nodes);
}
}
private void CheckChildNodes_DelAnn(TreeNode treeNode, bool isChecked)
{
foreach (TreeNode tn in treeNode.Nodes)
{
tn.Checked = isChecked;
if (tn.Nodes.Count > 0)
CheckChildNodes_DelAnn(tn, isChecked);
}
}
private bool AtLeastOneNodeChecked_DelAnn()
{
foreach (TreeNode node in myTV.Nodes)
{
if (node.Checked || AnyChildNodeChecked_DelAnn(node))
return true;
}
return false;
}
private bool AnyChildNodeChecked_DelAnn(TreeNode node)
{
foreach (TreeNode childNode in node.Nodes)
{
if (childNode.Checked || AnyChildNodeChecked_DelAnn(childNode))
return true;
}
return false;
}
private ProgressBarItem _ProgressBar = null; private ProgressBarItem _ProgressBar = null;
@ -1788,14 +1726,24 @@ namespace VEPROMS
List<ProcedureInfo> pil = new List<ProcedureInfo>(); List<ProcedureInfo> pil = new List<ProcedureInfo>();
List<DocVersionInfo> dvil = new List<DocVersionInfo>(); List<DocVersionInfo> dvil = new List<DocVersionInfo>();
//B2025-013 Admin Tool Tree Behavior
//For Procedures & Doc Versions
//To avoid processing duplicates
//only want to add highest nodes selected
// i.e. if both an item and it's parent is checked, then add the parent
// not each individual item
// if a parent isn't checked, then add the individual item
// one exception to this is if the parent is not in the docversions
// for example: the top node - VEPROMS
//if that is selected, then we will add its children instead of it.
// Create a list of procedures the user selected // Create a list of procedures the user selected
foreach (TreeNode tn in myProcedures.Keys) foreach (TreeNode tn in myProcedures.Keys)
if (tn.Checked) if (tn.Checked && (tn.Parent == null || !tn.Parent.Checked || !myDocVersions.ContainsKey(tn.Parent)))
pil.Add(myProcedures[tn]); pil.Add(myProcedures[tn]);
// Create a list of doc versions the user selected // Create a list of doc versions the user selected
foreach (TreeNode tn in myDocVersions.Keys) foreach (TreeNode tn in myDocVersions.Keys)
if (tn.Checked) if (tn.Checked && (tn.Parent == null || !tn.Parent.Checked || !myDocVersions.ContainsKey(tn.Parent)))
dvil.Add(myDocVersions[tn]); dvil.Add(myDocVersions[tn]);
bool cancelledOut = false; // Flag to indicate if the process should be cancelled bool cancelledOut = false; // Flag to indicate if the process should be cancelled
@ -1987,15 +1935,6 @@ namespace VEPROMS
return false; return false;
} }
} }
public List<ProcedureInfo> RetrieveChkAnnotations()
{
List<ProcedureInfo> pil = new List<ProcedureInfo>();
foreach (TreeNode tn in myProcedures.Keys)
if (tn.Checked)
pil.Add(myProcedures[tn]);
return pil;
}
//C2025-011 RO Update Admin Tool Memory Enhancements //C2025-011 RO Update Admin Tool Memory Enhancements
private void txtProcess_TextChanged(object sender, EventArgs e) private void txtProcess_TextChanged(object sender, EventArgs e)