Added tables to movement logic

Improved table layout
This commit is contained in:
Rich 2009-12-18 18:36:37 +00:00
parent 3a4ab8c801
commit df34079386
2 changed files with 71 additions and 37 deletions

View File

@ -18,9 +18,7 @@ namespace Volian.Controls.Library
/// Procedure Item Info - Top ItemInfo
/// </summary>
private ItemInfo _MyProcedureItemInfo;
/// <summary>
/// This is not correct. There should be a dictionary of Section Layouts
/// </summary>
// TODO: This is not correct. There should be a dictionary of Section Layouts
private StepSectionLayoutData _MyStepSectionLayoutData;
/// <summary>
/// Lookup Table to convert ItemInfo.ItemID to StepItem
@ -642,6 +640,7 @@ namespace Volian.Controls.Library
if (ii.RNOs != null && ii.RNOLevel >= ii.ColumnMode) return BottomPart(ii.RNOs[0]);
if (ii.Sections != null) return BottomPart(ii.Sections[0].LastSibling);
if (ii.Steps != null) return BottomPart(ii.Steps[0].LastSibling);
if (ii.Tables != null) return BottomPart(ii.Tables[0].LastSibling);
return ii;
}
/// <summary>
@ -721,6 +720,7 @@ namespace Volian.Controls.Library
// Subitems - go to top part of subitem
// (the lookAtSub prevented looping within a substep group at same level)
if (lookAtSub && ii.Steps != null) return TopPart(ii.Steps[0]);
if (lookAtSub && ii.Tables != null) return TopPart(ii.Tables[0]);
// RNOs: Use PMode (column)
if (lookAtRNO && ii.RNOs != null && ii.RNOLevel >= ii.ColumnMode) return TopPart(ii.RNOs[0]);
// Nextsibling - go to top part of sibling

View File

@ -68,6 +68,12 @@ namespace Volian.Controls.Library
}
#endregion
#region Properties and Variables
private static FontFamily _MyFontFamily = null;
public static FontFamily MyFontFamily
{
get { return StepRTB._MyFontFamily; }
set { StepRTB._MyFontFamily = value; }
}
// use newer rich text box....
//[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
//static extern IntPtr LoadLibrary(string lpFileName);
@ -164,6 +170,17 @@ namespace Volian.Controls.Library
private string _origRTF;
public void RTBFillIn(bool edit)
{
if (edit && _MyStepItem != null && (_MyItemInfo.IsTable || _MyItemInfo.IsFigure))
{
// First get ColR
int colR = MyStepItem.MyStepPanel.ToDisplay(MyStepItem.MyStepSectionLayoutData.ColRTable, MyItemInfo.ColumnMode);
// Second get WidS
int widS = /* _WidthAdjust + borderWidth + */ MyStepItem.MyStepPanel.ToDisplay(MyStepItem.MyStepSectionLayoutData.WidSTableEdit, MyItemInfo.ColumnMode);
//int wNew = _MyStepItem.MyStepPanel.ToDisplay(_MyStepItem.MyStepSectionLayoutData.WidT);
int wNew = 70 + widS + colR * MyItemInfo.ColumnMode;
if(wNew > _MyStepItem.ItemWidth)
_MyStepItem.ItemWidth= wNew;
}
_InitializingRTB = true;
_SelectedRtfSB.Remove(0, _SelectedRtfSB.Length);
DisplayText vlntxt = new DisplayText(_MyItemInfo, EpMode, VwMode, !edit, FieldToEdit);
@ -177,16 +194,25 @@ namespace Volian.Controls.Library
#if(DEBUG)
// Use Times New Roman for Debugging
//Font = new Font("Times New Roman", 14, FontStyle.Regular);
Font = _origDisplayText.TextFont.WindowsFont;
//Font = new Font("Times New Roman", _origDisplayText.TextFont.WindowsFont.Size, _origDisplayText.TextFont.WindowsFont.Style);
//Font = _origDisplayText.TextFont.WindowsFont;
Font formatFont = _origDisplayText.TextFont.WindowsFont;
if (_MyItemInfo.IsTable || _MyItemInfo.IsFigure)
Font = formatFont;
else
Font = new Font(_MyFontFamily == null ? formatFont.FontFamily : _MyFontFamily, formatFont.Size, formatFont.Style);
#elif(RELEASE)
Font = _origDisplayText.TextFont.WindowsFont; // font defined in plant's format
#else //DEMO
// Comment this out for DEMO to customer
// UN-Comment this for testing
//Font = _origDisplayText.TextFont.WindowsFont; // font defined in plant's format
Font formatFont = _origDisplayText.TextFont.WindowsFont;
if (_MyItemInfo.IsTable || _MyItemInfo.IsFigure)
Font = formatFont;
else
Font = new Font("Bookman Old Style", formatFont.Size, formatFont.Style);
#endif
Text = ""; // Initialize text before add text
Text = ""; // Initialize text before add text
// IMPORTANT: SetLineSpacing must be set before Links, otherwise it
// was confusing the 'handle' of the rtf box.
RTBAPI.SetLineSpacing(this, RTBAPI.ParaSpacing.PFS_EXACT);
@ -221,18 +247,18 @@ namespace Volian.Controls.Library
}
AddEventHandlers();
}
else
{
if (_MyStepItem != null && (_MyItemInfo.IsTable || _MyItemInfo.IsFigure))
{
//AdjustWidthForContent();
_MyStepItem.ItemWidth = (int)_MyStepItem.TableWidth(Font, Text);
}
}
//else
//{
// if (_MyStepItem != null && (_MyItemInfo.IsTable || _MyItemInfo.IsFigure))
// {
// //_MyStepItem.ItemWidth = (int)_MyStepItem.TableWidth(Font, Text,false);
// _MyStepItem.ItemWidth = _MyStepItem.MyStepPanel.ToDisplay(_MyStepItem.MyStepSectionLayoutData.WidT);
// }
//}
_origRTF = Rtf;
_InitializingRTB = false;
_MyItemInfo.MyConfig.PropertyChanged += new PropertyChangedEventHandler(MyConfig_PropertyChanged);
AdjustSizeForContents(); // TODO: this is not quite right yet.
AdjustSizeForContents(!edit); // TODO: this is not quite right yet.
}
private bool _ProcessKeystrokes = true;
public bool ProcessKeystrokes
@ -276,7 +302,7 @@ namespace Volian.Controls.Library
set
{
_ContentsRectangle = value;
AdjustSizeForContents();
AdjustSizeForContents(false);
}
}
public Size ContentsSize
@ -290,7 +316,7 @@ namespace Volian.Controls.Library
set
{
_AdjustSize = value;
AdjustSizeForContents();
AdjustSizeForContents(false);
}
}
public System.Windows.Forms.AutoScaleMode AutoScaleMode;
@ -360,7 +386,6 @@ namespace Volian.Controls.Library
this.MouseLeave += new EventHandler(StepRTB_MouseLeave);
this.SelectionChanged +=new EventHandler(StepRTB_SelectionChanged);
}
private void SetUp()
{
this.Height = 10; // initialize the height to 10, the default height was too big for the cells in grid tables
@ -776,16 +801,19 @@ namespace Volian.Controls.Library
{
if (HeightChanged != null) HeightChanged(sender, args);
}
private void AdjustSizeForContents()
private void AdjustSizeForContents(bool adjustWidth)
{
Size offset = Size - ClientSize;
int widthNew = ContentsSize.Width + offset.Width + AdjustSize.Width;
int heightNew = ContentsSize.Height + offset.Height + AdjustSize.Height;
Size szNew = new Size(widthNew,heightNew);
if (this.Size != szNew && !_InitializingRTB)
if (!_InitializingRTB)
{
this.Size = szNew;
OnHeightChanged(this, new EventArgs());
Size offset = Size - ClientSize;
int widthNew = ContentsSize.Width + offset.Width + AdjustSize.Width ;
int heightNew = ContentsSize.Height + offset.Height + AdjustSize.Height;
Size szNew = new Size((adjustWidth ? widthNew : (widthNew > Width ? widthNew : Width)), heightNew);
if (this.Size != szNew)
{
this.Size = szNew;
OnHeightChanged(this, new EventArgs());
}
}
}
private float GetStringWidth(string strMeasureString)
@ -1232,7 +1260,6 @@ namespace Volian.Controls.Library
}
#endregion
#region KeyboardHandling
void StepRTB_KeyUp(object sender, KeyEventArgs e)
{
if (e.Control)
@ -1305,7 +1332,6 @@ namespace Volian.Controls.Library
default:
break;
}
}
private bool IsControlChar = false;
private bool _SendBackSpace = false;
@ -2069,35 +2095,42 @@ namespace Volian.Controls.Library
}
public void OutlineTable(bool withBorder)
{
if (_MyStepItem != null) // Set the width based upon the contents
_MyStepItem.ItemWidth = (int)_MyStepItem.TableWidth(Font, Text, true);
// Determine the number of characters per line
int w = MaxCharacterWidth();
//Console.WriteLine("Before {0},{1}\n{2}\n{3}", Width, w, Rtf, Text);
Console.WriteLine("'Row','last','Start','w2','w','w3','offset1','offset2'");
string horzLine = Repeat(withBorder ? @"\u9472?" : " ", w);
// Determine the number of lines
int l = Lines.Length;
for (int row = 0; row < Lines.Length; row++)
{
//int spaces = w - line.Length;
int offset = GetFirstCharIndexFromLine(row);
Select(offset, 0);
int offset1 = GetFirstCharIndexFromLine(row);
Select(offset1, 0);
string cleanLine = RemoveLinkComments(Lines[row]);
int w2 = Lines[row].Length;
int w3 = cleanLine.Length;
offset = SelectionStart + w2 + (w - w3) + 1;
int offset2 = SelectionStart + w2 + (w - w3) + 1;
int selStart = SelectionStart;
SelectedRtf = RtfPrefix + (withBorder ? @"\u9474?" : " ") + "}";
Select(SelectionStart + w2, 0);
if (w3 < w)
{
SelectedText = "".PadRight(w - w3);
Select(offset, 0);
Select(offset2, 0);
}
SelectedRtf = RtfPrefix + (withBorder ? @"\u9474?" : " ") + "}";
Console.WriteLine("{0},{1},{2},{3},{4},{5},{6},{7}", row, selStart, SelectionStart, w2, w, w3, offset1, offset2);
}
// Add the top line
if (_MyStepItem != null)
{
//AdjustWidthForContent();
_MyStepItem.ItemWidth = (int)_MyStepItem.TableWidth(Font, Text);
}
//if (_MyStepItem != null)
//{
// Console.WriteLine("Char[0]={0:X}", (int)(Text[0]));
// _MyStepItem.ItemWidth = (int)_MyStepItem.TableWidth(Font, Text.Replace('\u2502','-'), false);
//}
//Console.WriteLine("After Edges\n{0}\n{1}", Rtf, Text);
Select(0, 0);
SelectedRtf = RtfPrefix + (withBorder ? @"\u9484?" : " ") + horzLine + (withBorder ? @"\u9488?\par " : @" \par ") + "}";
// Add the bottom line
@ -2105,6 +2138,7 @@ namespace Volian.Controls.Library
ContentsResized += new ContentsResizedEventHandler(StepRTB_ContentsResized);
SelectedRtf = RtfPrefix + (withBorder ? @"\par\u9492?" : @"\par ") + horzLine + (withBorder ? @"\u9496?" : @" ") + "}";
ContentsResized -= new ContentsResizedEventHandler(StepRTB_ContentsResized);
//Console.WriteLine("After Top and Bottom\n{0}\n{1}", Rtf, Text);
ReplaceLinesInTable(withBorder);
}