- Added ShortPath Property to ItemInfo

- Added MacroList
Added CheckOff data
Added CheckOff and ChangeBar
Fixed inheritance
This commit is contained in:
Rich 2010-05-25 16:11:23 +00:00
parent f21a49d75e
commit 8fd6c2eac4
4 changed files with 402 additions and 95 deletions

View File

@ -1172,6 +1172,22 @@ namespace VEPROMS.CSLA.Library
}
}
}
public string ShortPath
{
get
{
string number = (MyContent.Type >= 20000 ? Ordinal.ToString() + "." : ((DisplayNumber ?? "") == "" ? DisplayText : DisplayNumber));
ItemInfo parent = this;
while (parent.MyPrevious != null) parent = parent.MyPrevious;
if (parent.ItemPartCount == 0)
return number;
else
{
PartInfo partInfo = parent.ItemParts[0];
return partInfo.MyContent.ContentItems.Items[0].ShortPath + "." + ((E_FromType)partInfo.FromType).ToString().Substring(0,1) + number;
}
}
}
public ContentInfo ParentContent
{
get
@ -1880,6 +1896,49 @@ namespace VEPROMS.CSLA.Library
}
}
#endregion
#region Macro List
[NonSerialized]
protected List<Macro> _MyMacros;
protected bool _MacrosSetup = false;
public List<Macro> MyMacros
{
get
{
if (!_MacrosSetup) SetupMacros();
return _MyMacros;
}
set
{
_MyMacros = value;
}
}
private void SetupMacros()
{
// see if each macro should be printed based on its attributes and the item we're on.
// Attributes to check are NotInRNO, i.e. only add this macro to the result list if
// the item is not in the RNO column. Also, Groupings is used to only have the macro if
// there are N or more of the type in the grouping.
List<Macro> tmp = new List<Macro>();
foreach (Macro macro in ActiveFormat.PlantFormat.FormatData.StepDataList[FormatStepType].TabData.MacroList)
{
bool addToList = true;
if (macro.NotInRNO && IsInRNO) addToList = false;
if (macro.Grouping != null && macro.Grouping > 0)
{
int count = 0;
ItemInfo ii = FirstSibling;
while (ii != null)
{
if (ii.MyContent.Type == MyContent.Type) count++;
ii = ii.NextItem;
}
if (count < macro.Grouping) addToList = false;
}
if (addToList) tmp.Add(macro);
}
if (tmp.Count > 0) _MyMacros = tmp;
}
#endregion
}
#endregion ItemInfo
#region Tab

View File

@ -94,6 +94,18 @@ namespace VEPROMS.CSLA.Library
}
}
#endregion
#region UseCheckOffs
[Category("Miscellaneous")]
[Description("Section Uses Checkoffs")]
private LazyLoad<bool> _UseCheckOffs;
public bool UseCheckOffs
{
get
{
return LazyLoad(ref _UseCheckOffs, "@UseCheckOffs");
}
}
#endregion
#region Oldtonew
[Category("Miscellaneous")]
[Description("Convert from old to new")]

View File

@ -777,14 +777,6 @@ namespace VEPROMS.CSLA.Library
public class CheckOffData : vlnFormatItem
{
public CheckOffData(XmlNode xmlNode) : base(xmlNode) { }
private RightCheckOffBoxList _RightCheckOffBoxList;
public RightCheckOffBoxList RightCheckOffBoxList
{
get
{
return _RightCheckOffBoxList == null? _RightCheckOffBoxList = new RightCheckOffBoxList(SelectNodes("RightCheckOffBoxList/RightCheckOffBox"),MyFormat):_RightCheckOffBoxList;
}
}
private CheckOffList _CheckOffList;
public CheckOffList CheckOffList
{
@ -801,13 +793,29 @@ namespace VEPROMS.CSLA.Library
return _CheckOffHeaderList == null? _CheckOffHeaderList = new CheckOffHeaderList(SelectNodes("CheckOffHeaderList/CheckOffHeader"),MyFormat): _CheckOffHeaderList;
}
}
private LazyLoad<int?> _UseCheckOffsIn;
public int? UseCheckOffsIn
{
get
private LazyLoad<string> _Menu;
public string Menu
{
get
{
return LazyLoad(ref _UseCheckOffsIn, "@UseCheckOffsIn");
}
return LazyLoad(ref _Menu, "@Menu");
}
}
private LazyLoad<bool> _AllowSectEdit;
public bool AllowSectEdit
{
get
{
return LazyLoad(ref _AllowSectEdit, "@AllowSectEdit");
}
}
private LazyLoad<bool> _AllowStepEdit;
public bool AllowStepEdit
{
get
{
return LazyLoad(ref _AllowStepEdit, "@AllowStepEdit");
}
}
private LazyLoad<int?> _CheckOffAdjustment;
public int? CheckOffAdjustment
@ -817,6 +825,14 @@ namespace VEPROMS.CSLA.Library
return LazyLoad(ref _CheckOffAdjustment, "@CheckOffAdjustment");
}
}
private LazyLoad<int?> _CheckOffXtraLines;
public int? CheckOffXtraLines
{
get
{
return LazyLoad(ref _CheckOffXtraLines, "@CheckOffXtraLines");
}
}
private LazyLoad<bool> _DropCheckOff;
public bool DropCheckOff
{
@ -833,60 +849,67 @@ namespace VEPROMS.CSLA.Library
return LazyLoad(ref _CheckOffOnHLSOnly, "@CheckOffOnHLSOnly");
}
}
}
#endregion
#region RightCheckOffBox
[TypeConverter(typeof(ExpandableObjectConverter))]
public class RightCheckOffBox : vlnFormatItem, IVlnIndexedFormatItem
{
public RightCheckOffBox(XmlNode xmlNode) : base(xmlNode) { }
public RightCheckOffBox() : base() { }
private LazyLoad<int?> _Index;
public int? Index
{
get
{
return LazyLoad(ref _Index, "@Index");
}
}
private LazyLoad<int?> _RightCheckOffBoxChar;
public int? RightCheckOffBoxChar
{
get
{
return LazyLoad(ref _RightCheckOffBoxChar, "@RightCheckOffBoxChar");
}
}
public override string GetPDDisplayName()
{ return string.Format("[{0}]", Index); }
public override string GetPDDescription()
{ return string.Format("[{0}] - {1}", Index, RightCheckOffBoxChar); }
public override string GetPDCategory()
{ return "RightCheckOffBox Data"; }
public override string ToString()
{
return RightCheckOffBoxChar.ToString();
}
}
#endregion
#region RightCheckOffBoxList
[TypeConverter(typeof(vlnIndexedListConverter<RightCheckOffBoxList, RightCheckOffBox>))]
public class RightCheckOffBoxList : vlnIndexedFormatList<RightCheckOffBox>
{
public RightCheckOffBoxList(XmlNodeList xmlNodeList,IFormatOrFormatInfo myFormat) : base(xmlNodeList,myFormat) { }
public override vlnIndexedFormatList<RightCheckOffBox> InheritedList
private LazyLoad<bool> _SkipSpaces;
public bool SkipSpaces
{
get
{
IFormatOrFormatInfo parentFormat = MyFormat.MyIParent;
if (parentFormat != null)
return parentFormat.PlantFormat.FormatData.ProcData.CheckOffData.RightCheckOffBoxList;
return null;
return LazyLoad(ref _SkipSpaces, "@SkipSpaces");
}
}
}
#endregion
//#region RightCheckOffBox
//[TypeConverter(typeof(ExpandableObjectConverter))]
//public class RightCheckOffBox : vlnFormatItem, IVlnIndexedFormatItem
//{
// public RightCheckOffBox(XmlNode xmlNode) : base(xmlNode) { }
// public RightCheckOffBox() : base() { }
// private LazyLoad<int?> _Index;
// public int? Index
// {
// get
// {
// return LazyLoad(ref _Index, "@Index");
// }
// }
// private LazyLoad<int?> _RightCheckOffBoxChar;
// public int? RightCheckOffBoxChar
// {
// get
// {
// return LazyLoad(ref _RightCheckOffBoxChar, "@RightCheckOffBoxChar");
// }
// }
// public override string GetPDDisplayName()
// { return string.Format("[{0}]", Index); }
// public override string GetPDDescription()
// { return string.Format("[{0}] - {1}", Index, RightCheckOffBoxChar); }
// public override string GetPDCategory()
// { return "RightCheckOffBox Data"; }
// public override string ToString()
// {
// return RightCheckOffBoxChar.ToString();
// }
//}
//#endregion
//#region RightCheckOffBoxList
//[TypeConverter(typeof(vlnIndexedListConverter<RightCheckOffBoxList, RightCheckOffBox>))]
//public class RightCheckOffBoxList : vlnIndexedFormatList<RightCheckOffBox>
//{
// public RightCheckOffBoxList(XmlNodeList xmlNodeList,IFormatOrFormatInfo myFormat) : base(xmlNodeList,myFormat) { }
// public override vlnIndexedFormatList<RightCheckOffBox> InheritedList
// {
// get
// {
// IFormatOrFormatInfo parentFormat = MyFormat.MyIParent;
// if (parentFormat != null)
// return parentFormat.PlantFormat.FormatData.ProcData.CheckOffData.RightCheckOffBoxList;
// return null;
// }
// }
//}
//#endregion
#region CheckOff
[TypeConverter(typeof(ExpandableObjectConverter))]
public class CheckOff : vlnFormatItem,IVlnIndexedFormatItem
@ -901,12 +924,12 @@ namespace VEPROMS.CSLA.Library
return LazyLoad(ref _Index, "@Index");
}
}
private LazyLoad<int?> _RightCheckOffChars;
public int? RightCheckOffChars
private LazyLoad<int?> _UIMark;
public int? UIMark
{
get
{
return LazyLoad(ref _RightCheckOffChars, "@RightCheckOffChars");
return LazyLoad(ref _UIMark, "@UIMark");
}
}
private LazyLoad<int?> _CheckOffWidAdjust;
@ -917,23 +940,31 @@ namespace VEPROMS.CSLA.Library
return LazyLoad(ref _CheckOffWidAdjust, "@CheckOffWidAdjust");
}
}
private LazyLoad<string> _RightCheckOffPrompt;
public string RightCheckOffPrompt
private LazyLoad<string> _MenuItem;
public string MenuItem
{
get
{
return LazyLoad(ref _RightCheckOffPrompt, "@RightCheckOffPrompt");
{
return LazyLoad(ref _MenuItem, "@MenuItem");
}
}
private LazyLoad<string> _Macro;
public string Macro
{
get
{
return LazyLoad(ref _Macro, "@Macro");
}
}
public override string GetPDDisplayName()
{ return string.Format("[{0}]",Index); }
public override string GetPDDescription()
{ return string.Format("[{0}] - {1}", Index, RightCheckOffPrompt); }
{ return string.Format("[{0}] - {1}", Index, MenuItem); }
public override string GetPDCategory()
{ return "Checkoff Data"; }
public override string ToString()
{
return RightCheckOffPrompt;
return MenuItem;
}
}
#endregion
@ -1019,6 +1050,14 @@ namespace VEPROMS.CSLA.Library
public class ChangeBarData : vlnFormatItem
{
public ChangeBarData(XmlNode xmlNode) : base(xmlNode) { }
private LazyLoad<string> _DefaultCBLoc;
public string DefaultCBLoc
{
get
{
return LazyLoad(ref _DefaultCBLoc, "@DefaultCBLoc");
}
}
private LazyLoad<string> _ChangeBarMessage;
public string ChangeBarMessage
{
@ -3946,6 +3985,14 @@ namespace VEPROMS.CSLA.Library
: base(xmlNode)
{
}
private MacroList _MacroList;
public MacroList MacroList
{
get
{
return _MacroList == null ? _MacroList = new MacroList(SelectNodes("TabData/MacroList/Macro")) : _MacroList;
}
}
private LazyLoad<string> _IdentEdit;
public string IdentEdit
{
@ -3994,14 +4041,14 @@ namespace VEPROMS.CSLA.Library
return LazyLoad(ref _Justify, "TabData/@Justify");
}
}
private LazyLoad<string> _CheckOff;
public string CheckOff
{
get
{
return LazyLoad(ref _CheckOff, "TabData/@CheckOff");
}
}
//private LazyLoad<string> _CheckOff;
//public string CheckOff
//{
// get
// {
// return LazyLoad(ref _CheckOff, "TabData/@CheckOff");
// }
//}
private LazyLoad<bool> _UsePreviousStyle;
public bool UsePreviousStyle
{
@ -4019,8 +4066,91 @@ namespace VEPROMS.CSLA.Library
return (_Font == null ? _Font = new VE_Font(xn) : _Font);
}
}
}
#endregion
#region MacroList
[TypeConverter(typeof(vlnListConverter<MacroList, Macro>))]
public class MacroList : vlnNamedFormatList<Macro>
{
public MacroList(XmlNodeList xmlNodeList) : base(xmlNodeList, null) { }
public override vlnNamedFormatList<Macro> InheritedList
{
get
{
return null;
}
}
}
#endregion
#region Macro
[TypeConverter(typeof(ExpandableObjectConverter))]
public class Macro : vlnFormatItem, IVlnNamedFormatItem
{
public Macro(XmlNode xmlNode) : base(xmlNode) { }
public Macro() : base() { }
private LazyLoad<string> _Name;
public string Name
{
get
{
return LazyLoad(ref _Name, "@Name");
}
}
private LazyLoad<string> _MacroDef;
public string MacroDef
{
get
{
if (_Inherited == null) SetupStepInheritance();
return LazyLoad(ref _MacroDef, "@Macro");
}
}
private LazyLoad<int?> _Grouping;
public int? Grouping
{
get
{
if (_Inherited == null) SetupStepInheritance();
return LazyLoad(ref _Grouping, "@Grouping");
}
}
private LazyLoad<bool> _NotInRNO;
public bool NotInRNO
{
get
{
if (_Inherited == null) SetupStepInheritance();
return LazyLoad(ref _NotInRNO, "@NotInRNO");
}
}
private bool? _Inherited;
public bool Inherited
{
get
{
if (_Inherited == null) SetupStepInheritance();
return (bool) _Inherited;
}
}
private void SetupStepInheritance()
{
if (_Inherited != null) return;
LazyLoad<string> macroName = null;
_Inherited = (LazyLoad(ref macroName, "@Macro") == null);
// No MacroName, Find parent that has data
string path = string.Format("TabData/MacroList/Macro[@Name='{0}' and @Macro]", Name);
XmlNode xn = vlnFormatDocument.LookupSingleStepNode(XmlNode.ParentNode.ParentNode.ParentNode, path);
if (xn != null)
{
_MacroDef = new LazyLoad<string>(RetrieveString(xn.SelectSingleNode("@Macro")));
_Grouping = new LazyLoad<int?>(RetrieveInt("@Grouping" ,xn.SelectSingleNode("@Grouping")));
_NotInRNO = new LazyLoad<bool>(RetrieveBool( xn.SelectSingleNode("@NotInRNO")));
}
}
}
#endregion
#endregion
#region BoxDataAll
#region Box

View File

@ -322,20 +322,27 @@ namespace VEPROMS.CSLA.Library
if (ll == null)
{
XmlNode xn = SelectSingleNode(xPath);
string tstr = xn != null ? xn.InnerText : "FALSE";
ll = new LazyLoad<bool>(tstr.ToUpper() == "TRUE" ? true : false);
ll = new LazyLoad<bool>(RetrieveBool(xn));
}
return ll.Value;
}
protected static bool RetrieveBool(XmlNode xn)
{
return xn != null && xn.InnerText.ToUpper() == "TRUE";
}
public string LazyLoad(ref LazyLoad<string> ll, string xPath)
{
if (ll == null)
{
XmlNode xn = SelectSingleNode(xPath);
ll = new LazyLoad<string>(xn != null ? xn.InnerText : null);
ll = new LazyLoad<string>(RetrieveString(xn));
}
return ll.Value;
}
protected static string RetrieveString(XmlNode xn)
{
return xn != null ? xn.InnerText : null;
}
public string MyPath
{
get
@ -356,23 +363,26 @@ namespace VEPROMS.CSLA.Library
{
if (ll == null)
{
int? value=null;
XmlNode xn = this._XmlNode;
xn = SelectSingleNode(xPath);
if (xn != null)
{
int iValue =0;
if (!int.TryParse(xn.InnerText, out iValue))
{
Console.WriteLine(string.Format("'{0}'\r\n'{1}'\r\n'{2}' could not be converted to int?", MyFormat.FullName, MyPath + "/" + xPath, xn.InnerText));
throw (new Exception(string.Format("{0} = '{1}' could not be converted to int?",xPath, xn.InnerText)));
}
value = iValue;
}
ll = new LazyLoad<int?>(value);
XmlNode xn = SelectSingleNode(xPath);
ll = new LazyLoad<int?>(RetrieveInt(xPath, xn));
}
return ll.Value;
}
protected int? RetrieveInt(string xPath, XmlNode xn)
{
int? value = null;
if (xn != null)
{
int iValue = 0;
if (!int.TryParse(xn.InnerText, out iValue))
{
Console.WriteLine(string.Format("'{0}'\r\n'{1}'\r\n'{2}' could not be converted to int?", MyFormat.FullName, MyPath + "/" + xPath, xn.InnerText));
throw (new Exception(string.Format("{0} = '{1}' could not be converted to int?", xPath, xn.InnerText)));
}
value = iValue;
}
return value;
}
public Nullable<T> LazyLoad<T>(ref LazyLoad<Nullable<T>> ll, string xPath)
where T:struct
{
@ -405,6 +415,13 @@ namespace VEPROMS.CSLA.Library
int? Index { get; }
}
#endregion
#region IVlnNamedFormatItem
public partial interface IVlnNamedFormatItem
{
string Name { get; }
bool Inherited { get; }
}
#endregion
#region LazyLoad
public class LazyLoad<T>
{
@ -595,6 +612,95 @@ namespace VEPROMS.CSLA.Library
#endregion
}
#endregion
#region vlnNamedFormatList
public class vlnNamedFormatList<T> : vlnFormatList<T>, ICustomTypeDescriptor
where T : vlnFormatItem, IVlnNamedFormatItem, new()
{
public vlnNamedFormatList(XmlNodeList xmlNodeList, IFormatOrFormatInfo myFormat)
: base(xmlNodeList)
{
MyFormat = myFormat;
}
public vlnNamedFormatList() : base() { }
public virtual vlnNamedFormatList<T> InheritedList { get { return null; } }
public new T this[string name]
{
get
{
foreach (T tmp in this)
{
if (tmp.Name == name)
return tmp;
}
vlnNamedFormatList<T> ttlParent = InheritedList; //Check Inherited Value
if (ttlParent != null)
return ttlParent[name];
return null;
// None found - Can I find it in another format?
return null;
}
}
public new T this[int index]
{
get
{
if(base.Count > index)
return base[index];
vlnNamedFormatList<T> ttlParent = InheritedList; //Check Inherited Value
if (ttlParent != null)
return ttlParent[index];
return null;
// None found - Can I find it in another format?
return null;
}
}
public new int Count
{
get
{
return base.Count;
}
}
#region ICustomTypeDescriptor
public String GetClassName()
{ return TypeDescriptor.GetClassName(this, true); }
public AttributeCollection GetAttributes()
{ return TypeDescriptor.GetAttributes(this, true); }
public String GetComponentName()
{ return TypeDescriptor.GetComponentName(this, true); }
public TypeConverter GetConverter()
{ return TypeDescriptor.GetConverter(this, true); }
public EventDescriptor GetDefaultEvent()
{ return TypeDescriptor.GetDefaultEvent(this, true); }
public PropertyDescriptor GetDefaultProperty()
{ return TypeDescriptor.GetDefaultProperty(this, true); }
public object GetEditor(Type editorBaseType)
{ return TypeDescriptor.GetEditor(this, editorBaseType, true); }
public EventDescriptorCollection GetEvents(Attribute[] attributes)
{ return TypeDescriptor.GetEvents(this, attributes, true); }
public EventDescriptorCollection GetEvents()
{ return TypeDescriptor.GetEvents(this, true); }
public object GetPropertyOwner(PropertyDescriptor pd)
{ return this; }
public PropertyDescriptorCollection GetProperties(Attribute[] attributes)
{ return GetProperties(); }
public virtual PropertyDescriptorCollection GetProperties()
{
// Create a collection object to hold property descriptors
PropertyDescriptorCollection pds = new PropertyDescriptorCollection(null);
// Iterate the list
int i = 0;
for (i = 0; i < this.Count; i++)
{
// Create a property descriptor for the item and add to the property descriptor collection
pds.Add(new vlnPropertyDescriptor<vlnFormatList<T>, T>(this, i));
}
// return the property descriptor collection
return pds;
}
#endregion
}
#endregion
#region vlnListConverter
internal class vlnListConverter<T, C> : ExpandableObjectConverter
where T : vlnFormatList<C>