664 lines
20 KiB
C#
664 lines
20 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using VEPROMS.CSLA.Library;
|
|
using System.Drawing;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace Volian.Controls.Library
|
|
{
|
|
public partial class DisplayPanel : Panel
|
|
{
|
|
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
|
#region Events
|
|
public event DisplayPanelEvent ItemClick;
|
|
internal void OnItemClick(object sender, DisplayPanelEventArgs args)
|
|
{
|
|
if (ItemClick != null) ItemClick(sender, args);
|
|
}
|
|
public event DisplayPanelEvent ItemSelectedChanged;
|
|
internal void OnItemSelectedChanged(object sender, DisplayPanelEventArgs args)
|
|
{
|
|
if (ItemSelectedChanged != null) ItemSelectedChanged(sender, args);
|
|
}
|
|
public event DisplayPanelLinkEvent LinkActiveChanged;
|
|
internal void OnLinkActiveChanged(object sender, DisplayLinkEventArgs args)
|
|
{
|
|
if (LinkActiveChanged != null) LinkActiveChanged(sender, args);
|
|
else MessageBox.Show(args.LinkInfo.LinkText, "Unhandled Link Active Changed", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
public event DisplayPanelLinkEvent LinkInsertTran;
|
|
internal void OnLinkInsertTran(object sender, DisplayLinkEventArgs args)
|
|
{
|
|
if (LinkInsertTran != null) LinkInsertTran(sender, args);
|
|
else MessageBox.Show(args.LinkInfo.LinkText, "Unhandled Link Insert Tran", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
public event DisplayPanelLinkEvent LinkInsertRO;
|
|
internal void OnLinkInsertRO(object sender, DisplayLinkEventArgs args)
|
|
{
|
|
if (LinkInsertRO != null) LinkInsertRO(sender, args);
|
|
else MessageBox.Show(args.LinkInfo.LinkText, "Unhandled Link Insert RO", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
public event DisplayPanelLinkEvent LinkClicked;
|
|
internal void OnLinkClicked(object sender, DisplayLinkEventArgs args)
|
|
{
|
|
if (LinkClicked != null) LinkClicked(sender, args);
|
|
else MessageBox.Show(args.LinkInfo.LinkText, "Unhandled Link Click", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
public event DisplayPanelLinkEvent LinkModifyTran;
|
|
internal void OnLinkModifyTran(object sender, DisplayLinkEventArgs args)
|
|
{
|
|
if (LinkModifyTran != null) LinkModifyTran(sender, args);
|
|
else MessageBox.Show(args.LinkInfo.LinkText, "Unhandled Link Modify Tran", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
public event DisplayPanelLinkEvent LinkModifyRO;
|
|
internal void OnLinkModifyRO(object sender, DisplayLinkEventArgs args)
|
|
{
|
|
if (LinkModifyRO != null) LinkModifyRO(sender, args);
|
|
else MessageBox.Show(args.LinkInfo.LinkText, "Unhandled Link Modify RO", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
public event DisplayPanelAttachmentEvent AttachmentClicked;
|
|
internal void OnAttachmentClicked(object sender, DisplayPanelAttachmentEventArgs args)
|
|
{
|
|
if (AttachmentClicked != null) AttachmentClicked(sender, args);
|
|
else MessageBox.Show(args.MyDisplayItem.MyItem.MyContent.MyEntry.MyDocument.DocumentTitle, "Unhandled Attachment Click", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
#endregion
|
|
#region Constructors
|
|
public DisplayPanel()
|
|
{
|
|
InitializeComponent();
|
|
this.Paint += new PaintEventHandler(DisplayPanel_Paint);
|
|
this.DoubleClick += new EventHandler(DisplayPanel_DoubleClick);
|
|
this.AutoScroll = true;
|
|
}
|
|
|
|
void DisplayPanel_DoubleClick(object sender, EventArgs e)
|
|
{
|
|
ShowLines = !ShowLines;
|
|
Refresh();
|
|
}
|
|
private void VerticalLine(Graphics g, int x)
|
|
{
|
|
Pen bluePen = new Pen(Color.CornflowerBlue,1);
|
|
g.DrawLine(bluePen, x, 0, x, this.Height);
|
|
}
|
|
void DisplayPanel_Paint(object sender, PaintEventArgs e)
|
|
{
|
|
if (ShowLines)
|
|
{
|
|
//int fifth = Height / 5;
|
|
//Rectangle r1 = new Rectangle(0, 0, Width, Height - fifth);
|
|
////Brush b = new System.Drawing.Drawing2D.LinearGradientBrush(r1, Color.FromArgb(128, 0, 32), Color.FromArgb(96, 0, 16), 90);
|
|
//Brush b = new System.Drawing.Drawing2D.LinearGradientBrush(r1, Color.FromArgb(255,128, 0, 32), Color.FromArgb(255,96, 0, 16),System.Drawing.Drawing2D.LinearGradientMode.Vertical);
|
|
//e.Graphics.FillRectangle(b, r1);
|
|
//r1 = new Rectangle(0, Height - fifth, Width, fifth);
|
|
//b = new System.Drawing.Drawing2D.LinearGradientBrush(r1, Color.FromArgb(255,96, 0, 16), Color.FromArgb(255,128, 0, 32), 90);
|
|
//e.Graphics.FillRectangle(b, r1);
|
|
//VerticalLine(e.Graphics, 60);
|
|
//VerticalLine(e.Graphics, 102);
|
|
//VerticalLine(e.Graphics, 415);
|
|
}
|
|
}
|
|
public DisplayPanel(IContainer container)
|
|
{
|
|
container.Add(this);
|
|
InitializeComponent();
|
|
this.Paint += new PaintEventHandler(DisplayPanel_Paint);
|
|
this.BackColorChanged += new EventHandler(DisplayPanel_BackColorChanged);
|
|
this.DoubleClick += new EventHandler(DisplayPanel_DoubleClick);
|
|
this.AutoScroll = true;
|
|
}
|
|
void DisplayPanel_BackColorChanged(object sender, EventArgs e)
|
|
{
|
|
// Walk through controls & set colors
|
|
InactiveColor = PanelColor = BackColor;
|
|
foreach (Control ctrl in Controls)
|
|
{
|
|
if (ctrl.GetType().Name == "DisplayItem")
|
|
{
|
|
StepItem rtb = (StepItem)ctrl;
|
|
rtb.BackColor = BackColor;
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
#region Business
|
|
private StepSectionLayoutData _Layout; // Volian Property Snippet
|
|
private ItemInfo _MyItem;
|
|
public ItemInfo MyItem
|
|
{
|
|
get { return _MyItem; }
|
|
set
|
|
{
|
|
//// TIMING: DisplayItem.TimeIt("pMyItem Start");
|
|
_MyItem = value;
|
|
if(value != null)
|
|
_Layout = _MyItem.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData;
|
|
//// TIMING: DisplayItem.TimeIt("pMyItem Layout");
|
|
//this.Layout += new LayoutEventHandler(DisplayPanel_Layout);
|
|
//this.Scroll += new ScrollEventHandler(DisplayPanel_Scroll);
|
|
//// TIMING: DisplayItem.TimeIt("pMyItem Scroll");
|
|
Controls.Clear();
|
|
ItemLookup = new Dictionary<int, StepItem>();
|
|
//// TIMING: DisplayItem.TimeIt("pMyItem Clear");
|
|
//SuspendLayout();
|
|
StepItem vlnRTF = new StepItem(_MyItem, this, null, ChildRelation.None, false);
|
|
//ResumeLayout();
|
|
//// TIMING: DisplayItem.TimeIt("pMyItem End");
|
|
}
|
|
}
|
|
internal Dictionary<int, StepItem> _ItemLookup;
|
|
public Dictionary<int, StepItem> ItemLookup
|
|
{
|
|
get { return _ItemLookup; }
|
|
set { _ItemLookup = value; }
|
|
}
|
|
public void ExpandAsNeeded(ItemInfo item)
|
|
{
|
|
int id = item.ItemID;
|
|
if (ItemLookup.ContainsKey(id))
|
|
{
|
|
ItemLookup[id].AutoExpand();
|
|
}
|
|
else
|
|
{
|
|
ExpandAsNeeded((ItemInfo)item.ActiveParent);
|
|
if (!ItemLookup.ContainsKey(id)) // Expand Parent if not expanded
|
|
{
|
|
int parentId = ((ItemInfo)item.ActiveParent).ItemID;
|
|
ItemLookup[parentId].AutoExpand();
|
|
}
|
|
}
|
|
}
|
|
public void ItemSelect(ItemInfo item)
|
|
{
|
|
int id = item.ItemID;
|
|
ExpandAsNeeded(item);
|
|
ItemLookup[id].ItemSelect();
|
|
}
|
|
private DisplayRTB _DisplayRTB = null;
|
|
public DisplayRTB DisplayRTB
|
|
{
|
|
get { return _DisplayRTB; }
|
|
set
|
|
{
|
|
value.BackColor = ActiveColor; // Set the active color
|
|
if (_DisplayRTB == value) return; // Same - No Change
|
|
if (_DisplayRTB != null)
|
|
{
|
|
_DisplayRTB.BackColor = InactiveColor;
|
|
_DisplayRTB.SaveText(); // Save any changes to the text
|
|
}
|
|
_DisplayRTB = value;
|
|
if (_ItemSelected.ItemID != value.MyItem.ItemID)
|
|
ItemSelected = value.MyItem;
|
|
//vlnStackTrace.ShowStack("_DisplayRTB = {0}", _DisplayRTB.MyItem.ItemID);// Show StackTrace
|
|
}
|
|
}
|
|
internal ItemInfo _ItemSelected;
|
|
public ItemInfo ItemSelected
|
|
{
|
|
get { return _ItemSelected; }
|
|
set
|
|
{
|
|
_ItemSelected = value;
|
|
int id = value.ItemID;
|
|
ExpandAsNeeded(value);
|
|
StepItem itm = ItemLookup[id];
|
|
itm.ItemSelect();
|
|
OnItemSelectedChanged(this, new DisplayPanelEventArgs(itm, null));
|
|
//vlnStackTrace.ShowStack("_ItemSelected = {0}", _ItemSelected.ItemID);// Show StackTrace
|
|
}
|
|
}
|
|
public StepItem DisplayItemSelected
|
|
{
|
|
get { return (_ItemSelected != null) ? ItemLookup[_ItemSelected.ItemID] : null; }
|
|
}
|
|
public void ItemShow()
|
|
{
|
|
if (_ItemSelected != null)
|
|
ItemLookup[_ItemSelected.ItemID].ItemShow();
|
|
}
|
|
private int _Scrolling = 0; // Volian Property Snippet
|
|
public int Scrolling
|
|
{
|
|
get { return _Scrolling; }
|
|
set { _Scrolling = value; }
|
|
}
|
|
private DisplayPanelSettings _Settings; // Volian Property Snippet
|
|
public DisplayPanelSettings Settings
|
|
{
|
|
get
|
|
{
|
|
if (_Settings == null) _Settings = new DisplayPanelSettings(this);
|
|
return _Settings;
|
|
}
|
|
set { _Settings = value;}
|
|
}
|
|
private int _MaxRNO = -1; // TODO: Need to calculate MaxRNO on a section basis rather than for a panel
|
|
public int MaxRNO
|
|
{
|
|
get
|
|
{
|
|
if(_MaxRNO == -1)
|
|
{
|
|
int pmode = Convert.ToInt32(_Layout.PMode) - 1;
|
|
_MaxRNO = Convert.ToInt32( _Layout.MaxRNOTable.Split(",".ToCharArray())[pmode]);
|
|
}
|
|
return _MaxRNO;
|
|
}
|
|
}
|
|
private Font _MyFont =null; // Volian Property Snippet
|
|
public Font MyFont
|
|
{
|
|
get { return _MyFont; }
|
|
set { _ProcFont = _SectFont = _StepFont = _MyFont = value; }
|
|
}
|
|
private Font _ProcFont =new Font("Arial",12,FontStyle.Bold); // Volian Property Snippet
|
|
public Font ProcFont
|
|
{
|
|
get { return _ProcFont; }
|
|
set { _ProcFont = value; }
|
|
}
|
|
private Font _SectFont = new Font("Arial", 10, FontStyle.Bold); // Volian Property Snippet
|
|
public Font SectFont
|
|
{
|
|
get { return _SectFont; }
|
|
set { _SectFont = value; }
|
|
}
|
|
private Font _StepFont = new Font("Arial", 10); // Volian Property Snippet
|
|
public Font StepFont
|
|
{
|
|
get { return _StepFont; }
|
|
set { _StepFont = value; }
|
|
}
|
|
private Color _ActiveColor =Color.SkyBlue; // Volian Property Snippet
|
|
public Color ActiveColor
|
|
{
|
|
get { return _ActiveColor; }
|
|
set { _ActiveColor = value; }
|
|
}
|
|
#if (DEBUG)
|
|
private Color _InactiveColor =Color.Linen; // Volian Property Snippet
|
|
#else
|
|
private Color _InactiveColor = Color.White; // Volian Property Snippet
|
|
#endif
|
|
public Color InactiveColor
|
|
{
|
|
get { return _InactiveColor; }
|
|
set { _InactiveColor = value; }
|
|
}
|
|
#if (DEBUG)
|
|
private Color _TabColor =Color.Beige; // Volian Property Snippet
|
|
#else
|
|
private Color _TabColor = Color.White; // Volian Property Snippet
|
|
#endif
|
|
public Color TabColor
|
|
{
|
|
get { return _TabColor; }
|
|
set { _TabColor = value; }
|
|
}
|
|
#if (DEBUG)
|
|
private Color _PanelColor = Color.LightGray;// Volian Property Snippet
|
|
#else
|
|
private Color _PanelColor = Color.White; // Volian Property Snippet
|
|
#endif
|
|
public Color PanelColor
|
|
{
|
|
get { return _PanelColor; }
|
|
set { _PanelColor = value;
|
|
BackColor = value;
|
|
}
|
|
}
|
|
private bool _ShowLines =true; // Volian Property Snippet
|
|
public bool ShowLines
|
|
{
|
|
get { return _ShowLines; }
|
|
set { _ShowLines = value; }
|
|
}
|
|
#endregion
|
|
#region DisplayConversions
|
|
private Graphics _MyGraphics = null;
|
|
public Graphics MyGraphics
|
|
{
|
|
get
|
|
{
|
|
if (_MyGraphics == null)
|
|
_MyGraphics = CreateGraphics();
|
|
return _MyGraphics;
|
|
}
|
|
}
|
|
private int _DPI =0; // Volian Property Snippet
|
|
public int DPI
|
|
{
|
|
get
|
|
{
|
|
if (_DPI == 0)
|
|
_DPI = Convert.ToInt32(MyGraphics.DpiX);
|
|
return _DPI;
|
|
}
|
|
}
|
|
public int ToDisplay(int value)
|
|
{
|
|
//return (DPI * value) / 864;
|
|
return (DPI * value) / 72;
|
|
}
|
|
public int ToDisplay(int? value)
|
|
{
|
|
return ToDisplay((int)value);
|
|
}
|
|
public int ToDisplay(string value)
|
|
{
|
|
return ToDisplay(Convert.ToInt32(value));
|
|
}
|
|
public int ToDisplay(string value,int i)
|
|
{
|
|
string s = value.Split(",".ToCharArray())[i];
|
|
return ToDisplay(s);
|
|
}
|
|
#endregion
|
|
#region Debug Methods
|
|
public void ListControls()
|
|
{
|
|
// Walk through the controls and find the next control for each
|
|
if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("'Item','Next'");
|
|
foreach (Control control in Controls)
|
|
if (control.GetType().Name == "DisplayItem")
|
|
{
|
|
StepItem rtb = (StepItem)control;
|
|
StepItem nxt = rtb.NextItem;
|
|
if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("{0},{1}", rtb.MyID, nxt == null ? 0 : nxt.MyID);
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
[TypeConverter(typeof(ExpandableObjectConverter))]
|
|
public partial class DisplayPanelSettings
|
|
{
|
|
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
|
public DisplayPanelSettings(DisplayPanel panel)
|
|
{
|
|
_Panel = panel;
|
|
}
|
|
public DisplayPanelSettings()
|
|
{
|
|
}
|
|
private DisplayPanel _Panel;
|
|
[Browsable(false)]
|
|
public DisplayPanel Panel
|
|
{
|
|
get { return _Panel; }
|
|
set { _Panel = value; }
|
|
}
|
|
private float _CircleXOffset = -4;
|
|
[Category("Circle")]
|
|
[DisplayName("Circle Horizontal Offset")]
|
|
public float CircleXOffset
|
|
{
|
|
get { return _CircleXOffset; }
|
|
set { _CircleXOffset = value; if (_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
private float _CircleYOffset = -13;
|
|
[Category("Circle")]
|
|
[DisplayName("Circle Vertical Offset")]
|
|
public float CircleYOffset
|
|
{
|
|
get { return _CircleYOffset; }
|
|
set { _CircleYOffset = value; if (_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
private Font _CircleFont = new Font("Arial Unicode MS", 23); // Volian Property Snippet
|
|
[Category("Circle")]
|
|
[DisplayName("Circle Font")]
|
|
public Font CircleFont
|
|
{
|
|
get { return _CircleFont; }
|
|
set { _CircleFont = value; if(_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
private Color _CircleColor = Color.Black;
|
|
[Category("Circle")]
|
|
[DisplayName("Circle Color")]
|
|
public Color CircleColor
|
|
{
|
|
get { return _CircleColor; }
|
|
set { _CircleColor = value; if (_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
private int _CircleDiameter = 25;
|
|
[Category("Circle")]
|
|
[DisplayName("Circle Diameter")]
|
|
public int CircleDiameter
|
|
{
|
|
get { return _CircleDiameter; }
|
|
set { _CircleDiameter = value; if (_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
private int _CircleWeight = 2;
|
|
[Category("Circle")]
|
|
[DisplayName("Circle Pen Weight")]
|
|
public int CircleWeight
|
|
{
|
|
get { return _CircleWeight; }
|
|
set { _CircleWeight = value; if (_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
private float _NumberLocationX = 20F;
|
|
[Category("Number")]
|
|
[DisplayName("Number Location X")]
|
|
public float NumberLocationX
|
|
{
|
|
get { return _NumberLocationX; }
|
|
set { _NumberLocationX = value; if (_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
private float _NumberLocationY = 4;
|
|
[Category("Number")]
|
|
[DisplayName("Number Location Y")]
|
|
public float NumberLocationY
|
|
{
|
|
get { return _NumberLocationY; }
|
|
set { _NumberLocationY = value; if (_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
private SizeF _NumberSize = new SizeF(200F, 23F);
|
|
[Category("Number")]
|
|
[DisplayName("Number Size")]
|
|
public SizeF NumberSize
|
|
{
|
|
get { return _NumberSize; }
|
|
set { _NumberSize = value; if (_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
private int _TableWidthAdjust = 4;
|
|
[Category("Table")]
|
|
[DisplayName("Table Width Adjust")]
|
|
public int TableWidthAdjust
|
|
{
|
|
get { return _TableWidthAdjust; }
|
|
set { _TableWidthAdjust = value; if (_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
private int _CheckOffWeight = 1;
|
|
[Category("CheckOff")]
|
|
[DisplayName("CheckOff Pen Weight")]
|
|
public int CheckOffWeight
|
|
{
|
|
get { return _CheckOffWeight; }
|
|
set { _CheckOffWeight = value; if (_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
private Color _CheckOffColor = Color.Black;
|
|
[Category("CheckOff")]
|
|
[DisplayName("CheckOff Color")]
|
|
public Color CheckOffColor
|
|
{
|
|
get { return _CheckOffColor; }
|
|
set { _CheckOffColor = value; if (_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
private int _CheckOffSize =12;
|
|
[Category("CheckOff")]
|
|
[DisplayName("CheckOff Size")]
|
|
public int CheckOffSize
|
|
{
|
|
get { return _CheckOffSize; }
|
|
set { _CheckOffSize = value; if (_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
private int _CheckOffX =0;
|
|
[Category("CheckOff")]
|
|
[DisplayName("CheckOff X")]
|
|
public int CheckOffX
|
|
{
|
|
get { return _CheckOffX; }
|
|
set { _CheckOffX = value; if (_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
private int _CheckOffY =5; // Volian Property Snippet
|
|
[Category("CheckOff")]
|
|
[DisplayName("CheckOff Y")]
|
|
public int CheckOffY
|
|
{
|
|
get { return _CheckOffY; }
|
|
set { _CheckOffY = value; if (_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
|
|
private int _ChangeBarWeight = 1;
|
|
[Category("ChangeBar")]
|
|
[DisplayName("ChangeBar Pen Weight")]
|
|
public int ChangeBarWeight
|
|
{
|
|
get { return _ChangeBarWeight; }
|
|
set { _ChangeBarWeight = value; if (_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
private Color _ChangeBarColor = Color.Black;
|
|
[Category("ChangeBar")]
|
|
[DisplayName("ChangeBar Color")]
|
|
public Color ChangeBarColor
|
|
{
|
|
get { return _ChangeBarColor; }
|
|
set { _ChangeBarColor = value; if (_Panel != null) _Panel.Refresh(); }
|
|
}
|
|
}
|
|
public partial class DisplayPanelEventArgs
|
|
{
|
|
private StepItem _MyDisplayItem; // Volian Property Snippet
|
|
public StepItem MyDisplayItem
|
|
{
|
|
get { return _MyDisplayItem; }
|
|
set { _MyDisplayItem = value; }
|
|
}
|
|
private MouseEventArgs _MyMouseEventArgs; // Volian Property Snippet
|
|
public MouseEventArgs MyMouseEventArgs
|
|
{
|
|
get { return _MyMouseEventArgs; }
|
|
set { _MyMouseEventArgs = value; }
|
|
}
|
|
|
|
public DisplayPanelEventArgs(StepItem myDisplayItem, MouseEventArgs myMouseEventArgs)
|
|
{
|
|
_MyDisplayItem = myDisplayItem;
|
|
_MyMouseEventArgs = myMouseEventArgs;
|
|
}
|
|
}
|
|
public partial class DisplayPanelAttachmentEventArgs
|
|
{
|
|
private StepItem _MyDisplayItem; // Volian Property Snippet
|
|
public StepItem MyDisplayItem
|
|
{
|
|
get { return _MyDisplayItem; }
|
|
set { _MyDisplayItem = value; }
|
|
}
|
|
public DisplayPanelAttachmentEventArgs(StepItem myDisplayItem)
|
|
{
|
|
_MyDisplayItem = myDisplayItem;
|
|
}
|
|
}
|
|
public partial class DisplayLinkEventArgs : EventArgs
|
|
{
|
|
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
|
private StepItem _LinkedRTB; // Volian Property Snippet
|
|
public StepItem LinkedRTB
|
|
{
|
|
get { return _LinkedRTB; }
|
|
set { _LinkedRTB = value; }
|
|
}
|
|
private LinkClickedEventArgs _LinkInfo; // Volian Property Snippet
|
|
public LinkClickedEventArgs LinkInfo
|
|
{
|
|
get { return _LinkInfo; }
|
|
set { _LinkInfo = value; }
|
|
}
|
|
public DisplayLinkEventArgs(StepItem linkedRTB, LinkClickedEventArgs linkInfo)
|
|
{
|
|
LinkedRTB = linkedRTB;
|
|
LinkInfo = linkInfo;
|
|
//if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("\r\n LinkInfo '{0}'\r\n", linkInfo.LinkText);
|
|
}
|
|
private void ParseLink()
|
|
{
|
|
if (_Type == ParsedLinkType.NotParsed)
|
|
{
|
|
if (_LinkInfo == null) return;
|
|
// First parse the string
|
|
Match m = Regex.Match(_LinkInfo.LinkText, ".*[#]Link:([A-Za-z]*):(.*)");
|
|
switch (m.Groups[1].Value)
|
|
{
|
|
case "ReferencedObject":
|
|
_Type = ParsedLinkType.ReferencedObject;
|
|
_RoUsageid = m.Groups[2].Value;
|
|
_Roid = m.Groups[3].Value;
|
|
break;
|
|
case "Transition":
|
|
case "TransitionRange":
|
|
_Type = (ParsedLinkType)Enum.Parse(_Type.GetType(), m.Groups[1].Value);
|
|
if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("Link String - '{0}'", m.Groups[2].Value);
|
|
int transitionID = Convert.ToInt32(m.Groups[2].Value.Split(" ".ToCharArray())[1]);
|
|
_MyTransition = TransitionInfo.Get(transitionID);
|
|
//foreach (TransitionInfo ti in _LinkedRTB.MyItem.MyContent.ContentTransitions)
|
|
//{
|
|
// if(_MyLog.IsInfoEnabled)_MyLog.InfoFormat("Transition ID = '{0}'", ti.TransitionID);
|
|
// if (ti.TransitionID == transitionID)
|
|
// _MyTransition = ti;
|
|
//}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
private TransitionInfo _MyTransition = null; // Volian Property Snippet
|
|
public TransitionInfo MyTransition
|
|
{
|
|
get { ParseLink(); return _MyTransition; }
|
|
}
|
|
public ItemInfo ItemTo
|
|
{
|
|
get { ParseLink(); return _MyTransition.MyItemToID; }
|
|
}
|
|
public ItemInfo ItemRange
|
|
{
|
|
get { ParseLink(); return _MyTransition.MyItemRangeID; }
|
|
}
|
|
private string _Roid = null; // TODO: need to return Referenced Object rather than just roid
|
|
public string Roid
|
|
{
|
|
get { ParseLink(); return _Roid; }
|
|
}
|
|
private string _RoUsageid = null; // TODO: need to return Referenced Object rather than just roid
|
|
public string RoUsageid
|
|
{
|
|
get { ParseLink(); return _RoUsageid; }
|
|
}
|
|
private ParsedLinkType _Type = ParsedLinkType.NotParsed; // Volian Property Snippet
|
|
public ParsedLinkType Type
|
|
{
|
|
get { ParseLink(); return _Type; }
|
|
}
|
|
|
|
}
|
|
#region enums
|
|
public enum ParsedLinkType : int
|
|
{
|
|
NotParsed = 0,
|
|
Transition = 1,
|
|
TransitionRange = 2,
|
|
ReferencedObject = 3
|
|
}
|
|
#endregion
|
|
public delegate void DisplayPanelEvent(object sender, DisplayPanelEventArgs args);
|
|
public delegate void DisplayPanelLinkEvent(object sender, DisplayLinkEventArgs args);
|
|
public delegate void DisplayPanelAttachmentEvent(object sender, DisplayPanelAttachmentEventArgs args);
|
|
public delegate void DisplayRTBLinkEvent(object sender, LinkClickedEventArgs e);
|
|
}
|