324 lines
8.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Xml;
namespace VEPROMS.CSLA.Library
{
#region PageStyles
[TypeConverter(typeof(vlnListConverter<PageStyles, PageStyle>))]
public class PageStyles : vlnFormatList<PageStyle>
{
public PageStyles(XmlNodeList xmlNodeList) : base(xmlNodeList) { }
}
#endregion
#region PageStyle
public class PageStyle : vlnFormatItem
{
#region Constructor
public PageStyle(XmlNode xmlNode) : base(xmlNode) { }
public PageStyle() : base() { }
#endregion
#region Business Methods
// description to associate with a DocStyle
private LazyLoad<string> _Name;
[DisplayName("Name")]
[Description("Page Style Name")]
public string Name
{
get
{
return LazyLoad(ref _Name, "@Name");
}
}
// a unuque number that is referenced from the DocStyles
private LazyLoad<int?> _Index;
[DisplayName("Index")]
[Description("Page Style Index")]
public int? Index
{
get
{
return LazyLoad(ref _Index, "@Index");
}
}
private PageItems _PageItems;
public PageItems PageItems
{
get
{
return (_PageItems == null)? _PageItems = new PageItems(SelectNodes("Item")): _PageItems;
}
}
#endregion
#region Override ToString
public override string ToString()
{
return string.Format("{0:D2} - {1}", Index, Name);
}
#endregion
}
#endregion
#region PageItems
[TypeConverter(typeof(vlnListConverter<PageItems, PageItem>))]
public class PageItems : vlnFormatList<PageItem>
{
public PageItems(XmlNodeList xmlNodeList) : base(xmlNodeList) { }
}
#endregion
#region PageItem
// this links up the <Item> group in <PageStyle>
public class PageItem : vlnFormatItem
{
#region Constructor
public PageItem(XmlNode xmlNode) : base(xmlNode) { }
public PageItem() : base() { }
#endregion
#region Business Methods
private VE_Font _Font;
[Category("Font")]
[DisplayName("Font")]
[Description("Font")]
public VE_Font Font
{
get
{
return (_Font == null) ?_Font = new VE_Font(XmlNode): _Font;
}
}
private RelatedItem _RelatedItem;
public RelatedItem RelatedItem
{
get
{
return (_RelatedItem == null) ? _RelatedItem = new RelatedItem(SelectSingleNode("RelatedItem")) : _RelatedItem;
}
}
// this can be an actual token, in curly braces, that dynamically gets replaced with information, or just plain text
private LazyLoad<string> _Token;
[Category("Content")]
[DisplayName("Content")]
[Description("Item Content")]
public string Token
{
get
{
return LazyLoad(ref _Token, "@Token");
}
}
// the row on the page to place the Item
private LazyLoad<float?> _Row;
[Category("Location")]
[DisplayName("Vertical Position")]
[Description("Vertical Position")]
public float? Row
{
get
{
return LazyLoad(ref _Row, "@Row");
}
}
// the column on the page to place the Item
private LazyLoad<float?> _Col;
[Category("Location")]
[DisplayName("Horizontal Position")]
[Description("Horizontal Position")]
public float? Col
{
get
{
return LazyLoad(ref _Col, "@Col");
}
}
// the justification at the Col position in which to print the Token information
private LazyLoad<E_Justify?> _Justify;
public E_Justify? Justify
{
get
{
return LazyLoad<E_Justify>(ref _Justify, "@Justify");
}
}
//run the PROMS Replace Words logic on the resulting text of Token
private LazyLoad<bool> _RepWords; // F2021-053: Do replace words in page list
public bool RepWords
{
get
{
return LazyLoad(ref _RepWords, "@RepWords");
}
}
//Flag to tell PROMS to get the alarm value information based on the specified Child applicability
private LazyLoad<bool> _ROLkUpMatch; // C2021-065 (BNPP Alarms format)
public bool ROLkUpMatch
{
get
{
return LazyLoad(ref _ROLkUpMatch, "@ROLkUpMatch");
}
}
// Flag to specify if that PageStyle Item should be used in creating alarm point information
// for viewing in the PROMS step editor
// this information is displayed in a Note that it build on the fly when first opening an Alarm Point page
private LazyLoad<bool> _ROLkUpInEditor; // C2021-018 (BNPP Alarms format)
public bool ROLkUpInEditor
{
get
{
return LazyLoad(ref _ROLkUpInEditor, "@ROLkUpInEditor");
}
}
// defines a maxium width before the resolved PSI token (procedure specific information) text is wrapped
// on to the next line
private LazyLoad<int?> _MaxWidth;
public int? MaxWidth
{
get
{
return (LazyLoad(ref _MaxWidth, "@MaxWidth"));
}
}
// MaxWidth, above, flagged that, if there was more than 1 line, the topmargin would be adjusted by however
// many lines the PSI item contained (for wst alarms). The MaxWidthCurPage is used when that adjustment
// should not be made, the length of the PSI item is only relevant for the current page.
// (see AdjustTopMarginForMultiLinePageListItems variable and how it is used)
private LazyLoad<int?> _MaxWidthCurPage;
public int? MaxWidthCurPage
{
get
{
return (LazyLoad(ref _MaxWidthCurPage, "@MaxWidthCurPage"));
}
}
// the resolved pagestype item font size will be reduce in order to fit within the defined width
private LazyLoad<int?> _FontShrinkAftLen; // F2021-066 & 070 (text len before shrinking font)
public int? FontShrinkAftLen
{
get
{
return (LazyLoad(ref _FontShrinkAftLen, "@FontShrinkAftLen"));
}
}
// used in Alarm Point Table page style values with FontShrinkAftLen set, will display this message if the text cannot be shrunk enough (and be readable) to fit within the defined width
private LazyLoad<string> _FontTooSmallMsg; // F2021-066 message if can't shrink enough
public string FontTooSmallMsg
{
get
{
return LazyLoad(ref _FontTooSmallMsg, "@FontTooSmallMsg");
}
}
// F2023-039 allow to select text color of a pagelist line
// sets a text color for the page style Item
private LazyLoad<string> _TextColor;
public string TextColor
{
get
{
return LazyLoad(ref _TextColor, "@TextColor");
}
}
// set to a string, will remove the matching string from the end
// F2023-112 Vogtle Units 3 & Backgrounds - trim the ending "-B" from the procedure number (used in title box of page header)
private LazyLoad<string> _TrimEnding;
public string TrimEnding
{
get
{
return LazyLoad(ref _TrimEnding, "@TrimEnding");
}
}
#endregion
#region Override ToString
public override string ToString()
{
//return string.Format("({0:D5},{1:D5}) - {2}",Row,Col,Token);
return Token;
}
public override string GetPDDisplayName()
{ return string.Format("({0},{1})",Row,Col); }
#endregion
}
#endregion
#region RelatedItem
// RelatedItem was added to allow a PSI logical to have an associated PSI item, and if both are
// selected the RelatedItem data changes where the item prints. This was implemented for
// F2017-036 - VCS.
[TypeConverter(typeof(ExpandableObjectConverter))]
public class RelatedItem : vlnFormatItem
{
#region Constructor
public RelatedItem(XmlNode xmlNode) : base(xmlNode) { }
public RelatedItem() : base() { }
#endregion
#region Business Methods
// the name of the PSI logical token to check
private LazyLoad<string> _Token;
[Category("RelatedContent")]
[DisplayName("RelatedContent")]
[Description("Item RelatedContent")]
public string Token
{
get
{
return LazyLoad(ref _Token, "@Token");
}
}
// new Row value to use for PageStyle Item
private LazyLoad<float?> _Row;
[Category("Location")]
[DisplayName("Vertical Position")]
[Description("Vertical Position")]
public float? Row
{
get
{
return LazyLoad(ref _Row, "@Row");
}
}
// new Col value to use for PageStyle Item
private LazyLoad<float?> _Col;
[Category("Location")]
[DisplayName("Horizontal Position")]
[Description("Horizontal Position")]
public float? Col
{
get
{
return LazyLoad(ref _Col, "@Col");
}
}
// new Justify value to use for PageStyle Item
private LazyLoad<E_Justify?> _Justify;
public E_Justify? Justify
{
get
{
return LazyLoad<E_Justify>(ref _Justify, "@Justify");
}
}
#endregion
}
#endregion
}