B2017-176: Search Panel - Remove Working Draft Nodes from Tree
This commit is contained in:
parent
01fcb29d28
commit
d80c80f66b
@ -98,6 +98,8 @@ namespace Volian.Controls.Library
|
||||
_MyRODbID = _MyDocVersion.DocVersionAssociations[0].MyROFst.RODbID;
|
||||
}
|
||||
}
|
||||
else
|
||||
MyROFSTLookup = null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -156,14 +158,18 @@ namespace Volian.Controls.Library
|
||||
|
||||
void tabSearchTypes_SelectedTabChanged(object sender, TabStripTabChangedEventArgs e)
|
||||
{
|
||||
if (e.NewTab == tabTranSearch)
|
||||
if (e.NewTab == tabROSearch)
|
||||
{
|
||||
LoadROComboTree();
|
||||
}
|
||||
else if (e.NewTab == tabTranSearch)
|
||||
{
|
||||
//enable-disable doc version nodes based on version type if selected
|
||||
if (cbxTranVersion.SelectedIndex > -1)
|
||||
{
|
||||
if (dicExpandedDocVersionNodes.Count > 0)
|
||||
if (dicExpandedFolderNodes.Count > 0)
|
||||
{
|
||||
foreach (DevComponents.AdvTree.Node n in dicExpandedDocVersionNodes.Keys)
|
||||
foreach (DevComponents.AdvTree.Node n in dicExpandedFolderNodes.Keys)
|
||||
{
|
||||
DocVersionInfo dvi = (DocVersionInfo)n.Tag;
|
||||
if(cbxTranVersion.Tag.ToString().Contains(dvi.VersionID.ToString()))
|
||||
@ -196,15 +202,15 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (DevComponents.AdvTree.Node n in dicExpandedDocVersionNodes.Keys)
|
||||
foreach (DevComponents.AdvTree.Node n in dicExpandedFolderNodes.Keys)
|
||||
n.Enabled = true;
|
||||
if (dicSelectedDocVersionNodes.Count > 0)
|
||||
if (dicSelectedFolderNodes.Count > 0)
|
||||
{
|
||||
foreach (DevComponents.AdvTree.Node n in dicSelectedDocVersionNodes.Keys)
|
||||
foreach (DevComponents.AdvTree.Node n in dicSelectedFolderNodes.Keys)
|
||||
{
|
||||
n.Enabled = true;
|
||||
}
|
||||
dicSelectedDocVersionNodes.Clear();
|
||||
dicSelectedFolderNodes.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -291,12 +297,16 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
cbxTranVersion.Tag = versionList;
|
||||
cbxTranFormatFillIn(versionList);
|
||||
if (dicExpandedDocVersionNodes.Count > 0)
|
||||
if (dicExpandedFolderNodes.Count > 0)
|
||||
{
|
||||
foreach (DevComponents.AdvTree.Node n in dicExpandedDocVersionNodes.Keys)
|
||||
foreach (DevComponents.AdvTree.Node n in dicExpandedFolderNodes.Keys)
|
||||
{
|
||||
DocVersionInfo dvi = (DocVersionInfo)n.Tag;
|
||||
if (cbxTranVersion.Tag.ToString().Contains(dvi.VersionID.ToString()))
|
||||
FolderInfo fi = (FolderInfo)n.Tag;
|
||||
// if this folder has a docversion, use its id:
|
||||
string svid = null;
|
||||
if (fi.FolderDocVersionCount > 0)
|
||||
svid = fi.FolderDocVersions[0].VersionID.ToString();
|
||||
if (cbxTranVersion.Tag.ToString().Contains(svid))
|
||||
n.Enabled = true;
|
||||
else
|
||||
n.Enabled = false;
|
||||
@ -304,10 +314,14 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
|
||||
List<DevComponents.AdvTree.Node> uncheckNodes = new List<Node>();
|
||||
foreach (DevComponents.AdvTree.Node n in dicSelectedDocVersionNodes.Keys)
|
||||
foreach (DevComponents.AdvTree.Node n in dicSelectedFolderNodes.Keys)
|
||||
{
|
||||
DocVersionInfo dvi = (DocVersionInfo)n.Tag;
|
||||
if (!versionList.Contains(dvi.VersionID.ToString()))
|
||||
FolderInfo fi = (FolderInfo)n.Tag; // this was crashing in old version of code
|
||||
// if this folder has a docversion, use its id:
|
||||
string svid = null;
|
||||
if (fi.FolderDocVersionCount > 0)
|
||||
svid = fi.FolderDocVersions[0].VersionID.ToString();
|
||||
if (svid !=null && !versionList.Contains(svid))
|
||||
uncheckNodes.Add(n);
|
||||
else
|
||||
n.Enabled = true;
|
||||
@ -323,14 +337,14 @@ namespace Volian.Controls.Library
|
||||
if (MessageBox.Show(this, "Do you want to expand to all relevant procedure sets for the selected format?", "Expand Procedure Sets", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
{
|
||||
lstCheckedDocVersions.Clear();
|
||||
foreach (DevComponents.AdvTree.Node n in dicSelectedDocVersionNodes.Keys)
|
||||
foreach (DevComponents.AdvTree.Node n in dicSelectedFolderNodes.Keys)
|
||||
uncheckNodes.Add(n);
|
||||
while (uncheckNodes.Count > 0)
|
||||
{
|
||||
uncheckNodes[0].Checked = false;
|
||||
uncheckNodes.Remove(uncheckNodes[0]);
|
||||
}
|
||||
dicSelectedDocVersionNodes.Clear();
|
||||
dicSelectedFolderNodes.Clear();
|
||||
}
|
||||
}
|
||||
this.Cursor = Cursors.Default;
|
||||
@ -512,9 +526,12 @@ namespace Volian.Controls.Library
|
||||
cntnd++;
|
||||
if (fic.ChildFolderCount > 0 || fic.FolderDocVersionCount > 0) // allow for '+' for tree expansion
|
||||
{
|
||||
DevComponents.AdvTree.Node tnt = new DevComponents.AdvTree.Node();
|
||||
tnt.Text = "VLN_DUMMY";
|
||||
newnode.Nodes.Add(tnt);
|
||||
if (fic.ChildFolderCount > 0) // B2017-176: Do not display the Working Draft node (don't create dummy for expander)
|
||||
{
|
||||
DevComponents.AdvTree.Node tnt = new DevComponents.AdvTree.Node();
|
||||
tnt.Text = "VLN_DUMMY";
|
||||
newnode.Nodes.Add(tnt);
|
||||
}
|
||||
topnode.Nodes.Add(newnode);
|
||||
}
|
||||
}
|
||||
@ -525,7 +542,6 @@ namespace Volian.Controls.Library
|
||||
newnode.Text = fi.ToString();
|
||||
newnode.Tag = fi;
|
||||
AddCheckBox(true, newnode);//C2016-045 Allow Folders to be selected.
|
||||
AddDocVersionNodes(newnode, fi, true);
|
||||
topnode.Nodes.Add(newnode);
|
||||
lstCheckedDocVersions.Add(Mydocversion);
|
||||
buildSetToSearchPanelTitle();
|
||||
@ -565,8 +581,8 @@ namespace Volian.Controls.Library
|
||||
// }
|
||||
// vlnStackTrace.ShowStackLocal(e.Node.Text,1,10);
|
||||
//}
|
||||
private Dictionary<DevComponents.AdvTree.Node, bool> dicSelectedDocVersionNodes = new Dictionary<DevComponents.AdvTree.Node, bool>();
|
||||
private Dictionary<DevComponents.AdvTree.Node, bool> dicExpandedDocVersionNodes = new Dictionary<DevComponents.AdvTree.Node, bool>();
|
||||
private Dictionary<DevComponents.AdvTree.Node, bool> dicSelectedFolderNodes = new Dictionary<DevComponents.AdvTree.Node, bool>();
|
||||
private Dictionary<DevComponents.AdvTree.Node, bool> dicExpandedFolderNodes = new Dictionary<DevComponents.AdvTree.Node, bool>();
|
||||
void advTreeProcSets_BeforeExpand(object sender, DevComponents.AdvTree.AdvTreeNodeCancelEventArgs e)
|
||||
{
|
||||
DevComponents.AdvTree.Node par = e.Node;
|
||||
@ -588,46 +604,29 @@ namespace Volian.Controls.Library
|
||||
newnode.Tag = fic;
|
||||
par.Nodes.Add(newnode);
|
||||
AddCheckBox(true, newnode);//C2016-045 Allow Folders to be selected.
|
||||
if (fic.HasChildren) // allow for '+' for tree expansion
|
||||
newnode.Enabled = true;
|
||||
if (fic.ChildFolderCount > 0) // B2017-176: Only expand if folder has folders (not working draft nodes)
|
||||
{
|
||||
DevComponents.AdvTree.Node tnt = new DevComponents.AdvTree.Node();
|
||||
tnt.Text = "VLN_DUMMY";
|
||||
newnode.Nodes.Add(tnt);
|
||||
// B2017-176: Only expand if folder has folders (not working draft nodes): the following was moved from the code
|
||||
// that would check if this should be enabled if seraching for transition types. The transition controls
|
||||
// had a list of associated docversions, so needed to get the docversion in the folder:
|
||||
if (tabSearchTypes.SelectedTab == tabTranSearch)
|
||||
{
|
||||
if (!dicSelectedFolderNodes.ContainsKey(newnode)) dicSelectedFolderNodes.Add(newnode, false);
|
||||
// get the docversion for this folder, if it has one and determine whether it is enabled for transitions:
|
||||
string svid = null;
|
||||
if (fic.FolderDocVersionCount > 0)
|
||||
svid = fic.FolderDocVersions[0].VersionID.ToString();
|
||||
newnode.Enabled = svid != null && cbxTranVersion.Tag != null ? cbxTranVersion.Tag.ToString().Contains(svid) : false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (fi.FolderDocVersionCount > 0)
|
||||
{
|
||||
AddDocVersionNodes(par, fi, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void AddDocVersionNodes(DevComponents.AdvTree.Node par, FolderInfo fi, bool isChecked)
|
||||
{
|
||||
foreach (DocVersionInfo dv in fi.FolderDocVersions)
|
||||
{
|
||||
//if ((VersionTypeEnum)dv.VersionType == VersionTypeEnum.WorkingDraft)
|
||||
//{
|
||||
DevComponents.AdvTree.Node newnode = new DevComponents.AdvTree.Node();
|
||||
newnode.Text = dv.ToString();
|
||||
newnode.Tag = dv;
|
||||
newnode.Selectable = true;
|
||||
AddCheckBox(true, newnode);//C2016-045 Allow Folders to be selected.
|
||||
newnode.Checked = isChecked;
|
||||
if (tabSearchTypes.SelectedTab == tabTranSearch)
|
||||
{
|
||||
if (!dicSelectedDocVersionNodes.ContainsKey(newnode)) dicSelectedDocVersionNodes.Add(newnode, false);
|
||||
newnode.Enabled = cbxTranVersion.Tag != null ? cbxTranVersion.Tag.ToString().Contains(dv.VersionID.ToString()) : false;
|
||||
}
|
||||
else
|
||||
newnode.Enabled = true;
|
||||
par.Nodes.Add(newnode);
|
||||
dicExpandedDocVersionNodes.Add(newnode, newnode.Enabled);
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
private Node LookInTree(NodeCollection monkeys, string bananna)
|
||||
{
|
||||
Node foundit = null;
|
||||
@ -657,7 +656,7 @@ namespace Volian.Controls.Library
|
||||
//crumbs.Push(Mydocversion.MyFolder.MyParent.Name); // ex: "STPNOC-South Texas"
|
||||
//crumbs.Push(advTreeProcSets.Nodes[0].Text); //top node of my tree
|
||||
|
||||
crumbs.Push(Mydocversion.Name); // ex: "working draft"
|
||||
//crumbs.Push(Mydocversion.Name); // ex: "working draft"
|
||||
crumbs.Push(Mydocversion.MyFolder.Name); // ex: "Emergency Procedures"
|
||||
FolderInfo fi = Mydocversion.MyFolder.MyParent;
|
||||
while (fi != null)
|
||||
@ -688,18 +687,63 @@ namespace Volian.Controls.Library
|
||||
#region ROFST Combo Tree
|
||||
private void LoadROComboTree()
|
||||
{
|
||||
if (_MyROFSTLookup == null) return;
|
||||
cmboTreeROs.Nodes.Clear();
|
||||
// if only one docversion selected, this RoFst can be used. If more than one or none (none is all docversions), then check if they
|
||||
// use the same RO fst. If not, put a message as the first tree node and return, otherwise, load the tree.
|
||||
List<DocVersionInfo> dvilTmp = new List<DocVersionInfo>();
|
||||
if (lstCheckedDocVersions == null || lstCheckedDocVersions.Count == 0)
|
||||
{
|
||||
DocVersionInfoList dvil = DocVersionInfoList.Get();
|
||||
foreach (DocVersionInfo dvi in dvil) dvilTmp.Add(dvi);
|
||||
}
|
||||
else
|
||||
dvilTmp = lstCheckedDocVersions;
|
||||
|
||||
bool same = true;
|
||||
// get the first rofstId for comparing to the rest:
|
||||
int rofstId = (dvilTmp.Count > 0)? (dvilTmp[0].DocVersionAssociations != null && dvilTmp[0].DocVersionAssociations.Count > 0) ? dvilTmp[0].DocVersionAssociations[0].ROFstID: -1 : -1;
|
||||
|
||||
// for remaining folder/docversions in the list, check if they have an associated rofst & if so, if it is the same as the first in list.
|
||||
for (int i = 1; i < dvilTmp.Count; i++)
|
||||
{
|
||||
if (dvilTmp[i].DocVersionAssociations != null && dvilTmp[i].DocVersionAssociations.Count > 0)
|
||||
{
|
||||
if (rofstId != dvilTmp[i].DocVersionAssociations[0].ROFstID)
|
||||
{
|
||||
same = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// rofsts for selected folder/docversions are not the same, cannot do an ro search:
|
||||
if (!same)
|
||||
{
|
||||
DevComponents.AdvTree.Node tn = new DevComponents.AdvTree.Node();
|
||||
tn.Text = "Incompatible Referenced Objects in selected folders";
|
||||
cmboTreeROs.Nodes.Add(tn);
|
||||
return;
|
||||
}
|
||||
this.cmboTreeROs.AdvTree.BeforeExpand += new DevComponents.AdvTree.AdvTreeNodeCancelEventHandler(this.cmboTreeROs_BeforeExpand);
|
||||
cmboTreeROs.AdvTree.AfterExpand += new AdvTreeNodeEventHandler(AdvTree_AfterExpandorCollapse);
|
||||
cmboTreeROs.AdvTree.AfterCollapse += new AdvTreeNodeEventHandler(AdvTree_AfterExpandorCollapse);
|
||||
for (int i = 0; i < _MyROFSTLookup.myHdr.myDbs.Length; i++)
|
||||
// populate the tree - only 1 folder/docversion is selected or all selected use the same rofst:
|
||||
if (lstCheckedDocVersions != null && lstCheckedDocVersions.Count > 0)
|
||||
{
|
||||
DevComponents.AdvTree.Node tn = new DevComponents.AdvTree.Node();
|
||||
tn.Text = _MyROFSTLookup.myHdr.myDbs[i].dbiTitle;
|
||||
tn.Tag = _MyROFSTLookup.myHdr.myDbs[i];
|
||||
cmboTreeROs.Nodes.Add(tn);
|
||||
AddDummyGroup(_MyROFSTLookup.myHdr.myDbs[i], tn);
|
||||
_MyDocVersion = lstCheckedDocVersions[0];
|
||||
if (_MyDocVersion.DocVersionAssociations != null && _MyDocVersion.DocVersionAssociations.Count > 0)
|
||||
{
|
||||
_MyROFSTLookup = _MyDocVersion.DocVersionAssociations[0].MyROFst.GetROFSTLookup(_MyDocVersion);
|
||||
|
||||
for (int i = 0; i < _MyROFSTLookup.myHdr.myDbs.Length; i++)
|
||||
{
|
||||
DevComponents.AdvTree.Node tn = new DevComponents.AdvTree.Node();
|
||||
tn.Text = _MyROFSTLookup.myHdr.myDbs[i].dbiTitle;
|
||||
tn.Tag = _MyROFSTLookup.myHdr.myDbs[i];
|
||||
cmboTreeROs.Nodes.Add(tn);
|
||||
AddDummyGroup(_MyROFSTLookup.myHdr.myDbs[i], tn);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
void AdvTree_AfterExpandorCollapse(object sender, AdvTreeNodeEventArgs e)
|
||||
@ -1505,65 +1549,72 @@ namespace Volian.Controls.Library
|
||||
|
||||
#region ProcSetSelection
|
||||
private int _MyRODbID;
|
||||
private static bool checkingChildren = false;
|
||||
private void advTreeProcSets_AfterCheck(object sender, DevComponents.AdvTree.AdvTreeCellEventArgs e)
|
||||
{
|
||||
// this method gets called if child nodes get checked by the code, return if doing this process.
|
||||
if (checkingChildren) return;
|
||||
DevComponents.AdvTree.Node n = advTreeProcSets.SelectedNode;
|
||||
dicSelectedDocVersionNodes[n] = n.Checked;
|
||||
dicSelectedFolderNodes[n] = n.Checked;
|
||||
// if this tree node is checked, and there are children, check the children too.
|
||||
if (n.Checked)
|
||||
{
|
||||
n.Style = DevComponents.AdvTree.NodeStyles.Apple;
|
||||
if (n.Tag is DocVersionInfo)//If it is a DocVersion add one DocVersion ID
|
||||
{
|
||||
lstCheckedDocVersions.Add((DocVersionInfo)n.Tag);
|
||||
RefreshStepTypes();// Refresh Step Types after Working Draft is checked.
|
||||
if (lstCheckedDocVersions.Count == 1)//Mydocversion == null)
|
||||
{
|
||||
Mydocversion = (DocVersionInfo)n.Tag;
|
||||
StartAdvTreeStepTypesFillIn();// B2016-258 Hang after selecting a procedure if the Step Type panel is open on the search panel
|
||||
}
|
||||
}
|
||||
else if (n.Tag is FolderInfo) // If it is a folder add all of the doc version children
|
||||
{
|
||||
AddAllVersions(n.Tag as FolderInfo);
|
||||
}
|
||||
checkingChildren = true;
|
||||
if (n.Nodes != null && n.Nodes.Count > 0 && n.Nodes[0].Text != "VLN_DUMMY") CheckTreeNodeChildren(n.Nodes);
|
||||
checkingChildren = false;
|
||||
}
|
||||
else
|
||||
// if the selected folder has a docversion, handle it:
|
||||
FolderInfo fi = (FolderInfo)n.Tag;
|
||||
RefreshLstCheckedDocVersions();
|
||||
RefreshStepTypes();// Refresh Step Types after Working Draft is checked.
|
||||
if (lstCheckedDocVersions.Count == 1 && fi.FolderDocVersions != null && fi.FolderDocVersions.Count > 0)
|
||||
{
|
||||
n.Style = null;
|
||||
if (n.Tag is DocVersionInfo)// If docVersion Remove 1 DocVersion
|
||||
{
|
||||
lstCheckedDocVersions.Remove((DocVersionInfo)n.Tag);
|
||||
RefreshStepTypes();// Refresh Step Types after Working Draft is unchecked.
|
||||
if (lstCheckedDocVersions.Count == 1)
|
||||
{
|
||||
if (Mydocversion != lstCheckedDocVersions[0])
|
||||
{
|
||||
Mydocversion = lstCheckedDocVersions[0];
|
||||
StartAdvTreeStepTypesFillIn();// B2016-258 Hang after selecting a procedure if the Step Type panel is open on the search panel
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (lstCheckedDocVersions.Count == 0)
|
||||
Mydocversion = null;
|
||||
// do this if either none, or more than one procedure set selected
|
||||
ResetStepTypes();//
|
||||
}
|
||||
}
|
||||
else if (n.Tag is FolderInfo) // If foldre remove all docversion children.
|
||||
{
|
||||
RemoveAllVersions(n.Tag as FolderInfo);
|
||||
}
|
||||
Mydocversion = fi.FolderDocVersions[0];
|
||||
StartAdvTreeStepTypesFillIn();// B2016-258 Hang after selecting a procedure if the Step Type panel is open on the search panel
|
||||
}
|
||||
//// Enable the RO combo list only if at least one procedure set node
|
||||
//// is selected
|
||||
//cmboTreeROs.Enabled = (lstCheckedDocVersions.Count > 0);
|
||||
//gpFindROs.Enabled = cmboTreeROs.Enabled;
|
||||
|
||||
SetupContextMenu();
|
||||
|
||||
buildSetToSearchPanelTitle();
|
||||
}
|
||||
// check all folder nodes below this
|
||||
private void CheckTreeNodeChildren(NodeCollection nodeCollection)
|
||||
{
|
||||
foreach (Node tn in nodeCollection)
|
||||
{
|
||||
if (!tn.Checked) tn.Checked = true;
|
||||
if (tn.Nodes != null && tn.Nodes.Count > 0 && tn.Nodes[0].Text != "VLN_DUMMY") CheckTreeNodeChildren(tn.Nodes);
|
||||
}
|
||||
}
|
||||
// The 'lstCheckedDocVersions' maintains a list of the docversions that are associated with folders that are checked
|
||||
// on the search tree of folders, i.e. procedure sets that should be included in the search.
|
||||
private void RefreshLstCheckedDocVersions()
|
||||
{
|
||||
lstCheckedDocVersions.Clear();
|
||||
AddFromTreeNodes(advTreeProcSets.Nodes); // add docversions to the list
|
||||
LoadROComboTree(); // reset the ro tree based on docversion selections.
|
||||
}
|
||||
private void AddFromTreeNodes(NodeCollection nodeCollection)
|
||||
{
|
||||
foreach (Node tn in nodeCollection)
|
||||
AddFromTreeNode(tn);
|
||||
}
|
||||
private void AddFromTreeNode(Node tn)
|
||||
{
|
||||
if (tn.Checked)
|
||||
{
|
||||
tn.Style = DevComponents.AdvTree.NodeStyles.Apple; // sets green background on selected folder(s)
|
||||
FolderInfo fi = (FolderInfo)tn.Tag;
|
||||
// if this folder has a docversion, use its id:
|
||||
if (tn.Nodes != null && tn.Nodes.Count > 0 && tn.Nodes[0].Text != "VLN_DUMMY") // Folder has been expanded, so add its docversion list
|
||||
{
|
||||
if (fi.FolderDocVersionCount > 0) lstCheckedDocVersions.Add(fi.FolderDocVersions[0]);
|
||||
}
|
||||
else // it has not been expanded process all below.
|
||||
AddAllChildVersions(fi);
|
||||
}
|
||||
else // not checked, set style so no background color
|
||||
tn.Style = null;
|
||||
if (tn.Nodes != null) AddFromTreeNodes(tn.Nodes);
|
||||
}
|
||||
private void RemoveAllVersions(FolderInfo child)
|
||||
{
|
||||
RemoveAllChildVersions(child);
|
||||
@ -1606,7 +1657,7 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
if (formatName != dvi.ActiveFormat.Name)
|
||||
{
|
||||
ResetStepTypes("... folders selected include mutliple formats");
|
||||
ResetStepTypes("...folders selected include multiple formats");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user