Example #1
0
        /// <summary>
        /// Builds an XML representation of the Table and its contents
        /// </summary>
        /// <returns>RichText XML</returns>
        internal static string TableAsXML(Table table, RichTextSaveOptions options)
        {
            StringBuilder result = new StringBuilder();
            RichTextBlock richTextBlock;
            Border        border;
            int           column;
            int           row;
            int           columnSpan;
            int           rowSpan;

            result.Append("<Xaml>\r");
            result.Append("<liquid:Table ");

            if (!double.IsNaN(table.Width))
            {
                result.Append(" Width=\"" + table.Width.ToString() + "\"");
            }
            if (!double.IsNaN(table.Height))
            {
                result.Append(" Height=\"" + table.Height.ToString() + "\"");
            }
            if (table.HorizontalAlignment != HorizontalAlignment.Left)
            {
                result.Append(" HorizontalAlignment=\"" + table.HorizontalAlignment.ToString() + "\"");
            }
            result.Append(" CellPadding=\"" + table.CellPadding.ToString() + "\"");
            result.Append(" HeaderRows=\"" + table.HeaderRows.ToString() + "\"");
            result.Append(" HeaderColumns=\"" + table.HeaderColumns.ToString() + "\"");
            result.Append(" AutoWidth=\"" + table.AutoWidth.ToString() + "\"");
            result.Append(" Tag=\"" + table.Tag.ToString() + "\"");

            result.Append(">\r");

            if (table.ColumnDefinitions.Count > 0)
            {
                result.Append("<Grid.ColumnDefinitions>\r");
                foreach (ColumnDefinition c in table.ColumnDefinitions)
                {
                    result.Append("<ColumnDefinition Width=\"" + c.Width.ToString() + "\" />\r");
                }
                result.Append("</Grid.ColumnDefinitions>\r");
            }

            if (table.RowDefinitions.Count > 0)
            {
                result.Append("<Grid.RowDefinitions>\r");
                foreach (RowDefinition c in table.RowDefinitions)
                {
                    result.Append("<RowDefinition Height=\"" + c.Height.ToString() + "\"/>\r");
                }
                result.Append("</Grid.RowDefinitions>\r");
            }

            foreach (UIElement e in table.Children)
            {
                if (e is Border)
                {
                    border     = (Border)e;
                    row        = (int)border.GetValue(Grid.RowProperty);
                    column     = (int)border.GetValue(Grid.ColumnProperty);
                    rowSpan    = (int)border.GetValue(Grid.RowSpanProperty);
                    columnSpan = (int)border.GetValue(Grid.ColumnSpanProperty);

                    result.Append("<Border Grid.Column=\"" + column.ToString() + "\" Grid.Row=\"" + row.ToString() + "\">\r");
                    if (border.Child is RichTextBlock)
                    {
                        richTextBlock = (RichTextBlock)border.Child;
                        result.Append(Serialize.RichTextBlock(richTextBlock));
                    }
                    result.Append("</Border>\r");
                }
            }

            result.Append("</liquid:Table>\r");
            result.Append("</Xaml>\r");

            return(result.ToString());
        }
Example #2
0
        /// <summary>
        /// Builds an HTML representation of the Table and its contents
        /// </summary>
        /// <returns>HTML</returns>
        internal static string TableAsHTML(Table table, RichTextSaveOptions options)
        {
            StringBuilder result = new StringBuilder();
            RichTextBlock richTextBlock;
            string        tag = string.Empty;
            string        width;
            string        valign = "top";
            Border        border;
            string        temp;
            int           column;
            int           row;
            int           index;

            result.Append("<table");

            if (table.Tag != null)
            {
                result.Append(" class=\"" + table.Tag.ToString() + "\"");
            }

            if (!double.IsNaN(table.Width))
            {
                result.Append(" width=\"" + table.Width.ToString() + "\"");
            }
            if (!double.IsNaN(table.Height))
            {
                result.Append(" height=\"" + table.Height.ToString() + "\"");
            }
            if (table.HorizontalAlignment != HorizontalAlignment.Left && table.HorizontalAlignment != HorizontalAlignment.Stretch)
            {
                result.Append(" style='text-align:" + table.HorizontalAlignment.ToString() + "'");
            }

            result.Append(">\r");

            index = 0;
            for (row = 0; row < table.RowDefinitions.Count; row++)
            {
                result.Append("<tr>\r");
                for (column = 0; column < table.ColumnDefinitions.Count; column++, index++)
                {
                    if (row < table.HeaderRows || column < table.HeaderColumns)
                    {
                        tag = "th";
                    }
                    else
                    {
                        tag = "td";
                    }
                    border = (Border)table.Children[index];
                    table.SetColumnsToPixelWidth();

                    if (table.ColumnDefinitions[column].Width.GridUnitType == GridUnitType.Pixel)
                    {
                        width = table.ColumnDefinitions[column].Width.Value.ToString() + "px";
                    }
                    else
                    {
                        width = Math.Round((double)100 / table.ColumnDefinitions.Count).ToString() + "%";
                    }

                    switch ((VerticalAlignment)border.Child.GetValue(FrameworkElement.VerticalAlignmentProperty))
                    {
                    case VerticalAlignment.Top:
                        valign = "top";
                        break;

                    case VerticalAlignment.Center:
                        valign = "middle";
                        break;

                    case VerticalAlignment.Bottom:
                        valign = "bottom";
                        break;

                    default:
                        valign = "top";
                        break;
                    }

                    result.Append("<" + tag + " style=\"width:" + width + "; vertical-align:" + valign + ";\">");

                    if (border.Child is RichTextBlock)
                    {
                        richTextBlock = (RichTextBlock)border.Child;
                        temp          = richTextBlock.Save(Format.HTML, options).Trim();
                        if (temp.Length == 0)
                        {
                            temp = "<p>&nbsp;</p>";
                        }
                        result.Append(temp);
                    }
                    result.Append("</" + tag + ">\r");
                }
                result.Append("</tr>\r");
            }

            result.Append("</table>\r");

            return(result.ToString());
        }