Calvert Alarms: CONDITION/RESPONSE top continue messages improvements.

This commit is contained in:
2014-08-20 13:49:22 +00:00
parent 831858d19e
commit 77e02fd438
2 changed files with 75 additions and 24 deletions

View File

@@ -49,17 +49,17 @@ namespace Volian.Print.Library
get { return _TopMessageRs; }
set { _TopMessageRs = value; }
}
private vlnText _TopMessageSub1; // BGE Alarms: in CONDITION/RESPONSE if break within substep
public vlnText TopMessageSub1
private List<vlnText> _TopMessageSub1s=new List<vlnText>(); // BGE Alarms: in CONDITION/RESPONSE if break within substep
public List<vlnText> TopMessageSub1s
{
get { return _TopMessageSub1; }
set { _TopMessageSub1 = value; }
get { return _TopMessageSub1s; }
set { _TopMessageSub1s = value; }
}
private vlnText _TopMessageSub2; // BGE Alarms: in CONDITION/RESPONSE if break within substep
public vlnText TopMessageSub2
private List<vlnText> _TopMessageSub2s=new List<vlnText>(); // BGE Alarms: in CONDITION/RESPONSE if break within substep
public List<vlnText> TopMessageSub2s
{
get { return _TopMessageSub2; }
set { _TopMessageSub2 = value; }
get { return _TopMessageSub2s; }
set { _TopMessageSub2s = value; }
}
private vlnText _BottomMessage;
public vlnText BottomMessage
@@ -565,17 +565,23 @@ namespace Volian.Print.Library
}
TopMessageRs = null; // Only output it once.
}
if (TopMessageSub1 != null)
if (TopMessageSub1s != null)
{
TopMessageSub1.YOffset = AlarmYoffStart - 3 * vlnPrintObject.SixLinesPerInch;
TopMessageSub1.ToPdf(cb, 0, ref tmp, ref tmp);
TopMessageSub1 = null; // Only output it once.
foreach (vlnText vts1 in TopMessageSub1s)
{
vts1.YOffset = AlarmYoffStart - 3 * vlnPrintObject.SixLinesPerInch;
vts1.ToPdf(cb, 0, ref tmp, ref tmp);
}
TopMessageSub1s = null; // Only output it once.
}
if (TopMessageSub2 != null)
if (TopMessageSub2s != null)
{
TopMessageSub2.YOffset = AlarmYoffStart - 3 * vlnPrintObject.SixLinesPerInch;
TopMessageSub2.ToPdf(cb, 0, ref tmp, ref tmp);
TopMessageSub2 = null; // Only output it once.
foreach (vlnText vts2 in TopMessageSub2s)
{
vts2.YOffset = AlarmYoffStart - 3 * vlnPrintObject.SixLinesPerInch;
vts2.ToPdf(cb, 0, ref tmp, ref tmp);
}
TopMessageSub2s = null; // Only output it once.
}
if (BottomMessage != null)
{

View File

@@ -1311,6 +1311,9 @@ namespace Volian.Print.Library
// NOTE THAT this code is not complete - the positioning & addition of step tab for within table are not working correctly
if ((docstyle.Continue.Top.HLS ?? 0) == 3)
{
MyPageHelper.TopMessageSub1s = new List<vlnText>();
MyPageHelper.TopMessageSub2s = new List<vlnText>();
//string HLSTabTextForContMsg = MyHighLevelParagraph.MyItemInfo.MyTab.CleanText + " " + MyHighLevelParagraph.MyItemInfo.MyContent.Text;
//int len = (HLSTabTextForContMsg.Length - 10) * 6;
string tabText = @"\ul\b " + MyHighLevelParagraph.MyItemInfo.MyTab.CleanText.Trim() + @"\b0\ulnone";
@@ -1322,17 +1325,59 @@ namespace Volian.Print.Library
vlnText vt2 = new vlnText(cb, this, stepText, stepText, MyHighLevelParagraph.XOffset, yTopMargin + 0.1F, docstyle.Continue.Top.Font);
vt2.Width = MyHighLevelParagraph.Width;
MyPageHelper.TopMessageRs.Add(vt2);
if (subTab != null && MyItemInfo.StepLevel > 2)
{
// the following code is used to print the top continue messages in the Calvert Alarm format
// CONDITION/RESPONSE table. Messages only get printed if the break is on a substep at steplevel > 2.
// see comments within code for what the tab contains, it varies depending on which side
// break occurred & how deep in the step the break occurred.
if (subTab != null && MyItemInfo.StepLevel > 2) {
bool incond = !MyItemInfo.IsInRNO;
float ybot = yTopMargin + (4 * SixLinesPerInch);
float xoffB = 0;
if (MyParent.MyTab != null)
string concatrnoTab = ""; // constructed tab for Response side
string concataerTab = ""; // constructed tab for Condition side
float xoffTab = 0; // position for Response tab
float xoffMsg = 0; // position for Response message
vlnParagraph useAerParaForTab = null; // use this paragraph under Conditions for locating tab & message
if (incond)
{
xoffB = MyParent.MyTab.XOffset;
MyPageHelper.TopMessageSub1 = new vlnText(cb, this, MyParent.MyTab.Text, MyParent.MyTab.Text, xoffB, ybot, docstyle.Continue.Bottom.Font);
// If break is in Condition side of table, use Condition tab of parent & no tab for Response side.
// Both sides have the message '(continued)'.
useAerParaForTab = MyParent;
concataerTab = MyParent.MyTab != null ? MyParent.MyTab.Text.TrimEnd() : "";
xoffTab = 0; // no rno tab
xoffMsg = ToInt(MyItemInfo.ActiveFormat.MyStepSectionLayoutData.ColRTable, 1) + (float)MyItemInfo.MyDocStyle.Layout.LeftMargin + ((useAerParaForTab != null && useAerParaForTab.MyTab!=null) ? useAerParaForTab.MyTab.Width : 7.2f);
}
xoffB = MyParent.XOffset;
MyPageHelper.TopMessageSub2 = new vlnText(cb, this, myMsg, myMsg, xoffB, ybot, docstyle.Continue.Bottom.Font);
else
{
// break occurred in Response side. Use the tabs up to highest RNO concatenated together.
vlnParagraph useRnoParaForTab = MyParent;
vlnParagraph useParaForTab = MyParent;
while (useParaForTab.MyItemInfo.IsInRNO)
{
concatrnoTab = (useParaForTab.MyTab != null ? useParaForTab.MyTab.Text.TrimEnd() : "") + concatrnoTab.Trim();
useRnoParaForTab = useParaForTab;
useParaForTab = useParaForTab.MyParent;
}
xoffTab = useRnoParaForTab.MyTab.XOffset;
xoffMsg = useRnoParaForTab.XOffset;
// aer message when rno broke. Need to concatenate up the Condition side also until
// hitting 1st non-sequential, i.e. moves out of Condition/Response table.
useAerParaForTab = useParaForTab; // useParaForTab is 1st found non-Response step, i.e. moved into Condition side of table
while (useParaForTab.MyItemInfo.IsSequential)
{
concataerTab = (useParaForTab.MyTab != null ? useParaForTab.MyTab.Text.TrimEnd() : "") + concataerTab.Trim();
useAerParaForTab = useParaForTab;
useParaForTab = useParaForTab.MyParent;
}
}
// For RNO tab, add a vlntext for tab and one for continue message:
if (!incond) MyPageHelper.TopMessageSub1s.Add(new vlnText(cb, this, concatrnoTab, concatrnoTab, xoffTab, ybot, docstyle.Continue.Bottom.Font));
MyPageHelper.TopMessageSub1s.Add(new vlnText(cb, this, myMsg, myMsg, xoffMsg, ybot, docstyle.Continue.Bottom.Font));
// for aer tab, add a vlntext for tab and one for continue message:
MyPageHelper.TopMessageSub2s.Add(new vlnText(cb, this, concataerTab, concataerTab, useAerParaForTab.MyTab.XOffset, ybot, docstyle.Continue.Bottom.Font));
MyPageHelper.TopMessageSub2s.Add(new vlnText(cb, this, myMsg, myMsg, useAerParaForTab.XOffset, ybot, docstyle.Continue.Bottom.Font));
addExtraLine = true;
}
}