diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs
index 240fefd5..da690ba3 100644
--- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs
+++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs
@@ -516,6 +516,11 @@ namespace VEPROMS.CSLA.Library
int stepType = ((int)MyContent.Type) % 10000;
StepDataList sdlist = ActiveFormat.PlantFormat.FormatData.StepDataList;
StepData sd = sdlist[stepType];
+ while (sd.Index != 0)
+ {
+ if (sd.Type == type) return true;
+ sd = sdlist[sd.ParentType];
+ }
// TODO: RHM20071115 while (sd.Index != 0)
// TODO: RHM20071115 {
// TODO: RHM20071115 if (sd.Type == type) return true;
@@ -527,84 +532,84 @@ namespace VEPROMS.CSLA.Library
{
get
{
- return IsType("CAUTION");
+ return IsType("Caution");
}
}
public bool IsNote
{
get
{
- return IsType("NOTE");
+ return IsType("Note");
}
}
public bool IsTable
{
get
{
- return IsType("TABLE");
+ return IsType("Table");
}
}
public bool IsFigure
{
get
{
- return IsType("FIGURE");
+ return IsType("Figure");
}
}
public bool IsOr
{
get
{
- return IsType("OR");
+ return IsType("Or");
}
}
public bool IsAnd
{
get
{
- return IsType("AND");
+ return IsType("And");
}
}
public bool IsEquipmentList
{
get
{
- return IsType("EQUIPMENTLIST");
+ return IsType("EquipmentList");
}
}
public bool IsTitle
{
get
{
- return IsType("TITLE");
+ return IsType("Title");
}
}
public bool IsAccPages
{
get
{
- return IsType("ACCPAGES");
+ return IsType("AccPages");
}
}
public bool IsParagraph
{
get
{
- return IsType("PARAGRAPH");
+ return IsType("Paragraph");
}
}
public bool IsDefault
{
get
{
- return IsType("DEFAULT");
+ return IsType("Default");
}
}
public bool IsContAcSequential
{
get
{
- return IsType("CONTACSEQUENTIAL");
+ return IsType("ContAcSequential");
}
}
public bool IsHigh
@@ -669,15 +674,28 @@ namespace VEPROMS.CSLA.Library
}
///
/// FormatStepType - Maps to step type in format file. All types map directly from step type in content
- /// to step type in format except rno. The '39' is the RNO index in the format file. Note that we
- /// could loop through the format's stepdata to find rnotype if we want this to be more flexible?
+ /// to step type in format
///
public int FormatStepType
{
get
{
- if (IsRNO) return 40;
- else return (((int)MyContent.Type) % 10000);
+ return (((int)MyContent.Type) % 10000);
+ }
+ }
+ ///
+ /// returns the format's stepdata for the given content type.
+ ///
+ public StepData FormatStepData
+ {
+ get
+ {
+ int typ = (int)MyContent.Type - 20000;
+ foreach (StepData sd in ActiveFormat.PlantFormat.FormatData.StepDataList)
+ {
+ if (sd.Index == typ) return sd;
+ }
+ return null;
}
}
public ItemInfo FirstSibling
@@ -1090,7 +1108,7 @@ namespace VEPROMS.CSLA.Library
if (MyContent.MyEntry == null)
return MyContent.Number;
if (MyContent.Number != "")
- return MyContent.Number;
+ return (MyContent.MyEntry.MyDocument.LibTitle == null ? "" : "\xA3 ") + MyContent.Number;
if (MyContent.Text.Length <= 10)
return MyContent.Text;
return MyContent.Text.Split(" ,.;:-_".ToCharArray())[0] + "...";
@@ -1282,6 +1300,113 @@ namespace VEPROMS.CSLA.Library
{
_MyContent = new ContentInfo(dr, true);
}
+ #region Insert New Items
+ public ItemInfo InsertSiblingBefore(string text)
+ {
+ return InsertSiblingBefore(text, null);
+ }
+ public ItemInfo InsertSiblingBefore(string text, string number)
+ {
+ ItemInfo prevItemInfo = MyPrevious;
+ ItemInfo newItemInfo = null;
+ PartInfoList partInfoList = MyParent != null && MyParent.MyContent != null ? MyParent.MyContent.ContentParts : null;
+ using (Item prevItem = prevItemInfo == null ? null : prevItemInfo.Get()) // Get the previous Item
+ {
+ using (Item newItem = Item.MakeItem(prevItem, Content.MakeContent(number, "", MyContent.Type, null, null))) // Create the new Item
+ {
+ using (Item thisItem = Get()) // Get the next item in the list
+ {
+ thisItem.MyPrevious = newItem; // Point to the new item
+ thisItem.Save(); // Save Changes
+ if (prevItem == null)
+ {
+ PartInfo partInfo = partInfoList.Find(this);
+ using (Part part = partInfo.Get())
+ {
+ part.MyItem = newItem;
+ part.Save();
+ }
+ }
+ }
+ newItemInfo = ItemInfo.Get(newItem.ItemID);
+ }
+ }
+ return newItemInfo;
+ }
+ public ItemInfo InsertSiblingAfter(string text)
+ {
+ return InsertSiblingAfter(text, null);
+ }
+ public ItemInfo InsertSiblingAfter(string text, string number)
+ {
+ return InsertSiblingAfter(text, number, MyContent.Type);
+ }
+ public ItemInfo InsertSiblingAfter(string text, string number, int? type)
+ {
+ ItemInfo nextItemInfo = (NextItemCount > 0) ? NextItems[0] : null;
+ ItemInfo newItemInfo = null;
+ using (Item thisItem = Get()) // Get the Current Item
+ {
+ using (Item newItem = Item.MakeItem(thisItem, Content.MakeContent(number, text, type, null, null))) // Create the new Item
+ {
+ if (nextItemInfo != null) // Simple case, adding to end of list:
+ using (Item nextItem = nextItemInfo.Get()) // Get the next item in the list
+ {
+ nextItem.MyPrevious = newItem; // Point to the new item
+ nextItem.Save(); // Save Changes
+ }
+ newItemInfo = ItemInfo.Get(newItem.ItemID);
+ }
+ }
+ return newItemInfo;
+ }
+ public ItemInfo InsertChild(E_FromType fromType,int type,string text)
+ {
+ return InsertChild(fromType,type,text, null);
+ }
+ public ItemInfo InsertChild(E_FromType fromType,int type, string text, string number)
+ {
+ ItemInfo newItemInfo = null;
+ using (Item thisItem = Get()) // Get the Current Item
+ {
+ using (Item newItem = Item.MakeItem(null, Content.MakeContent(number, text, type, null, null))) // Create the new Item
+ {
+ PartInfo partInfo = MyContent.ContentParts == null ? null : MyContent.ContentParts.Find(fromType);
+ if (partInfo != null)
+ {
+ //this could be equivalent to adding a sibling with a specific type
+ using (Part part = partInfo.Get())
+ {
+ part.MyItem.MyPrevious = newItem;
+ part.MyItem.Save();
+ part.MyItem = newItem;
+ part.Save();
+ }
+ }
+ else
+ {
+ // This means that a part needs to be added to point to the new item
+ //using (Part part = Part.MakePart(thisItem.MyContent, ))
+ //{ ;}
+ thisItem.MyContent.ContentParts.Add((int)fromType, newItem);
+ thisItem.Save();
+ }
+ newItemInfo = ItemInfo.Get(newItem.ItemID);
+ }
+ }
+ ResetParts();
+ return newItemInfo;
+ }
+ public ItemInfo NextItem
+ {
+ get
+ {
+ if (NextItemCount > 0 && NextItems.Count > 0)
+ return NextItems[0];
+ return null;
+ }
+ }
+ #endregion
}
#endregion ItemInfo
#region ItemInfoList
diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/PartExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/PartExt.cs
index 63fe2b1b..ca6c8805 100644
--- a/PROMS/VEPROMS.CSLA.Library/Extension/PartExt.cs
+++ b/PROMS/VEPROMS.CSLA.Library/Extension/PartExt.cs
@@ -39,6 +39,24 @@ namespace VEPROMS.CSLA.Library
this.Add(new PartInfo(dr, itemInfo));
IsReadOnly = true;
}
+ public PartInfo Find(E_FromType fromType)
+ {
+ foreach(PartInfo partInfo in this)
+ {
+ if ((E_FromType)partInfo.FromType == fromType)
+ return partInfo;
+ }
+ return null;
+ }
+ public PartInfo Find(ItemInfo itemInfo)
+ {
+ foreach (PartInfo partInfo in this)
+ {
+ if (partInfo.MyItem.ItemID == itemInfo.ItemID)
+ return partInfo;
+ }
+ return null;
+ }
}
public partial class PartInfo : IVEDrillDownReadOnly
{