Fixed a bug where you could not do a RO Summary Report for “All Referenced Objects” Also made the tree selection smarter to un-check children when a parent node is checked and to uncheck a parent node when a child node is checked.

This commit is contained in:
John Jenko 2015-01-05 20:13:08 +00:00
parent 174bac97f7
commit 8c55393cbf

View File

@ -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();
}