using System; using System.Collections.Generic; using System.Text; namespace VEPROMS.CSLA.Library { public partial class ItemInfo { public ItemInfo SearchNext { get { return SearchNextSkip(SkipPartType.This); } } private ItemInfo SearchNextSkip(SkipPartType skip) { if (skip < SkipPartType.Caution && Cautions != null && Cautions.Count > 0) return Cautions[0].SearchTop; if (skip < SkipPartType.Note && Notes != null && Notes.Count > 0) return Notes[0].SearchTop; if (skip < SkipPartType.This) return this; if (skip < SkipPartType.RNO && RNOs != null && RNOs.Count > 0) return RNOs[0].SearchTop; if (skip < SkipPartType.SupInfo && SupInfos != null && SupInfos.Count > 0) return SupInfos[0].SearchTop; if (skip < SkipPartType.Table && Tables != null && Tables.Count > 0) return Tables[0].SearchTop; if (skip < SkipPartType.Procedures && Procedures != null && Procedures.Count > 0) return Procedures[0].SearchTop; if (skip < SkipPartType.Sections && Sections != null && Sections.Count > 0) return Sections[0].SearchTop; // fix B2016-158: Don't process steps if this sectin is 'not-editable' (steps may exist but are hidden // from edit & print) bool iseditable = true; if (IsSection) { SectionConfig sc = MyConfig as SectionConfig; if (sc != null && sc.SubSection_Edit != "Y") iseditable = false; } if (iseditable && skip < SkipPartType.Steps && Steps != null && Steps.Count > 0) return Steps[0].SearchTop; if (NextItem != null) return NextItem.SearchTop; return UpOneNext; } public ItemInfo SearchTop { get { if (Cautions != null) return Cautions[0].SearchTop; if (Notes != null) return Notes[0].SearchTop; return this; } } public ItemInfo UpOneNext { get { ItemInfo parentItem = ActiveParent as ItemInfo; if (parentItem == null) return null; if (IsCautionPart) return parentItem.SearchNextSkip(SkipPartType.Caution); if (IsNotePart) return parentItem.SearchNextSkip(SkipPartType.Note); if (IsRNOPart) return parentItem.SearchNextSkip(SkipPartType.RNO); if (IsSupInfoPart) return parentItem.SearchNextSkip(SkipPartType.SupInfo); if (IsTablePart) return parentItem.SearchNextSkip(SkipPartType.Table); if (IsProcedurePart) return parentItem.SearchNextSkip(SkipPartType.Procedures); if (IsSectionPart) return parentItem.SearchNextSkip(SkipPartType.Sections); if (IsStepPart) return parentItem.SearchNextSkip(SkipPartType.Steps); if (parentItem.NextItem != null) return parentItem.NextItem.SearchTop; return parentItem.UpOneNext; } } public ItemInfo SearchPrev { get { return SearchPrevSkip(SkipPartType.This); } } private ItemInfo SearchPrevSkip(SkipPartType skip) { if (skip > SkipPartType.Steps && Steps != null) return Steps[0].LastSibling.SearchBottom; if (skip > SkipPartType.Sections && Sections != null) return Sections[0].LastSibling.SearchBottom; if (skip > SkipPartType.Procedures && Procedures != null) return Procedures[0].LastSibling.SearchBottom; if (skip > SkipPartType.Table && Tables != null) return Tables[0].LastSibling.SearchBottom; if (skip > SkipPartType.SupInfo && SupInfos != null) return SupInfos[0].LastSibling.SearchBottom; if (skip > SkipPartType.RNO && RNOs != null) return RNOs[0].LastSibling.SearchBottom; if (skip > SkipPartType.This) return this; if (skip > SkipPartType.Note && Notes != null) return Notes[0].LastSibling.SearchBottom; if (skip > SkipPartType.Caution && Cautions != null) return Cautions[0].LastSibling.SearchBottom; if (MyPrevious != null) return MyPrevious.SearchBottom; return UpOnePrev; } public ItemInfo SearchBottom { get { if (Steps != null) return Steps[0].LastSibling.SearchBottom; if (Sections != null) return Sections[0].LastSibling.SearchBottom; if (Procedures != null) return Procedures[0].LastSibling.SearchBottom; if (Tables != null) return Tables[0].LastSibling.SearchBottom; if (RNOs != null) return RNOs[0].LastSibling.SearchBottom; if (SupInfos != null) return SupInfos[0].LastSibling.SearchBottom; return this; } } public ItemInfo UpOnePrev { get { ItemInfo parentItem = ActiveParent as ItemInfo; if (parentItem == null) return null; if (IsCautionPart) return parentItem.SearchPrevSkip(SkipPartType.Caution); if (IsNotePart) return parentItem.SearchPrevSkip(SkipPartType.Note); if (IsRNOPart) return parentItem.SearchPrevSkip(SkipPartType.RNO); if (IsSupInfoPart) return parentItem.SearchPrevSkip(SkipPartType.SupInfo); if (IsTablePart) return parentItem.SearchPrevSkip(SkipPartType.Table); if (IsProcedurePart) return parentItem.SearchPrevSkip(SkipPartType.Procedures); if (IsSectionPart) return parentItem.SearchPrevSkip(SkipPartType.Sections); if (IsStepPart) return parentItem.SearchPrevSkip(SkipPartType.Steps); if (parentItem.MyPrevious != null) return parentItem.MyPrevious.SearchTop; return parentItem.UpOnePrev; } } enum SkipPartType { Nothing=0, Caution=1, Note=2, This=3, RNO=4, SupInfo = 5, Table=6, Procedures=7, Sections=8, Steps=9 } } }