From 09b1cce695d691eb03ee4ff119f3aa7fc72853da Mon Sep 17 00:00:00 2001 From: Kathy Date: Wed, 15 Feb 2012 15:02:06 +0000 Subject: [PATCH] --- .../DisplayTransition.cs | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/PROMS/Volian.Controls.Library/DisplayTransition.cs b/PROMS/Volian.Controls.Library/DisplayTransition.cs index 177fcfd2..2fd26df1 100644 --- a/PROMS/Volian.Controls.Library/DisplayTransition.cs +++ b/PROMS/Volian.Controls.Library/DisplayTransition.cs @@ -161,7 +161,7 @@ namespace Volian.Controls.Library cbTranProcsFillIn(_CurrentProcedure); if (_CurrentProcedure.Sections != null) { - cbTranSectsFillIn(secitm, secitm == null ? -1 : secitm.ItemID); + cbTranSectsFillIn(secitm, secitm == null ? -1 : secitm.ItemID, true); // Fill step items, passing in the active step to the selected item, or the first // step if the selection was not at the step level. ItemInfo stpitm = null; @@ -415,6 +415,14 @@ namespace Volian.Controls.Library tvTran.Nodes.Clear(); groupPanelTranstionSteps.Style.BackColor = _OrigGroupPanelSteps; if (startitm == null) return; + + // if metasections, and the selected section's config item has noneditable data, then don't + // display any steps. + ItemInfo secitm = (ItemInfo)cbTranSects.SelectedItem; + bool hasMetaSubs = secitm.IsSection && secitm.Sections != null && secitm.Sections.Count > 0; + bool editSteps = !hasMetaSubs || (secitm.MyConfig is SectionConfig && (secitm.MyConfig as SectionConfig).SubSection_Edit == "Y"); + if (!editSteps) return; + // if the transition to point is a section or procedure, just return if (startitm.MyContent.Type < 20000) return; groupPanelTranstionSteps.Style.BackColor = Color.Cornsilk; @@ -445,15 +453,16 @@ namespace Volian.Controls.Library tvTran.ItemHeight++; tvTran.ItemHeight--; } - private void cbTranSectsFillIn(ItemInfo secitm, int secstart) + private int savSecStart; + private void cbTranSectsFillIn(ItemInfo secitm, int secstart, bool clear) { - cbTranSects.Items.Clear(); + if (clear) cbTranSects.Items.Clear(); // if the transition points 'to' procedure, don't list the sections yet. if (secitm == null || secitm.MyContent.Type < 10000) return; // if sectstart is not -1, then use this as the section to select, otherwise // use the id for the item passed in. int startitm = secstart; - if (secstart < 0) secstart = secitm.ItemID; + if (clear && secstart < 0) secstart = secitm.ItemID; ItemInfo selitm = secitm; // this is the selected 'section' secitm = secitm.FirstSibling; while (secitm != null) @@ -466,6 +475,7 @@ namespace Volian.Controls.Library int active = cbTranSects.Items.Add(secitm); if (secitm.ItemID == secstart) cbTranSects.SelectedIndex = active; } + if (secitm.Sections != null && secitm.Sections.Count > 0) cbTranSectsFillIn(secitm.Sections[0], -1, false); secitm = (secitm.NextItem != null && secitm.NextItems.Count > 0 ? secitm.NextItems[0] : null); } @@ -697,7 +707,7 @@ namespace Volian.Controls.Library } int sectstartid = FindSectionStart(_CurrentProcedure); IList chldrn = _CurrentProcedure.GetChildren(); - if (chldrn != null && chldrn.Count > 0) cbTranSectsFillIn((ItemInfo)chldrn[0], secitm==null?sectstartid:secitm.ItemID); //sectstartid); + if (chldrn != null && chldrn.Count > 0) cbTranSectsFillIn((ItemInfo)chldrn[0], secitm==null?sectstartid:secitm.ItemID, true); //sectstartid); } _TranFmtIndx = listBoxTranFmt.SelectedIndex; groupPanelTranFmt.Style.BackColor = (_CurTrans == null && _TranFmtIndx == 0) ? Color.Yellow : Color.Orange; @@ -792,7 +802,7 @@ namespace Volian.Controls.Library } int sectstartid = FindSectionStart(prcitm); IList chldrn = prcitm.GetChildren(); - cbTranSectsFillIn((ItemInfo)chldrn[0], sectstartid); + cbTranSectsFillIn((ItemInfo)chldrn[0], sectstartid, true); } private void tvTran_AfterSelect(object sender, TreeViewEventArgs e) {