using System; using System.Collections.Generic; using System.Text; namespace VEPROMS.CSLA.Library { public partial class TransitionInfo { public string ResolvePathTo(FormatInfo fi, ItemInfo itminfo, ItemInfo toitem, ItemInfo rangeitem) { StringBuilder retstr = new StringBuilder(); // get the format of the transition string based on this transition's index into the TransData part of // format.... string tranformat = fi.PlantFormat.FormatData.TransData.TransTypeList[TranType].TransFormat; E_TransUI etm = (E_TransUI)fi.PlantFormat.FormatData.TransData.TransTypeList[TranType].TransUI; int startIndex = 0; int index = -1; while ((index = tranformat.IndexOf("{", startIndex))>-1) { // Append any non-token text that preceeds the token. string remstptext = null; if (index > startIndex) { retstr.Append(tranformat.Substring(startIndex, index-startIndex)); remstptext = tranformat.Substring(startIndex, index-startIndex); } int endtokn = tranformat.IndexOf("}", index); string token = tranformat.Substring(index, endtokn - index + 1); switch (token) { case "{Proc Num}": retstr.Append(toitem.MyProcedure.MyContent.Number); break; case "{Proc Title}": if (fi.PlantFormat.FormatData.XtraOptions("CapsTransitions")) retstr.Append(toitem.MyProcedure.MyContent.Text.ToUpper()); else retstr.Append(toitem.MyProcedure.MyContent.Text); break; case "{First Step}": // TODO: LowerCaseTranNumber - lower case substep numbers in transitions // If we're on a step put out the step number. ItemInfo secitm = TranGetSectionItem(toitem); if ((!((etm & E_TransUI.StepAllowNone) == E_TransUI.StepAllowNone)) || toitem.MyContent.Type >20000) retstr.Append(toitem.Ordinal.ToString()); else // if the word 'step' or ',' preceeds this template & there is no step, remove it. { if (remstptext != null) { int len = remstptext.Length; retstr.Remove(retstr.Length-len,len); } } break; case "{Last Step}": // TODO: TStepNoFlag, i.e. include step number in range items. retstr.Append(rangeitem.Ordinal.ToString()); break; case "{.}": // TODO: TStepNoFlag, i.e. include step number in range items. retstr.Append("#"); // TODO: Intermediate Range. break; case "{Sect Hdr}": retstr.Append(TranGetSectionHdr(toitem)); break; case "{Sect Title}": retstr.Append(TranGetSectionTitle(toitem)); break; } startIndex = endtokn+1; if (startIndex >= tranformat.Length) break; } if (startIndex < tranformat.Length) retstr.Append(tranformat.Substring(startIndex, tranformat.Length - startIndex - 1)); return (retstr.ToString()); } // TODO: Section methods are not complete.... private ItemInfo TranGetSectionItem(ItemInfo itminfo) { ItemInfo tmpitm = itminfo; while (tmpitm.MyContent.Type >= 20000) tmpitm = tmpitm.MyParent; return tmpitm; } private string TranGetSectionHdr(ItemInfo itminfo) { ItemInfo tmpitm = TranGetSectionItem(itminfo); StringBuilder retstr = new StringBuilder(); retstr.Append(tmpitm.MyContent.Number); if (tmpitm.MyContent.Number != null && tmpitm.MyContent.Number != "" && tmpitm.MyContent.Text != null && tmpitm.MyContent.Text != "") retstr.Append(" "); retstr.Append(tmpitm.MyContent.Text); return (retstr.ToString()); } private string TranGetSectionTitle(ItemInfo itminfo) { ItemInfo tmpitm = TranGetSectionItem(itminfo); return (tmpitm.MyContent.Text); } public string PathTo { get { return MyItemToID.Path; } } public string PathFrom { get { //return "From " + MyContent.ContentItems[0].Path; return MyContent.ContentItems[0].Path; } } } }