From 8c55393cbf486595b9ce411561983b40105095f4 Mon Sep 17 00:00:00 2001 From: John Date: Mon, 5 Jan 2015 20:13:08 +0000 Subject: [PATCH] =?UTF-8?q?Fixed=20a=20bug=20where=20you=20could=20not=20d?= =?UTF-8?q?o=20a=20RO=20Summary=20Report=20for=20=E2=80=9CAll=20Referenced?= =?UTF-8?q?=20Objects=E2=80=9D=20=20Also=20made=20the=20tree=20selection?= =?UTF-8?q?=20smarter=20to=20un-check=20children=20when=20a=20parent=20nod?= =?UTF-8?q?e=20is=20checked=20and=20to=20uncheck=20a=20parent=20node=20whe?= =?UTF-8?q?n=20a=20child=20node=20is=20checked.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Volian.Controls.Library/DisplayReports.cs | 74 ++++++++++++++++--- 1 file changed, 63 insertions(+), 11 deletions(-) diff --git a/PROMS/Volian.Controls.Library/DisplayReports.cs b/PROMS/Volian.Controls.Library/DisplayReports.cs index 0cc2e0bd..5f11e78c 100644 --- a/PROMS/Volian.Controls.Library/DisplayReports.cs +++ b/PROMS/Volian.Controls.Library/DisplayReports.cs @@ -106,7 +106,16 @@ namespace Volian.Controls.Library ROList.Clear(); foreach (object rolkup in lstCheckedROs) { - if (rolkup is ROFSTLookup.rodbi) + if (rolkup == null) // All Referenced Objects selected, return list of RO databases + { + foreach (ROFSTLookup.rodbi rodbi in _MyROFSTLookup.GetRODatabaseList()) + { + rtnStr = _MyRODbID.ToString() + ":" + string.Format("{0}", rodbi.dbiID.ToString("X4")); + ROList.Add(rtnStr); + } + continue; + } + else if (rolkup is ROFSTLookup.rodbi) rtnStr = _MyRODbID.ToString() + ":" + string.Format("{0}", ((ROFSTLookup.rodbi)rolkup).dbiID.ToString("X4")); else if (rolkup is ROFSTLookup.rochild) { @@ -192,6 +201,29 @@ namespace Volian.Controls.Library tabROReports.PerformClick(); } + private void AddSelectedROChildren(DevComponents.AdvTree.NodeCollection chldrn) + { + if (chldrn.Count > 0) + { + foreach (DevComponents.AdvTree.Node n in chldrn) + { + if (n.Checked) + lstCheckedROs.Add(n.Tag); + else + AddSelectedROChildren(n.Nodes); + } + } + } + private void BuildCheckedROsList() + { + lstCheckedROs.Clear(); + DevComponents.AdvTree.Node node = advTreeRO.Nodes[0]; + if (node.Checked) // top node (all Referenced Objects) selected + lstCheckedROs.Add(node.Tag); + else + AddSelectedROChildren(node.Nodes); + } + private void EnableOrDisablePrintButton() { switch (tctrlReports.SelectedTabIndex) @@ -200,6 +232,7 @@ namespace Volian.Controls.Library btnPrintReport.Enabled = (lstCheckedDocVersions.Count > 0); break; case 1: // Referenced Objects Reports + BuildCheckedROsList(); // this list is sent to the report generator if (cbxROUsage.Checked) btnPrintReport.Enabled = (lstCheckedDocVersions.Count > 0 && lstCheckedROs.Count > 0); else @@ -701,20 +734,39 @@ namespace Volian.Controls.Library tabTransitionReports.PerformClick(); } + // when a node is checked (selected) then uncheck any of its children + private void UncheckChildren(DevComponents.AdvTree.NodeCollection chldrn) + { + if (chldrn.Count > 0) + { + foreach (DevComponents.AdvTree.Node n in chldrn) + { + if (n.Checked) + n.Checked = false; + else + UncheckChildren(n.Nodes); + } + } + } + // when a node is checked (selected), uncheck the parents, grand parents, great grand parents, etc. + private void UncheckParents(DevComponents.AdvTree.Node pNode) + { + while (pNode != null) + { + if (pNode.Checked) pNode.Checked = false; + pNode = pNode.Parent; + } + } + private void advTreeRO_AfterCheck(object sender, AdvTreeCellEventArgs e) { DevComponents.AdvTree.Node n = advTreeRO.SelectedNode; - //ROFSTLookup. rolkup = (ROFSTLookup)n.Tag; if (n.Checked) - //lstCheckedROs.Add((ROFSTLookup)n.Tag); - //lstCheckedROs.Add(rolkup); - //lstROObj.Add(n.Tag); - lstCheckedROs.Add(n.Tag); - else - //lstCheckedROs.Remove((ROFSTLookup)n.Tag); - //lstCheckedROs.Remove(rolkup); - //lstROObj.Remove(n.Tag); - lstCheckedROs.Remove(n.Tag); + { + UncheckChildren(n.Nodes); + UncheckParents(n.Parent); + } + EnableOrDisablePrintButton(); }