Beispiel #1
0
        public EmailBuilder WithBody(IEnumerable<KeyValuePair<string, IList>> lists)
        {
            var writer = new StringWriter();
            var html = new HtmlTextWriter(writer);

            html.RenderBeginTag(HtmlTextWriterTag.H1);
            html.WriteEncodedText(_viewModel.Subject);
            html.RenderEndTag();
            html.WriteBreak();
            html.WriteBreak();
            foreach (var list in lists)
            {
                html.RenderBeginTag(HtmlTextWriterTag.H3);
                html.WriteEncodedText(list.Key);
                html.RenderEndTag();
                html.RenderBeginTag(HtmlTextWriterTag.Ul);
                foreach (var item in list.Value)
                {
                    html.RenderBeginTag(HtmlTextWriterTag.Li);
                    html.WriteEncodedText(item.ToString());
                    html.RenderEndTag();
                }
                html.RenderEndTag();
                html.WriteBreak();
                html.WriteBreak();
            }

            _viewModel.Body = writer.ToString();

            return this;
        }
Beispiel #2
0
		protected override void RenderContents(HtmlTextWriter writer)
		{
            bool beginTagWritten = false;
            foreach (var field in this.ContentView.Content.Fields.Values)
            {
                if (field.ValidationResult == null)
                    continue;
                if (this.ContentView.NeedToValidate && !field.ReadOnly && !field.IsValid)
                {
                    if (!beginTagWritten)
                    {
                        writer.AddAttribute(HtmlTextWriterAttribute.Class, "sn-error-msg");
                        writer.RenderBeginTag(HtmlTextWriterTag.Div);
                        beginTagWritten = true;
                    }
                    writer.Write(field.DisplayName);
                    writer.Write(": ");
                    writer.Write(ResolveValidationResult(field));
                    writer.WriteBreak();
                }
            }
            if (beginTagWritten)
                writer.RenderEndTag();
            if (this.ContentView.ContentException != null)
                RenderContentError(writer, this.ContentView.ContentException, this.Debug);
		}
        private static void GenerateGeneralPage(string inputFilePath, string outputFilePath, Dictionary<PackageKey, FeedPackage> feedPackages)
        {
            using (var stringWriter = new StringWriter())
            {
                using (var writer = new HtmlTextWriter(stringWriter))
                {
                    writer.RenderBeginTag(HtmlTextWriterTag.H1);
                    {
                        writer.WriteLine("Nuget Package Report Overview");
                    }
                    writer.RenderEndTag();

                    writer.WriteGeneralInformation(inputFilePath, feedPackages);
                    writer.WriteBreak();

                    writer.RenderBeginTag(HtmlTextWriterTag.Table);
                    {
                        WriteGeneralPageTableHeaders(writer, "Package Name", "Current Version", "Latest Version", "License",
                                                     "Instances");

                        foreach (var package in feedPackages)
                        {
                            WriteGeneralPagePackageRows(writer, package);
                        }
                    }
                    writer.RenderEndTag();

                    var content = writer.InnerWriter.ToString();

                    var path = Path.Combine(outputFilePath, GeneralPageFileName);
                    File.WriteAllText(path, content);
                    System.Diagnostics.Process.Start(path);
                }
            }
        }
Beispiel #4
0
 // Render the data source as a one-dimensional list.
 protected override void RenderContents(
     System.Web.UI.HtmlTextWriter writer)
 {
     // Render the data list.
     for (int col = 0; col < dataArray.Count; col++)
     {
         writer.Write(dataArray[col]);
         writer.WriteBreak();
     }
 }
Beispiel #5
0
		internal static void RenderContentError(HtmlTextWriter writer, Exception exception, bool debug)
		{
			if (exception == null)
				return;

			writer.AddAttribute(HtmlTextWriterAttribute.Class, "sn-error-msg");
		    writer.RenderBeginTag(HtmlTextWriterTag.Div);
            
            var e = exception;
            while (e != null)
            {
                writer.Write(e.Message);
                writer.WriteBreak();

                //only show inner messages if we are in debug mode);
                if (!debug)
                    break;

                e = e.InnerException;
            }

		    if (debug)
		    {
                if (exception.Data.Keys.Count > 0)
                {
                    writer.WriteBreak();

                    foreach (var key in exception.Data.Keys)
                    {
                        writer.Write(string.Format("{0}: {1}", key, exception.Data[key]));
                        writer.WriteBreak();
                    }

                    writer.WriteBreak();
                }

		        writer.Write(exception.StackTrace);
			    writer.WriteBreak();
		    }

			writer.RenderEndTag();
		}
Beispiel #6
0
        protected override void RenderContents(HtmlTextWriter writer)
        {
            foreach (var srGroup in Items.GetRange(0, (MaxCount < Items.Count) ? MaxCount : Items.Count))
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Class, "clearFix item");
                writer.RenderBeginTag(HtmlTextWriterTag.Div);

                writer.AddAttribute(HtmlTextWriterAttribute.Class, String.IsNullOrEmpty(srGroup.Description) ? "widebody" : "body");
                writer.RenderBeginTag(HtmlTextWriterTag.Div);
                writer.AddAttribute(HtmlTextWriterAttribute.Href, srGroup.URL);
                writer.AddAttribute(HtmlTextWriterAttribute.Class, "link bold");
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write(HtmlUtil.SearchTextHighlight(Text, srGroup.Name.HtmlEncode()));
                writer.RenderEndTag();

                if (!String.IsNullOrEmpty(srGroup.Description))
                {
                    writer.WriteBreak();

                    if (!string.IsNullOrEmpty(SpanClass))
                        writer.AddAttribute(HtmlTextWriterAttribute.Class, SpanClass);
                    writer.RenderBeginTag(HtmlTextWriterTag.Span);
                    writer.Write(CheckEmptyValue(srGroup.Description.HtmlEncode()));
                    writer.RenderEndTag();

                }
                writer.RenderEndTag();

                if (srGroup.Date.HasValue)
                {
                    writer.AddAttribute(HtmlTextWriterAttribute.Class, "date");
                    writer.RenderBeginTag(HtmlTextWriterTag.Div);

                    writer.AddAttribute(HtmlTextWriterAttribute.Style, "height:100%");
                    writer.RenderBeginTag(HtmlTextWriterTag.Table);
                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                    writer.RenderBeginTag(HtmlTextWriterTag.Td);

                    writer.Write(srGroup.Date.Value.ToShortDateString());

                    writer.RenderEndTag();
                    writer.RenderEndTag();
                    writer.RenderEndTag();

                    writer.RenderEndTag();
                }
                writer.RenderEndTag();
            }
        }
Beispiel #7
0
        protected override void RenderContents(HtmlTextWriter writer)
        {
            if (_buttons.Count == 0) return;

            GuayaquilHelper.WriteBoxBorder(writer, "xtop");
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "xboxcontent");
            writer.AddAttribute(HtmlTextWriterAttribute.Id, "guayaquil_toolbar");
            writer.RenderBeginTag(HtmlTextWriterTag.Div);

            foreach (ToolBarButton button in _buttons)
            {
                WriteButton(writer, button);
            }

            writer.RenderEndTag();
            GuayaquilHelper.WriteBoxBorder(writer, "xbottom");
            writer.WriteBreak();
        }
Beispiel #8
0
        protected override void RenderContents(HtmlTextWriter writer)
        {
            var contentPath = string.Empty;
            var currentUrlList = GetSiteUrlList(ref contentPath);
            var protocol = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Scheme);
            
            #region template

            if (UseBrowseTemplate)
            {
                Try2AddUrlLinks(contentPath, currentUrlList, protocol);
                base.RenderContents(writer);
                return;
            }
            if (UseEditTemplate)
            {
                Try2AddUrlLinks(contentPath, currentUrlList, protocol);
                base.RenderContents(writer);
                return;
            }
            if (UseInlineEditTemplate)
            {
                Try2AddUrlLinks(contentPath, currentUrlList, protocol);
                base.RenderContents(writer);
                return;
            }

            #endregion

            foreach (var siteUrl in currentUrlList)
            {
                var url = string.Concat(protocol, siteUrl, contentPath);
                var link = new System.Web.UI.WebControls.HyperLink();
                link.NavigateUrl = url;
                link.Text = url;
                link.Target = "new";
                link.CssClass = this.CssClass;
                link.RenderControl(writer);
                writer.WriteBreak();
            }
        }
Beispiel #9
0
        /// <summary>
        /// Hàm xuất excel
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="titleExport">Tiêu đề xuất excel</param>
        /// <param name="nameFile">Tên file excel</param>
        /// <param name="infoExport">Những thông tin cần bổ sung vào file Export</param>
        /// <param name="columnGridViews">Cấu hình cột của gridview</param>
        /// <param name="rowspanTotal">Có dòng hiển thị header</param>
        /// <param name="list">Danh sách cần hiển thị</param>
        /// <param name="fromDate">Xem báo cáo từ ngày</param>
        /// <param name="toDate">Xem báo cáo đên ngày</param>
        /// <param name="exportDate">Ngày xuất báo cáo</param>
        /// <param name="isShowFooter">Có hiển thị Footer của GridView</param>
        public static string ExportExcelFile <T>(string titleExport, string nameFile, string infoExport,
                                                 List <ColumnGridView> columnGridViews,
                                                 int rowspanTotal, List <T> list, string fromDate, string toDate, string exportDate, bool isShowFooter = true)
        {
            System.IO.StringWriter       sw = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
            var gridView = SettingGridView(columnGridViews, rowspanTotal, TypeExport.Excel, list, isShowFooter);

            hw.Write(
                "<div style='font-size: 24px; font-weight: bold;'>" +
                "HỆ THỐNG ZOTOP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
                titleExport.ToUpper() + "</div>");
            hw.Write("<div style='text-align:center;'>Giao dịch ngày:" + fromDate + "</div>");
            hw.Write("<div style='text-align:center;'>Ngày xuất:" + exportDate + "</div>");
            hw.Write(infoExport);
            hw.WriteBreak();
            gridView.RenderControl(hw);
            string fileName = Path.Combine(HttpContext.Current.Server.MapPath("~/"), nameFile + "_" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ii") + ".xls");

            File.WriteAllText(fileName, sw.ToString());
            return(fileName);
        }
 private void RenderExistingConnections(HtmlTextWriter writer) {
     WebPartManager manager = WebPartManager;
     bool headerRendered = false;
     bool consumersHeaderRendered = false;
     bool providersHeaderRendered = false;
     if (manager != null) {
         WebPart webPartToConnect = WebPartToConnect;
         // First, display connections for which we are providers (connections to consumers)
         WebPartConnectionCollection connections = manager.Connections;
         foreach (WebPartConnection connection in connections) {
             if (connection.Provider == webPartToConnect) {
                 if (!headerRendered) {
                     RenderInstructionTitle(writer);
                     RenderInstructionText(writer);
                     headerRendered = true;
                 }
                 if (!consumersHeaderRendered) {
                     writer.RenderBeginTag(HtmlTextWriterTag.Fieldset);
                     LabelStyle.AddAttributesToRender(writer, this);
                     writer.RenderBeginTag(HtmlTextWriterTag.Legend);
                     writer.Write(ConsumersTitle);
                     writer.RenderEndTag(); // Legend
                     string instructionText = ConsumersInstructionText;
                     if (!String.IsNullOrEmpty(instructionText)) {
                         writer.WriteBreak();
                         Label label = new Label();
                         label.Text = instructionText;
                         label.Page = Page;
                         label.ApplyStyle(InstructionTextStyle);
                         label.RenderControl(writer);
                         writer.WriteBreak();
                     }
                     consumersHeaderRendered = true;
                 }
                 RenderExistingConsumerConnection(writer, connection);
             }
         }
         if (consumersHeaderRendered) {
             writer.RenderEndTag(); // Fieldset
         }
         // Then, display connections for which we are consumers (connections to providers)
         foreach (WebPartConnection connection in connections) {
             if (connection.Consumer == webPartToConnect) {
                 if (!headerRendered) {
                     RenderInstructionTitle(writer);
                     RenderInstructionText(writer);
                     headerRendered = true;
                 }
                 if (!providersHeaderRendered) {
                     writer.RenderBeginTag(HtmlTextWriterTag.Fieldset);
                     LabelStyle.AddAttributesToRender(writer, this);
                     writer.RenderBeginTag(HtmlTextWriterTag.Legend);
                     writer.Write(ProvidersTitle);
                     writer.RenderEndTag(); // Legend
                     string instructionText = ProvidersInstructionText;
                     if (!String.IsNullOrEmpty(instructionText)) {
                         writer.WriteBreak();
                         Label label = new Label();
                         label.Text = instructionText;
                         label.Page = Page;
                         label.ApplyStyle(InstructionTextStyle);
                         label.RenderControl(writer);
                         writer.WriteBreak();
                     }
                     providersHeaderRendered = true;
                 }
                 RenderExistingProviderConnection(writer, connection);
             }
         }
     }
     if (providersHeaderRendered) {
         writer.RenderEndTag(); // Fieldset
     }
     if (headerRendered) {
         writer.WriteBreak();
     }
     else {
         RenderNoExistingConnection(writer);
     }
 }
        private void RenderConnectToProvidersDropDowns(HtmlTextWriter writer) {
            WebPart webPartToConnect = WebPartToConnect;

            if (webPartToConnect != null) {
                ConsumerConnectionPointCollection consumers =
                    WebPartManager.GetEnabledConsumerConnectionPoints(webPartToConnect);
                bool first = true;
                Label label = new Label();
                label.Page = Page;
                label.AssociatedControlInControlTree = false;
                foreach (ConsumerConnectionPoint consumer in consumers) {
                    DropDownList list = (DropDownList)_connectDropDownLists[consumer];
                    if ((list == null) || !list.Enabled) {
                        continue;
                    }

                    if (first) {
                        string connectToProviderTitle = ConnectToProviderTitle;
                        if (!String.IsNullOrEmpty(connectToProviderTitle)) {
                            label.Text = connectToProviderTitle;
                            label.ApplyStyle(LabelStyle);
                            label.AssociatedControlID = String.Empty;
                            label.RenderControl(writer);
                            writer.WriteBreak();
                        }

                        string connectToProviderInstructionText = ConnectToProviderInstructionText;
                        if (!String.IsNullOrEmpty(connectToProviderInstructionText)) {
                            writer.WriteBreak();
                            label.Text = connectToProviderInstructionText;
                            label.ApplyStyle(InstructionTextStyle);
                            label.AssociatedControlID = String.Empty;
                            label.RenderControl(writer);
                            writer.WriteBreak();
                        }

                        first = false;
                    }

                    writer.RenderBeginTag(HtmlTextWriterTag.Fieldset);

                    writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
                    writer.RenderBeginTag(HtmlTextWriterTag.Table);
                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                    writer.RenderBeginTag(HtmlTextWriterTag.Td);

                    label.ApplyStyle(LabelStyle);
                    label.Text = GetText;
                    label.AssociatedControlID = String.Empty;
                    label.RenderControl(writer);

                    writer.RenderEndTag(); // TD

                    LabelStyle.AddAttributesToRender(writer, this);
                    writer.RenderBeginTag(HtmlTextWriterTag.Td);

                    writer.WriteEncodedText(consumer.DisplayName);

                    writer.RenderEndTag(); // TD
                    writer.RenderEndTag(); // TR
                    writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                    writer.RenderBeginTag(HtmlTextWriterTag.Td);

                    label.Text = GetFromText;
                    label.AssociatedControlID = list.ClientID;
                    label.RenderControl(writer);

                    writer.RenderEndTag(); // TD
                    writer.RenderBeginTag(HtmlTextWriterTag.Td);

                    list.ApplyStyle(EditUIStyle);
                    list.RenderControl(writer);

                    writer.RenderEndTag(); // TD
                    writer.RenderEndTag(); // TR
                    writer.RenderEndTag(); // TABLE

                    WebPartVerb connectVerb = ConnectVerb;
                    connectVerb.EventArgument = String.Join(ID_SEPARATOR.ToString(CultureInfo.InvariantCulture),
                        new string[] { connectEventArgument, consumerEventArgument, consumer.ID });
                    RenderVerb(writer, connectVerb);

                    writer.RenderEndTag(); // FIELDSET
                }
                writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign, "right");
                writer.RenderBeginTag(HtmlTextWriterTag.Div);
                WebPartVerb cancelVerb = CancelVerb;
                cancelVerb.EventArgument = cancelEventArgument;
                RenderVerb(writer, cancelVerb);
                writer.RenderEndTag();
            }
        }
        private void RenderAddVerbs(HtmlTextWriter writer) {
            WebPart webPartToConnect = WebPartToConnect;

            WebPartCollection webParts = null;
            if (WebPartManager != null) {
                webParts = WebPartManager.WebParts;
            }

            if (webPartToConnect != null || DesignMode) {
                // Are there any compatible consumers?
                bool consumersAvailable = DesignMode;
                if (!consumersAvailable && WebPartManager != null) {
                    ProviderConnectionPointCollection providers =
                        WebPartManager.GetEnabledProviderConnectionPoints(webPartToConnect);
                    foreach (ProviderConnectionPoint provider in providers) {
                        if (GetValidConsumers(webPartToConnect, provider, webParts).Count != 0) {
                            consumersAvailable = true;
                            break;
                        }
                    }
                }
                if (consumersAvailable) {
                    ZoneLinkButton connectConsumerButton = new ZoneLinkButton(this, connectConsumerEventArgument);
                    connectConsumerButton.Text = ConnectToConsumerText;
                    connectConsumerButton.ApplyStyle(VerbStyle);
                    connectConsumerButton.Page = Page;
                    connectConsumerButton.RenderControl(writer);
                    writer.WriteBreak();
                }

                // Are there any compatible providers?
                bool providersAvailable = DesignMode;
                if (!providersAvailable && WebPartManager != null) {
                    ConsumerConnectionPointCollection consumers =
                        WebPartManager.GetEnabledConsumerConnectionPoints(webPartToConnect);
                    foreach (ConsumerConnectionPoint consumer in consumers) {
                        if (GetValidProviders(webPartToConnect, consumer, webParts).Count != 0) {
                            providersAvailable = true;
                            break;
                        }
                    }
                }
                if (providersAvailable) {
                    ZoneLinkButton connectProviderButton = new ZoneLinkButton(this, connectProviderEventArgument);
                    connectProviderButton.Text = ConnectToProviderText;
                    connectProviderButton.ApplyStyle(VerbStyle);
                    connectProviderButton.Page = Page;
                    connectProviderButton.RenderControl(writer);
                    writer.WriteBreak();
                }

                // Add separator if anything was rendered
                if (providersAvailable || consumersAvailable) {
                    writer.RenderBeginTag(HtmlTextWriterTag.Hr);
                    writer.RenderEndTag();
                }
            }
        }
        protected override void RenderContents(HtmlTextWriter output)
        {
            if (!string.IsNullOrEmpty(_timePickerXml.Label.Text))
            {
                Label lbl = new Label();
                lbl.ID = string.Format("lbl{0}", _timePickerXml.Name);
                lbl.Text = _timePickerXml.Label.Text;

                if (!string.IsNullOrEmpty(_timePickerXml.Label.Css))
                    lbl.CssClass = _timePickerXml.Label.Css;

                if (!string.IsNullOrEmpty(_timePickerXml.Label.Style))
                {
                    string[] styles = _timePickerXml.Label.Style.Split(';');

                    foreach (string style in styles)
                    {
                        string[] attributes = style.Split(':');

                        if (attributes.Length == 2)
                            lbl.Style.Add(attributes[0], attributes[1]);
                    }
                }

                lbl.RenderControl(output);
            }

            if (!string.IsNullOrEmpty(_timePickerXml.Css))
            {
                this._textBox.CssClass = _timePickerXml.Css;
            }

            if (!string.IsNullOrEmpty(_timePickerXml.Style))
            {
                string[] styles = _timePickerXml.Style.Split(';');

                foreach (string style in styles)
                {
                    string[] attributes = style.Split(':');

                    if (attributes.Length == 2)
                        this._textBox.Style.Add(attributes[0], attributes[1]);
                }
            }

            base.RenderContents(output);
            output.WriteBreak();
        }
        protected override void Render(HtmlTextWriter writer)
        {
            if (this._searchBarLabel != null)
            {
                _searchBarLabel.RenderControl(writer);
            }

            foreach (Button b  in this.ButtonList)
            {
                b.RenderControl(writer);
            }
            writer.WriteBreak();
            this._searchText.RenderControl(writer);
            this._searchButton.RenderControl(writer);

        }
 private void RenderNoExistingConnection(HtmlTextWriter writer)
 {
     string noExistingConnectionTitle = this.NoExistingConnectionTitle;
     if (!string.IsNullOrEmpty(noExistingConnectionTitle))
     {
         Label label = new Label {
             Text = noExistingConnectionTitle,
             Page = this.Page
         };
         label.ApplyStyle(base.LabelStyle);
         label.RenderControl(writer);
         writer.WriteBreak();
         writer.WriteBreak();
     }
     string noExistingConnectionInstructionText = this.NoExistingConnectionInstructionText;
     if (!string.IsNullOrEmpty(noExistingConnectionInstructionText))
     {
         Label label2 = new Label {
             Text = noExistingConnectionInstructionText,
             Page = this.Page
         };
         label2.ApplyStyle(base.InstructionTextStyle);
         label2.RenderControl(writer);
         writer.WriteBreak();
         writer.WriteBreak();
     }
 }
        private void RenderInstructionTitle(HtmlTextWriter writer) {
            if (this.PartChromeType == PartChromeType.None ||
                this.PartChromeType == PartChromeType.BorderOnly)
                return;

            string instructionTitle = InstructionTitle;
            if (!String.IsNullOrEmpty(instructionTitle)) {
                Label label = new Label();
                if (WebPartToConnect != null) {
                    label.Text = String.Format(CultureInfo.CurrentCulture, instructionTitle, WebPartToConnect.DisplayTitle);
                }
                else {
                    label.Text = instructionTitle;
                }
                label.Page = Page;
                label.ApplyStyle(LabelStyle);
                label.RenderControl(writer);
                writer.WriteBreak();
            }
        }
Beispiel #17
0
        public static void DumpParsers(GameDataManager gameDataManager, Type parserType, string outputFilename)
        {
            List <BaseParser> parsedToDump = gameDataManager.ParsedData.Where(x => x.GetType() == parserType).ToList();

            PropertyInfo[] properties = parserType.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.FlattenHierarchy)
                                        .Where(x => !x.GetGetMethod().IsVirtual&& (x.GetAttribute <BrowsableAttribute>() == null || x.GetAttribute <BrowsableAttribute>().Browsable == true) && x.DeclaringType != typeof(BaseParser))
                                        .OrderBy(x => x.GetAttribute <Yggdrasil.Attributes.PrioritizedCategory>().Category)
                                        .ToArray();

            TextWriter writer = File.CreateText(outputFilename);

            using (WebUI.HtmlTextWriter html = new WebUI.HtmlTextWriter(writer))
            {
                html.WriteLine("<!DOCTYPE html>");
                html.RenderBeginTag(WebUI.HtmlTextWriterTag.Html);
                {
                    WriteHeader(html, string.Format("{0} Data Dump for {1}", System.Windows.Forms.Application.ProductName, parserType.GetAttribute <Yggdrasil.Attributes.ParserDescriptor>().Description));

                    html.RenderBeginTag(WebUI.HtmlTextWriterTag.Body);
                    {
                        html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "container");
                        html.RenderBeginTag(WebUI.HtmlTextWriterTag.Div);
                        {
                            html.WriteEncodedText(string.Format("Data dump created by {0} {1}; dumping {2} entries of type '{3}'...",
                                                                System.Windows.Forms.Application.ProductName,
                                                                VersionManagement.CreateVersionString(System.Windows.Forms.Application.ProductVersion),
                                                                parsedToDump.Count,
                                                                parserType.GetAttribute <Yggdrasil.Attributes.ParserDescriptor>().Description));
                            html.WriteBreak();
                            html.WriteBreak();
                        }
                        html.RenderEndTag();

                        foreach (BaseParser parser in parsedToDump)
                        {
                            string parserId = string.Format("table-{0:D4}", parser.EntryNumber);

                            html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "container");
                            html.RenderBeginTag(WebUI.HtmlTextWriterTag.Div);
                            {
                                html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "header");
                                html.RenderBeginTag(WebUI.HtmlTextWriterTag.Div);
                                {
                                    html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "header-text");
                                    html.RenderBeginTag(WebUI.HtmlTextWriterTag.Span);
                                    {
                                        html.WriteEncodedText(string.Format("Entry {0:D4}: {1}", parser.EntryNumber, parser.EntryDescription));
                                    }
                                    html.RenderEndTag();

                                    html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "header-toggle");
                                    html.RenderBeginTag(WebUI.HtmlTextWriterTag.Span);
                                    {
                                        html.AddAttribute(WebUI.HtmlTextWriterAttribute.Href, string.Format("javascript:toggle('{0}');", parserId), false);
                                        html.RenderBeginTag(WebUI.HtmlTextWriterTag.A);
                                        {
                                            html.Write("+/-");
                                        }
                                        html.RenderEndTag();
                                    }
                                    html.RenderEndTag();
                                }
                                html.RenderEndTag();

                                html.AddAttribute(WebUI.HtmlTextWriterAttribute.Id, parserId);
                                html.RenderBeginTag(WebUI.HtmlTextWriterTag.Table);
                                {
                                    string lastCategory = string.Empty;
                                    foreach (PropertyInfo property in properties)
                                    {
                                        string propCategory = ((string)property.GetAttribute <Yggdrasil.Attributes.PrioritizedCategory>().Category).Replace("\t", "");
                                        if (propCategory != lastCategory)
                                        {
                                            lastCategory = propCategory;
                                            html.RenderBeginTag(WebUI.HtmlTextWriterTag.Tr);
                                            {
                                                html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "header");
                                                html.AddAttribute(WebUI.HtmlTextWriterAttribute.Colspan, "2");
                                                html.RenderBeginTag(WebUI.HtmlTextWriterTag.Td);
                                                {
                                                    html.Write(propCategory);
                                                }
                                                html.RenderEndTag();
                                            }
                                            html.RenderEndTag();
                                        }
                                        html.RenderBeginTag(WebUI.HtmlTextWriterTag.Tr);
                                        {
                                            html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "desc-column");
                                            html.RenderBeginTag(WebUI.HtmlTextWriterTag.Td);
                                            {
                                                DisplayNameAttribute displayName = property.GetAttribute <DisplayNameAttribute>();
                                                DescriptionAttribute description = property.GetAttribute <DescriptionAttribute>();

                                                html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "tooltip");
                                                html.RenderBeginTag(WebUI.HtmlTextWriterTag.Span);
                                                {
                                                    html.WriteEncodedText(displayName.DisplayName);
                                                    if (description != null)
                                                    {
                                                        html.RenderBeginTag(WebUI.HtmlTextWriterTag.Span);
                                                        {
                                                            html.WriteEncodedText(description.Description);
                                                        }
                                                        html.RenderEndTag();
                                                    }
                                                }
                                                html.RenderEndTag();
                                            }
                                            html.RenderEndTag();

                                            html.RenderBeginTag(WebUI.HtmlTextWriterTag.Td);
                                            {
                                                object v = property.GetValue(parser, null);
                                                TypeConverterAttribute ca = (TypeConverterAttribute)property.GetCustomAttributes(typeof(TypeConverterAttribute), false).FirstOrDefault();
                                                TypeConverter          c  = new TypeConverter();
                                                if (ca != null)
                                                {
                                                    Type ct = Type.GetType(ca.ConverterTypeName);
                                                    if (ct == typeof(EnumConverter))
                                                    {
                                                        c = (TypeConverter)Activator.CreateInstance(ct, new object[] { property.PropertyType });
                                                    }
                                                    else
                                                    {
                                                        c = (TypeConverter)Activator.CreateInstance(ct);
                                                    }
                                                }
                                                var tmp = c.ConvertTo(v, typeof(string));
                                                html.WriteEncodedText(tmp as string);
                                            }
                                            html.RenderEndTag();
                                        }
                                        html.RenderEndTag();
                                    }
                                }
                                html.RenderEndTag();
                            }
                            html.RenderEndTag();
                        }
                    }
                    html.RenderEndTag();
                }
                html.RenderEndTag();
            }
            writer.Close();
        }
 /// <summary>
 /// Render the WebWindow Close button
 /// </summary>
 private void RenderCloseButton(HtmlTextWriter writer)
 {
     if (_showCloseButton)
     {
         String eventRef = Page.ClientScript.GetPostBackEventReference(this, String.Empty);
         writer.AddAttribute(HtmlTextWriterAttribute.Onclick, eventRef);
         writer.AddAttribute(HtmlTextWriterAttribute.Class, "webWindowClose");
         writer.RenderBeginTag(HtmlTextWriterTag.Span);
         writer.Write("X");
         writer.RenderEndTag();
     }
     else
     {
         writer.WriteBreak();
     }
 }
        private void RenderTransformerConfigurationHeader(HtmlTextWriter writer) {
            Debug.Assert(_pendingTransformer != null);

            if (EnsurePendingData()) {
                Debug.Assert(_pendingConsumer != null && _pendingProvider != null
                             && _pendingConsumerConnectionPoint != null
                             && _pendingProviderConnectionPoint != null);

                string connectionPointName = null;
                string partTitle = null;

                bool isConsumer = (_pendingConsumer == WebPartToConnect);
                if (_pendingConnectionType == ConnectionType.Consumer && isConsumer) {
                    // This happens if we are in a consumer, connecting or reconnecting a provider
                    partTitle = _pendingProvider.DisplayTitle;
                    connectionPointName = _pendingConsumerConnectionPoint.DisplayName;
                }
                else {
                    // This happens if we are reconnecting a consumer from a provider
                    partTitle = _pendingConsumer.DisplayTitle;
                    connectionPointName = _pendingProviderConnectionPoint.DisplayName;
                }

                Label label = new Label();
                label.Page = Page;
                label.ApplyStyle(LabelStyle);
                label.Text = (isConsumer ? ConnectToProviderTitle : ConnectToConsumerTitle);
                label.RenderControl(writer);

                writer.WriteBreak();
                writer.WriteBreak();

                label.ApplyStyle(InstructionTextStyle);
                label.Text = (isConsumer ? ConnectToProviderInstructionText : ConnectToConsumerInstructionText);
                label.RenderControl(writer);

                writer.WriteBreak();
                writer.WriteBreak();

                writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
                writer.RenderBeginTag(HtmlTextWriterTag.Table);
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                writer.RenderBeginTag(HtmlTextWriterTag.Td);

                label.ApplyStyle(LabelStyle);
                label.Text = (isConsumer ? GetText : SendText);
                label.RenderControl(writer);

                writer.RenderEndTag(); // TD
                LabelStyle.AddAttributesToRender(writer, this);
                writer.RenderBeginTag(HtmlTextWriterTag.Td);

                writer.WriteEncodedText(connectionPointName);

                writer.RenderEndTag(); // TD
                writer.RenderEndTag(); // TR
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                writer.RenderBeginTag(HtmlTextWriterTag.Td);

                label.Text = (isConsumer ? GetFromText : SendToText);
                label.RenderControl(writer);

                writer.RenderEndTag(); // TD
                LabelStyle.AddAttributesToRender(writer, this);
                writer.RenderBeginTag(HtmlTextWriterTag.Td);

                writer.WriteEncodedText(partTitle);

                writer.RenderEndTag(); // TD
                writer.RenderEndTag(); // TR
                writer.RenderEndTag(); // TABLE

                writer.WriteBreak();

                writer.RenderBeginTag(HtmlTextWriterTag.Hr);
                writer.RenderEndTag(); // HR

                writer.WriteBreak();

                label.ApplyStyle(LabelStyle);
                label.Text = ConfigureConnectionTitle;
                label.RenderControl(writer);

                writer.WriteBreak();
                writer.WriteBreak();
            }
        }
Beispiel #20
0
        public static void DumpMessages(GameDataManager gameDataManager, List <TableFile> tableFiles, string outputFilename)
        {
            string strippedName = Path.GetFileNameWithoutExtension(tableFiles.FirstOrDefault().Filename);

            if (gameDataManager.Version == GameDataManager.Versions.European)
            {
                foreach (KeyValuePair <GameDataManager.Languages, string> pair in gameDataManager.LanguageSuffixes)
                {
                    strippedName = strippedName.Replace(pair.Value, "");
                }
            }

            int numTables = (int)tableFiles.FirstOrDefault().NumTables;

            if (!tableFiles.All(x => x.NumTables == numTables))
            {
                throw new Exception("Num tables mismatch!");
            }

            TextWriter writer = File.CreateText(outputFilename);

            using (WebUI.HtmlTextWriter html = new WebUI.HtmlTextWriter(writer))
            {
                html.WriteLine("<!DOCTYPE html>");
                html.RenderBeginTag(WebUI.HtmlTextWriterTag.Html);
                {
                    WriteHeader(html, string.Format("{0} Message Dump for {1}", System.Windows.Forms.Application.ProductName, strippedName));

                    html.RenderBeginTag(WebUI.HtmlTextWriterTag.Body);
                    {
                        html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "container");
                        html.RenderBeginTag(WebUI.HtmlTextWriterTag.Div);
                        {
                            html.WriteEncodedText(string.Format("Message dump created by {0} {1}; dumping {2}, {3} tables...",
                                                                System.Windows.Forms.Application.ProductName,
                                                                VersionManagement.CreateVersionString(System.Windows.Forms.Application.ProductVersion),
                                                                (tableFiles.FirstOrDefault().FileNumber != -1 ? string.Format("{0}, file #{1}", strippedName, tableFiles.FirstOrDefault().FileNumber) : strippedName),
                                                                numTables));
                            html.WriteBreak();
                            html.WriteBreak();
                        }
                        html.RenderEndTag();

                        for (int i = 0; i < numTables; i++)
                        {
                            string tableId = string.Format("table-{0:D4}", i);

                            html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "header");
                            html.RenderBeginTag(WebUI.HtmlTextWriterTag.Div);
                            {
                                html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "header-text");
                                html.RenderBeginTag(WebUI.HtmlTextWriterTag.Span);
                                {
                                    html.Write("Table {0}", i + 1);
                                }
                                html.RenderEndTag();

                                html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "header-toggle");
                                html.RenderBeginTag(WebUI.HtmlTextWriterTag.Span);
                                {
                                    html.AddAttribute(WebUI.HtmlTextWriterAttribute.Href, string.Format("javascript:toggle('{0}');", tableId), false);
                                    html.RenderBeginTag(WebUI.HtmlTextWriterTag.A);
                                    {
                                        html.Write("+/-");
                                    }
                                    html.RenderEndTag();
                                }
                                html.RenderEndTag();
                            }
                            html.RenderEndTag();

                            html.AddAttribute(WebUI.HtmlTextWriterAttribute.Id, tableId);
                            html.AddStyleAttribute(WebUI.HtmlTextWriterStyle.Display, "table");
                            html.RenderBeginTag(WebUI.HtmlTextWriterTag.Table);
                            {
                                html.RenderBeginTag(WebUI.HtmlTextWriterTag.Tr);
                                {
                                    html.RenderBeginTag(WebUI.HtmlTextWriterTag.Th);
                                    {
                                        html.Write("ID");
                                    }
                                    html.RenderEndTag();

                                    foreach (TableFile file in tableFiles)
                                    {
                                        html.RenderBeginTag(WebUI.HtmlTextWriterTag.Th);
                                        {
                                            string language = Path.GetFileNameWithoutExtension(file.Filename);
                                            language = gameDataManager.LanguageSuffixes.FirstOrDefault(x => x.Value == language.Substring(language.LastIndexOf('_'), 3)).Key.ToString();
                                            html.Write(language);
                                        }
                                        html.RenderEndTag();
                                    }
                                }
                                html.RenderEndTag();

                                int numMessages = (int)(tableFiles.FirstOrDefault().Tables[i] as MessageTable).NumMessages;
                                for (int j = 0; j < numMessages; j++)
                                {
                                    if ((tableFiles.FirstOrDefault().Tables[i] as MessageTable).Messages[j].RawData.Length == 0)
                                    {
                                        continue;
                                    }

                                    html.RenderBeginTag(WebUI.HtmlTextWriterTag.Tr);
                                    {
                                        html.AddAttribute(WebUI.HtmlTextWriterAttribute.Class, "desc-column-mesg");
                                        html.RenderBeginTag(WebUI.HtmlTextWriterTag.Th);
                                        {
                                            html.Write("#{0}", j);
                                        }
                                        html.RenderEndTag();

                                        for (int k = 0; k < tableFiles.Count; k++)
                                        {
                                            html.RenderBeginTag(WebUI.HtmlTextWriterTag.Td);
                                            {
                                                string message = (tableFiles[k].Tables[i] as MessageTable).Messages[j].ConvertedString;
                                                message = message.Replace("<!pg>", "");
                                                message = message.Replace(" ", "&nbsp;");
                                                message = message.Replace("<", "&lt;");
                                                message = message.Replace(">", "&gt;");
                                                message = message.Replace(Environment.NewLine, "<br />");
                                                html.Write(message);
                                            }
                                            html.RenderEndTag();
                                        }
                                    }
                                    html.RenderEndTag();
                                }
                            }
                            html.RenderEndTag();
                            html.WriteBreak();
                        }
                    }
                    html.RenderEndTag();
                }
                html.RenderEndTag();
            }
            writer.Close();
        }
 private void RenderConnectToProvidersDropDowns(HtmlTextWriter writer)
 {
     WebPart webPartToConnect = this.WebPartToConnect;
     if (webPartToConnect != null)
     {
         ConsumerConnectionPointCollection enabledConsumerConnectionPoints = base.WebPartManager.GetEnabledConsumerConnectionPoints(webPartToConnect);
         bool flag = true;
         Label label = new Label {
             Page = this.Page,
             AssociatedControlInControlTree = false
         };
         foreach (ConsumerConnectionPoint point in enabledConsumerConnectionPoints)
         {
             DropDownList list = (DropDownList) this._connectDropDownLists[point];
             if ((list != null) && list.Enabled)
             {
                 if (flag)
                 {
                     string connectToProviderTitle = this.ConnectToProviderTitle;
                     if (!string.IsNullOrEmpty(connectToProviderTitle))
                     {
                         label.Text = connectToProviderTitle;
                         label.ApplyStyle(base.LabelStyle);
                         label.AssociatedControlID = string.Empty;
                         label.RenderControl(writer);
                         writer.WriteBreak();
                     }
                     string connectToProviderInstructionText = this.ConnectToProviderInstructionText;
                     if (!string.IsNullOrEmpty(connectToProviderInstructionText))
                     {
                         writer.WriteBreak();
                         label.Text = connectToProviderInstructionText;
                         label.ApplyStyle(base.InstructionTextStyle);
                         label.AssociatedControlID = string.Empty;
                         label.RenderControl(writer);
                         writer.WriteBreak();
                     }
                     flag = false;
                 }
                 writer.RenderBeginTag(HtmlTextWriterTag.Fieldset);
                 writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
                 writer.RenderBeginTag(HtmlTextWriterTag.Table);
                 writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                 writer.RenderBeginTag(HtmlTextWriterTag.Td);
                 label.ApplyStyle(base.LabelStyle);
                 label.Text = this.GetText;
                 label.AssociatedControlID = string.Empty;
                 label.RenderControl(writer);
                 writer.RenderEndTag();
                 base.LabelStyle.AddAttributesToRender(writer, this);
                 writer.RenderBeginTag(HtmlTextWriterTag.Td);
                 writer.WriteEncodedText(point.DisplayName);
                 writer.RenderEndTag();
                 writer.RenderEndTag();
                 writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                 writer.RenderBeginTag(HtmlTextWriterTag.Td);
                 label.Text = this.GetFromText;
                 label.AssociatedControlID = list.ClientID;
                 label.RenderControl(writer);
                 writer.RenderEndTag();
                 writer.RenderBeginTag(HtmlTextWriterTag.Td);
                 list.ApplyStyle(base.EditUIStyle);
                 list.RenderControl(writer);
                 writer.RenderEndTag();
                 writer.RenderEndTag();
                 writer.RenderEndTag();
                 WebPartVerb connectVerb = this.ConnectVerb;
                 connectVerb.EventArgument = string.Join('$'.ToString(CultureInfo.InvariantCulture), new string[] { "connect", "consumer", point.ID });
                 this.RenderVerb(writer, connectVerb);
                 writer.RenderEndTag();
             }
         }
         writer.AddStyleAttribute(HtmlTextWriterStyle.TextAlign, "right");
         writer.RenderBeginTag(HtmlTextWriterTag.Div);
         WebPartVerb cancelVerb = this.CancelVerb;
         cancelVerb.EventArgument = "cancel";
         this.RenderVerb(writer, cancelVerb);
         writer.RenderEndTag();
     }
 }
 private void RenderAddVerbs(HtmlTextWriter writer)
 {
     WebPart webPartToConnect = this.WebPartToConnect;
     WebPartCollection webParts = null;
     if (base.WebPartManager != null)
     {
         webParts = base.WebPartManager.WebParts;
     }
     if ((webPartToConnect != null) || base.DesignMode)
     {
         bool designMode = base.DesignMode;
         if (!designMode && (base.WebPartManager != null))
         {
             foreach (ProviderConnectionPoint point in base.WebPartManager.GetEnabledProviderConnectionPoints(webPartToConnect))
             {
                 if (this.GetValidConsumers(webPartToConnect, point, webParts).Count != 0)
                 {
                     designMode = true;
                     break;
                 }
             }
         }
         if (designMode)
         {
             ZoneLinkButton button = new ZoneLinkButton(this, "connectconsumer") {
                 Text = this.ConnectToConsumerText
             };
             button.ApplyStyle(base.VerbStyle);
             button.Page = this.Page;
             button.RenderControl(writer);
             writer.WriteBreak();
         }
         bool flag2 = base.DesignMode;
         if (!flag2 && (base.WebPartManager != null))
         {
             foreach (ConsumerConnectionPoint point2 in base.WebPartManager.GetEnabledConsumerConnectionPoints(webPartToConnect))
             {
                 if (this.GetValidProviders(webPartToConnect, point2, webParts).Count != 0)
                 {
                     flag2 = true;
                     break;
                 }
             }
         }
         if (flag2)
         {
             ZoneLinkButton button2 = new ZoneLinkButton(this, "connectprovider") {
                 Text = this.ConnectToProviderText
             };
             button2.ApplyStyle(base.VerbStyle);
             button2.Page = this.Page;
             button2.RenderControl(writer);
             writer.WriteBreak();
         }
         if (flag2 || designMode)
         {
             writer.RenderBeginTag(HtmlTextWriterTag.Hr);
             writer.RenderEndTag();
         }
     }
 }
 private void RenderTransformerConfigurationHeader(HtmlTextWriter writer)
 {
     if (this.EnsurePendingData())
     {
         string text = null;
         string displayTitle = null;
         bool flag = this._pendingConsumer == this.WebPartToConnect;
         if ((this._pendingConnectionType == ConnectionType.Consumer) && flag)
         {
             displayTitle = this._pendingProvider.DisplayTitle;
             text = this._pendingConsumerConnectionPoint.DisplayName;
         }
         else
         {
             displayTitle = this._pendingConsumer.DisplayTitle;
             text = this._pendingProviderConnectionPoint.DisplayName;
         }
         Label label = new Label {
             Page = this.Page
         };
         label.ApplyStyle(base.LabelStyle);
         label.Text = flag ? this.ConnectToProviderTitle : this.ConnectToConsumerTitle;
         label.RenderControl(writer);
         writer.WriteBreak();
         writer.WriteBreak();
         label.ApplyStyle(base.InstructionTextStyle);
         label.Text = flag ? this.ConnectToProviderInstructionText : this.ConnectToConsumerInstructionText;
         label.RenderControl(writer);
         writer.WriteBreak();
         writer.WriteBreak();
         writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
         writer.RenderBeginTag(HtmlTextWriterTag.Table);
         writer.RenderBeginTag(HtmlTextWriterTag.Tr);
         writer.RenderBeginTag(HtmlTextWriterTag.Td);
         label.ApplyStyle(base.LabelStyle);
         label.Text = flag ? this.GetText : this.SendText;
         label.RenderControl(writer);
         writer.RenderEndTag();
         base.LabelStyle.AddAttributesToRender(writer, this);
         writer.RenderBeginTag(HtmlTextWriterTag.Td);
         writer.WriteEncodedText(text);
         writer.RenderEndTag();
         writer.RenderEndTag();
         writer.RenderBeginTag(HtmlTextWriterTag.Tr);
         writer.RenderBeginTag(HtmlTextWriterTag.Td);
         label.Text = flag ? this.GetFromText : this.SendToText;
         label.RenderControl(writer);
         writer.RenderEndTag();
         base.LabelStyle.AddAttributesToRender(writer, this);
         writer.RenderBeginTag(HtmlTextWriterTag.Td);
         writer.WriteEncodedText(displayTitle);
         writer.RenderEndTag();
         writer.RenderEndTag();
         writer.RenderEndTag();
         writer.WriteBreak();
         writer.RenderBeginTag(HtmlTextWriterTag.Hr);
         writer.RenderEndTag();
         writer.WriteBreak();
         label.ApplyStyle(base.LabelStyle);
         label.Text = this.ConfigureConnectionTitle;
         label.RenderControl(writer);
         writer.WriteBreak();
         writer.WriteBreak();
     }
 }
        private void RenderExistingConnection(HtmlTextWriter writer,
                                              string connectionPointName,
                                              string partTitle,
                                              string disconnectEventArg,
                                              string editEventArg,
                                              bool consumer,
                                              bool isActive) {

            Label label = new Label();
            label.Page = Page;
            label.ApplyStyle(LabelStyle);

            writer.RenderBeginTag(HtmlTextWriterTag.Fieldset);

            writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
            writer.RenderBeginTag(HtmlTextWriterTag.Table);
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            label.Text = (consumer ? SendText : GetText);
            label.RenderControl(writer);

            writer.RenderEndTag(); // TD
            LabelStyle.AddAttributesToRender(writer, this);
            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            writer.WriteEncodedText(connectionPointName);

            writer.RenderEndTag(); // TD
            writer.RenderEndTag(); // TR
            writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            label.Text = (consumer ? SendToText : GetFromText);
            label.RenderControl(writer);

            writer.RenderEndTag(); // TD
            LabelStyle.AddAttributesToRender(writer, this);
            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            writer.WriteEncodedText(partTitle);

            writer.RenderEndTag(); // TD
            writer.RenderEndTag(); // TR
            writer.RenderEndTag(); // TABLE

            WebPartVerb disconnectVerb = DisconnectVerb;
            disconnectVerb.EventArgument = disconnectEventArg;
            RenderVerb(writer, disconnectVerb);
            if (VerbButtonType == ButtonType.Link) {
                writer.Write("&nbsp;");
            }

            if (isActive) {
                WebPartVerb configureVerb = ConfigureVerb;
                if (editEventArg == null) {
                    configureVerb.Enabled = false;
                }
                else {
                    configureVerb.Enabled = true;
                    configureVerb.EventArgument = editEventArg;
                }
                RenderVerb(writer, configureVerb);
            }
            else {
                writer.WriteBreak();
                label.ApplyStyle(ErrorStyle);
                label.Text = ExistingConnectionErrorMessage;
                label.RenderControl(writer);
            }

            writer.RenderEndTag(); // FIELDSET
        }
 private void RenderInstructionText(HtmlTextWriter writer) {
     string instructionText = InstructionText;
     if (!String.IsNullOrEmpty(instructionText)) {
         Label label = new Label();
         label.Text = instructionText;
         label.Page = Page;
         label.ApplyStyle(InstructionTextStyle);
         label.RenderControl(writer);
         writer.WriteBreak();
         writer.WriteBreak();
     }
 }
Beispiel #26
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                using (System.IO.StringWriter sw = new System.IO.StringWriter())
                {
                    using (HtmlTextWriter htw = new HtmlTextWriter(sw))
                    {
                        htw.RenderBeginTag(HtmlTextWriterTag.H2);
                        htw.Write("We regret to report that something went wrong processing your request.");
                        htw.WriteBreak();
                        htw.Write("Please feel free to try what you were doing again in a few minutes.");
                        htw.RenderEndTag();
                        htw.WriteBreak();
                        htw.RenderBeginTag(HtmlTextWriterTag.H3);

                        MembershipUser mu = Membership.GetUser();

                        if (mu != null)
                            if (mu.IsOnline)
                                htw.Write("Click here to log back in and try again.");
                            else
                                htw.Write("Click here to try logging in again.");
                        else
                            htw.Write("Click here to continue to the sign-in page.");

                        htw.RenderEndTag();
                        htw.AddAttribute(HtmlTextWriterAttribute.Href, ResolveUrl("~/Sign_in.aspx"));
                        htw.AddAttribute(HtmlTextWriterAttribute.Class, "submitlink");
                        htw.RenderBeginTag(HtmlTextWriterTag.A);
                        htw.Write("Continue");
                        htw.RenderEndTag();

                        if (Roles.IsUserInRole("DebugUser"))
                        {
                            htw.WriteBreak();
                            htw.WriteBreak();
                            htw.RenderBeginTag(HtmlTextWriterTag.Table);
                            htw.RenderBeginTag(HtmlTextWriterTag.Tr);
                            htw.AddAttribute(HtmlTextWriterAttribute.Width, "110px");
                            htw.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "Bold");
                            htw.RenderBeginTag(HtmlTextWriterTag.Td);
                            htw.Write("From Page:");
                            htw.RenderEndTag(); //TD
                            htw.RenderBeginTag(HtmlTextWriterTag.Td);
                            htw.Write(Request.UrlReferrer.PathAndQuery);
                            htw.RenderEndTag(); //TD
                            htw.RenderEndTag(); //TR
                            htw.RenderBeginTag(HtmlTextWriterTag.Tr);
                            htw.AddAttribute(HtmlTextWriterAttribute.Width, "110px");
                            htw.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "Bold");
                            htw.RenderBeginTag(HtmlTextWriterTag.Td);
                            htw.Write("Error Message:");
                            htw.RenderEndTag(); //TD
                            htw.RenderBeginTag(HtmlTextWriterTag.Td);
                            htw.Write(ThisSession.AppException.Message);
                            htw.RenderEndTag(); //TD
                            htw.RenderEndTag(); //TR
                            htw.RenderBeginTag(HtmlTextWriterTag.Tr);
                            htw.AddAttribute(HtmlTextWriterAttribute.Width, "110px");
                            htw.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "Bold");
                            htw.RenderBeginTag(HtmlTextWriterTag.Td);
                            htw.Write("Error Source:");
                            htw.RenderEndTag(); //TD
                            htw.RenderBeginTag(HtmlTextWriterTag.Td);
                            htw.Write(ThisSession.AppException.Source);
                            htw.RenderEndTag(); //TD
                            htw.RenderEndTag(); //TR
                            htw.RenderBeginTag(HtmlTextWriterTag.Tr);
                            htw.AddAttribute(HtmlTextWriterAttribute.Width, "110px");
                            htw.AddStyleAttribute(HtmlTextWriterStyle.FontWeight, "Bold");
                            htw.RenderBeginTag(HtmlTextWriterTag.Td);
                            htw.Write("Error Stack:");
                            htw.RenderEndTag(); //TD
                            htw.RenderBeginTag(HtmlTextWriterTag.Td);
                            htw.Write(ThisSession.AppException.StackTrace);
                            htw.RenderEndTag(); //TD
                            htw.RenderEndTag(); //TR
                            htw.RenderEndTag(); //Table
                        }
                        using (BaseCCHData errorHandler = new BaseCCHData())
                        {
                            errorHandler.CaptureError(ThisSession.AppException, (mu != null && !mu.IsOnline));
                        }
                    }

                    ltlErrorMessage.Text = sw.ToString();
                }
                HttpContext.Current.Session.Abandon();
                FormsAuthentication.SignOut();
            }
        }
 private void RenderNoExistingConnection(HtmlTextWriter writer) {
     string noConnection = NoExistingConnectionTitle;
     if (!String.IsNullOrEmpty(noConnection)) {
         Label label = new Label();
         label.Text = noConnection;
         label.Page = Page;
         label.ApplyStyle(LabelStyle);
         label.RenderControl(writer);
         writer.WriteBreak();
         writer.WriteBreak();
     }
     string instructions = NoExistingConnectionInstructionText;
     if (!String.IsNullOrEmpty(instructions)) {
         Label label = new Label();
         label.Text = instructions;
         label.Page = Page;
         label.ApplyStyle(InstructionTextStyle);
         label.RenderControl(writer);
         writer.WriteBreak();
         writer.WriteBreak();
     }
 }
 private void RenderInstructionTitle(HtmlTextWriter writer)
 {
     if ((this.PartChromeType != System.Web.UI.WebControls.WebParts.PartChromeType.None) && (this.PartChromeType != System.Web.UI.WebControls.WebParts.PartChromeType.BorderOnly))
     {
         string instructionTitle = this.InstructionTitle;
         if (!string.IsNullOrEmpty(instructionTitle))
         {
             Label label = new Label();
             if (this.WebPartToConnect != null)
             {
                 label.Text = string.Format(CultureInfo.CurrentCulture, instructionTitle, new object[] { this.WebPartToConnect.DisplayTitle });
             }
             else
             {
                 label.Text = instructionTitle;
             }
             label.Page = this.Page;
             label.ApplyStyle(base.LabelStyle);
             label.RenderControl(writer);
             writer.WriteBreak();
         }
     }
 }
Beispiel #29
0
        protected override void RenderContents(HtmlTextWriter writer)
        {
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "tableBase");
            writer.AddAttribute("cellspacing", "0");
            writer.AddAttribute("cellpadding", "8");
            writer.RenderBeginTag(HtmlTextWriterTag.Table);

            writer.RenderBeginTag(HtmlTextWriterTag.Tbody);

            foreach (var srGroup in Items.GetRange(0, (MaxCount < Items.Count) ? MaxCount : Items.Count))
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Class, "search-result-item");
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);

                writer.AddAttribute(HtmlTextWriterAttribute.Class, "borderBase left-column gray-text");
                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                writer.AddAttribute(HtmlTextWriterAttribute.Title, srGroup.Additional["Hint"].ToString());
                writer.RenderBeginTag(HtmlTextWriterTag.Div);
                writer.Write(srGroup.Additional["Hint"].ToString());
                writer.RenderEndTag();
                writer.RenderEndTag();

                writer.AddAttribute(HtmlTextWriterAttribute.Class, "borderBase center-column");
                writer.RenderBeginTag(HtmlTextWriterTag.Td);

                writer.AddAttribute(HtmlTextWriterAttribute.Href, srGroup.URL);
                writer.AddAttribute(HtmlTextWriterAttribute.Class, "link bold");
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write(HtmlUtility.SearchTextHighlight(Text, srGroup.Name.HtmlEncode(), false));
                writer.RenderEndTag();

                writer.WriteBreak();

                if ((EntityType)(Enum.Parse(typeof(EntityType), (srGroup.Additional["Type"]).ToString())) == EntityType.Project)
                {
                    writer.AddAttribute(HtmlTextWriterAttribute.Class, "describe-text");
                    writer.RenderBeginTag(HtmlTextWriterTag.Span);
                    writer.Write(CheckEmptyValue(HtmlUtility.SearchTextHighlight("", HttpUtility.HtmlEncode(HtmlUtility.GetText(srGroup.Description, 100)))));
                    writer.RenderEndTag();
                }
                else
                {
                    writer.AddAttribute(HtmlTextWriterAttribute.Class, "describe-text");
                    writer.RenderBeginTag(HtmlTextWriterTag.Span);
                    writer.Write(Resources.ProjectsCommonResource.InProject);
                    writer.RenderEndTag();
                    writer.Write("&nbsp;");
                    writer.RenderBeginTag(HtmlTextWriterTag.Span);
                    writer.Write(srGroup.Additional["ProjectName"].ToString().HtmlEncode());
                    writer.RenderEndTag();
                }

                writer.RenderEndTag();

                writer.AddAttribute(HtmlTextWriterAttribute.Class, "borderBase right-column gray-text");
                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                if (srGroup.Date.HasValue)
                {
                    writer.AddAttribute(HtmlTextWriterAttribute.Title, srGroup.Date.Value.ToShortDateString());
                    writer.RenderBeginTag(HtmlTextWriterTag.Div);
                    writer.Write(srGroup.Date.Value.ToShortDateString());
                    writer.RenderEndTag();
                }
                writer.RenderEndTag();

                writer.RenderEndTag();
            }

            writer.RenderEndTag();
            writer.RenderEndTag();
        }
Beispiel #30
0
 protected virtual void WriteVinExample(HtmlTextWriter writer)
 {
     writer.Write(GetLocalizedString("InputVIN", GetVinExample()));
     writer.WriteBreak();
 }
Beispiel #31
0
        private static void SaveProcessedData(string targetPath, List<WorkItem> items)
        {
            var filePath = Path.Combine(targetPath, "data.html");
            var calendar = DateTimeFormatInfo.CurrentInfo.Calendar;
            
            using (var stringWriter = new StringWriter())
            using (var writer = new HtmlTextWriter(stringWriter))
            {
                stringWriter.WriteLine($@"
<!doctype html>
<html lang=""en"">
<head>
  <meta charset=""utf-8"">

  <title>{targetPath}</title>

  <link rel=""stylesheet"" href=""styles.css"">
  </head>
  <body>
  ");
                /*
  <link rel=""stylesheet"" href=""https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"" integrity=""sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7"" crossorigin=""anonymous"">
  <link rel=""stylesheet"" href=""https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css"" integrity = ""sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r"" crossorigin = ""anonymous"" >
  <script src=""https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"" integrity = ""sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS"" crossorigin = ""anonymous"" ></ script >
    */
                writer.Indent++;

                foreach (var grouping in items.Where(i => i.CreationDate.Year == 2015).GroupBy(i => calendar.GetWeekOfYear(i.CreationDate, CalendarWeekRule.FirstDay, DayOfWeek.Monday)))
                {
                    writer.RenderBeginTag(HtmlTextWriterTag.H1);
                    writer.Write($"Week {grouping.Key}");
                    writer.RenderEndTag(); // h2

                    foreach (var item in grouping)
                    {
                        var pr = item as PullRequest;

                        writer.AddAttribute(HtmlTextWriterAttribute.Class, item.Author);
                        writer.AddAttribute(HtmlTextWriterAttribute.Id, item.Id.ToString());
                        writer.RenderBeginTag(HtmlTextWriterTag.Div);
                        writer.Indent++;

                        writer.RenderBeginTag("p");
                        writer.Indent++;

                        writer.RenderBeginTag(HtmlTextWriterTag.H3);
                        writer.AddAttribute(HtmlTextWriterAttribute.Href, item.Url);
                        writer.RenderBeginTag(HtmlTextWriterTag.A);
                        writer.Write((pr != null) ? "Pull request " : "Issue ");
                        writer.Write("#" + item.Id);
                        writer.RenderEndTag(); //a
                        writer.RenderEndTag(); //h3

                        writer.RenderBeginTag(HtmlTextWriterTag.H2);
                        writer.Write(item.Title);
                        writer.RenderEndTag(); // h2

                        writer.RenderEndTag(); // p
                        writer.Indent--;

                        if (pr != null)
                        {
                            writer.RenderBeginTag(HtmlTextWriterTag.P);
                            writer.Indent++;

                            if (pr.CloseDate == default(DateTime))
                            {
                                writer.Write($"Opened at <strong>{pr.CreationDate.ToString("dddd MMMM d, HH:mm")}, never closed</strong>. ");
                            }
                            else
                            {
                                writer.Write($"Opened at <strong>{pr.CreationDate.ToString("dddd MMMM d, HH:mm")}</strong>, closed at <strong>{pr.CloseDate.ToString("dddd MMMM d, HH:mm")}</strong>. ");
                                writer.RenderBeginTag(HtmlTextWriterTag.Strong);
                                writer.WriteBreak();
                                writer.Write($"Under review for {(pr.CloseDate - pr.CreationDate).TotalHours.ToString("F")} hours");
                                writer.RenderEndTag();
                            }
                            writer.RenderEndTag(); // p
                            writer.Indent--;

                            writer.RenderBeginTag(HtmlTextWriterTag.P);
                            writer.Indent++;

                            writer.Write($"First commit on <strong>{pr.FirstCommit.ToString("dddd MMMM d, HH:mm")}</strong>, last at <strong>{pr.LastCommit.ToString("dddd MMMM d, HH:mm")}</strong>.");
                            writer.WriteBreak();
                            writer.Write("Worked on for ");
                            writer.RenderBeginTag(HtmlTextWriterTag.Strong);
                            writer.Write($"{(pr.LastCommit - pr.FirstCommit).TotalHours.ToString("F")} hours");
                            writer.RenderEndTag();

                            writer.RenderEndTag(); // p
                            writer.Indent--;

                            writer.RenderBeginTag(HtmlTextWriterTag.P);
                            writer.Indent++;

                            foreach (var commit in pr.Commits)
                            {
                                writer.AddAttribute(HtmlTextWriterAttribute.Class, commit.Author);
                                writer.RenderBeginTag(HtmlTextWriterTag.Span);
                                writer.WriteLine($"{commit.Author} on <strong>{commit.Date.ToString("dddd MMMM d, HH:mm")}</strong>: {commit.Message}");
                                writer.WriteBreak();
                                writer.RenderEndTag();//span
                            }

                            writer.RenderEndTag(); // p
                            writer.Indent--;
                        }
                        else
                        {
                            writer.RenderBeginTag(HtmlTextWriterTag.P);
                            writer.Indent++;

                            writer.Write($"Opened at {item.CreationDate}");

                            writer.RenderEndTag(); // p
                            writer.Indent--;
                        }

                        if (item.RelatedItems.Any())
                        {
                            writer.RenderBeginTag(HtmlTextWriterTag.H4);
                            writer.Write("Related items:");
                            writer.RenderEndTag(); // h4

                            writer.RenderBeginTag(HtmlTextWriterTag.P);
                            writer.Indent++;

                            foreach (var related in item.RelatedItems)
                            {
                                writer.AddAttribute(HtmlTextWriterAttribute.Href, "#" + related.ToString());
                                writer.RenderBeginTag(HtmlTextWriterTag.A);
                                writer.Write("#" + related.ToString() + " ");
                                writer.RenderEndTag(); // a
                            }

                            writer.RenderEndTag(); // p
                            writer.Indent--;
                        }

                        writer.RenderEndTag(); // div
                        writer.Indent--;
                    }
                }

                writer.Indent--;
                stringWriter.WriteLine(@"
  </body ></html>
  ");

                File.WriteAllText(filePath, stringWriter.ToString());
            }
        }
Beispiel #32
0
        protected override void RenderContents(HtmlTextWriter output)
        {
            // write a div where we will attach the recaptcha

            output.AddAttribute("id", "recaptcha_" + this.ClientID);
            //output.AddAttribute("class", "g-recaptcha");
            output.AddAttribute("class", "recaptcha");
            //output.AddAttribute("data-sitekey", this.publicKey);
            //output.AddAttribute("data-theme", this.theme);
            output.AddAttribute("data-tabindex", base.TabIndex.ToString());
            output.RenderBeginTag(HtmlTextWriterTag.Div);
            output.RenderEndTag();
            //output.AddAttribute("id", "g-response");
            //output.RenderBeginTag(HtmlTextWriterTag.Textarea);
            //output.RenderEndTag();

            // <noscript> display
            output.RenderBeginTag(HtmlTextWriterTag.Noscript);
            output.Indent++;
            output.AddAttribute(HtmlTextWriterAttribute.Src, this.GenerateChallengeUrl(true), false);
            output.AddAttribute(HtmlTextWriterAttribute.Width, "500");
            output.AddAttribute(HtmlTextWriterAttribute.Height, "300");
            output.AddAttribute("frameborder", "0");
            output.RenderBeginTag(HtmlTextWriterTag.Iframe);
            output.RenderEndTag();
            output.WriteBreak(); // modified to make XHTML-compliant. Patch by [email protected].
            output.AddAttribute(HtmlTextWriterAttribute.Name, RECAPTCHA_CHALLENGE_FIELD);
            output.AddAttribute(HtmlTextWriterAttribute.Rows, "3");
            output.AddAttribute(HtmlTextWriterAttribute.Cols, "40");
            output.RenderBeginTag(HtmlTextWriterTag.Textarea);
            output.RenderEndTag();
            output.AddAttribute(HtmlTextWriterAttribute.Name, RECAPTCHA_RESPONSE_FIELD);
            output.AddAttribute(HtmlTextWriterAttribute.Value, "manual_challenge");
            output.AddAttribute(HtmlTextWriterAttribute.Type, "hidden");
            output.RenderBeginTag(HtmlTextWriterTag.Input);
            output.RenderEndTag();
            output.Indent--;
            output.RenderEndTag();
        }
Beispiel #33
0
        protected override void RenderContents(HtmlTextWriter writer)
        {
            writer.AddAttribute(HtmlTextWriterAttribute.Class, "tableBase");
            writer.AddAttribute("cellspacing", "0");
            writer.AddAttribute("cellpadding", "8");
            writer.RenderBeginTag(HtmlTextWriterTag.Table);

            writer.RenderBeginTag(HtmlTextWriterTag.Tbody);

            foreach (var searchItemResult in Items.GetRange(0, (MaxCount < Items.Count) ? MaxCount : Items.Count))
            {
                var relativeInfo = searchItemResult.Additional["relativeInfo"].ToString();

                if (String.IsNullOrEmpty(relativeInfo))
                    relativeInfo = searchItemResult.Description.HtmlEncode();
                else
                    relativeInfo = String.Format("<span class='describe-text'>{0}</span> {1}", CRMCommonResource.RelativeTo, relativeInfo.HtmlEncode());

                writer.AddAttribute(HtmlTextWriterAttribute.Class, "search-result-item");
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);

                writer.AddAttribute(HtmlTextWriterAttribute.Class, "borderBase left-column gray-text");
                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                writer.AddAttribute(HtmlTextWriterAttribute.Title, searchItemResult.Additional["typeInfo"].ToString());
                writer.RenderBeginTag(HtmlTextWriterTag.Div);
                writer.Write(searchItemResult.Additional["typeInfo"].ToString());
                writer.RenderEndTag();
                writer.RenderEndTag();

                writer.AddAttribute(HtmlTextWriterAttribute.Class, "borderBase center-column");
                writer.RenderBeginTag(HtmlTextWriterTag.Td);

                writer.AddAttribute(HtmlTextWriterAttribute.Href, searchItemResult.URL);
                writer.AddAttribute(HtmlTextWriterAttribute.Class, "link bold");
                writer.RenderBeginTag(HtmlTextWriterTag.A);
                writer.Write(HtmlUtility.SearchTextHighlight(Text, searchItemResult.Name.HtmlEncode(), false));
                writer.RenderEndTag();

                if (!String.IsNullOrEmpty(relativeInfo))
                {
                    writer.WriteBreak();
                    writer.Write(relativeInfo);
                }

                writer.RenderEndTag();

                writer.AddAttribute(HtmlTextWriterAttribute.Class, "borderBase right-column gray-text");
                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                if (searchItemResult.Date.HasValue)
                {
                    writer.AddAttribute(HtmlTextWriterAttribute.Title, searchItemResult.Date.Value.ToShortDateString());
                    writer.RenderBeginTag(HtmlTextWriterTag.Div);
                    writer.Write(searchItemResult.Date.Value.ToShortDateString());
                    writer.RenderEndTag();
                }
                writer.RenderEndTag();

                writer.RenderEndTag();
            }

            writer.RenderEndTag();
            writer.RenderEndTag();
        }
        public string ExportToHtml(Database db, TextWriter textWriter, DocumentGeneratorConfiguration docGenConfig)
        {
            if (db == null)
                {
                    throw new ArgumentNullException("db");
                }

                if (textWriter == null)
                {
                    throw new ArgumentNullException("textWriter");
                }

                if (docGenConfig == null)
                {
                    throw new ArgumentNullException("docGenConfig");
                }

                //var sw = new StringWriter();

                using(var hw = new HtmlTextWriter(textWriter))
                {
                    hw.WriteLine("<!DOCTYPE HTML>");
                    hw.RenderBeginTag(HtmlTextWriterTag.Html);

                    hw.RenderBeginTag(HtmlTextWriterTag.Head);

                    hw.RenderBeginTag(HtmlTextWriterTag.Title);

                    hw.WriteEncodedText(db.DatabaseName); //TODO: does Write method escape HTML entities???

                    hw.RenderEndTag(); //title

                    hw.Write("<!-- ");
                    hw.WriteEncodedText(@"
            Bootstrap CSS is included.  Bootstrap is released under the MIT license and is copyright 2014 Twitter.
            The MIT License (MIT)

            Copyright (c) 2011-2014 Twitter, Inc

            Permission is hereby granted, free of charge, to any person obtaining a copy
            of this software and associated documentation files (the ""Software""), to deal
            in the Software without restriction, including without limitation the rights
            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
            copies of the Software, and to permit persons to whom the Software is
            furnished to do so, subject to the following conditions:

            The above copyright notice and this permission notice shall be included in
            all copies or substantial portions of the Software.

            THE SOFTWARE IS PROVIDED ""AS IS"", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
            THE SOFTWARE.");
                    hw.Write(" -->");
                    hw.AddAttribute(HtmlTextWriterAttribute.Type, "text/css");
                    hw.RenderBeginTag(HtmlTextWriterTag.Style);
                    hw.Write(this.baseCss);
                    hw.RenderEndTag(); //style

                    hw.RenderEndTag(); //head

                    hw.RenderBeginTag(HtmlTextWriterTag.Body);

                    hw.RenderBeginTag(HtmlTextWriterTag.H1);

                    hw.WriteEncodedText(String.Format("{0} Database", db.DatabaseName));

                    hw.RenderEndTag(); //h1

                    if (!String.IsNullOrWhiteSpace(db.Description))
                    {
                        hw.RenderBeginTag(HtmlTextWriterTag.P);
                        hw.WriteEncodedText(db.Description);
                        hw.RenderEndTag(); //p
                    }

                    if (db.Schemas != null && db.Schemas.Count > 0)
                    {

                        for (int s = 0; s < db.Schemas.Count; s++)
                        {
                            var schema = db.Schemas[s];
                            bool hasTables = (schema.Tables != null && schema.Tables.Count > 0);

                            if (s > 0)
                            {
                                hw.RenderBeginTag(HtmlTextWriterTag.Hr);
                                hw.RenderEndTag(); //hr
                            }

                            hw.RenderBeginTag(HtmlTextWriterTag.H2);
                            hw.WriteEncodedText(String.Format("{0} (schema)", schema.SchemaName));
                            hw.RenderEndTag(); //h2

                            if (!String.IsNullOrWhiteSpace(schema.Description))
                            {
                                hw.RenderBeginTag(HtmlTextWriterTag.P);
                                hw.WriteEncodedText(schema.Description);
                                hw.RenderEndTag(); //p

                            }

                            hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed schema-objects-list-container");
                            hw.RenderBeginTag(HtmlTextWriterTag.Table);

                            hw.RenderBeginTag(HtmlTextWriterTag.Thead);

                            hw.RenderBeginTag(HtmlTextWriterTag.Tr);
                            hw.RenderBeginTag(HtmlTextWriterTag.Th);
                            hw.Write("Object Type");
                            hw.RenderEndTag(); //th

                            hw.RenderBeginTag(HtmlTextWriterTag.Th);
                            hw.Write("Count");
                            hw.RenderEndTag(); //th

                            hw.RenderEndTag(); //tr

                            hw.RenderEndTag(); //thead

                            hw.RenderBeginTag(HtmlTextWriterTag.Tbody);

                            hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                            hw.Write("Tables");
                            hw.RenderEndTag(); //td

                            hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right");
                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                            if (hasTables)
                            {
                                hw.WriteEncodedText(schema.Tables.Count.ToString());
                            }
                            else
                            {
                                hw.Write("0");
                            }

                            hw.RenderEndTag(); //td

                            hw.RenderEndTag(); //tr

                            hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                            hw.Write("Views");
                            hw.RenderEndTag(); //td

                            hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right");
                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                            if (schema.Views != null)
                            {
                                hw.WriteEncodedText(schema.Views.Count.ToString());
                            }
                            else
                            {
                                hw.Write("0");
                            }

                            hw.RenderEndTag(); //td

                            hw.RenderEndTag(); //tr

                            hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                            hw.Write("Stored procedures");
                            hw.RenderEndTag(); //td

                            hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right");
                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                            if (schema.StoredProcedures != null)
                            {
                                hw.WriteEncodedText(schema.StoredProcedures.Count.ToString());
                            }
                            else
                            {
                                hw.Write("0");
                            }

                            hw.RenderEndTag(); //td

                            hw.RenderEndTag(); //tr

                            hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                            hw.Write("Scalar functions");
                            hw.RenderEndTag(); //td

                            hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right");
                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                            if (schema.ScalarFunctions != null)
                            {
                                hw.WriteEncodedText(schema.ScalarFunctions.Count.ToString());
                            }
                            else
                            {
                                hw.Write("0");
                            }

                            hw.RenderEndTag(); //td

                            hw.RenderEndTag(); //tr

                            hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                            hw.Write("Table functions");
                            hw.RenderEndTag(); //td

                            hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right");
                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                            if (schema.TableFunctions != null)
                            {
                                hw.WriteEncodedText(schema.TableFunctions.Count.ToString());
                            }
                            else
                            {
                                hw.Write("0");
                            }

                            hw.RenderEndTag(); //td

                            hw.RenderEndTag(); //tr

                            hw.RenderEndTag(); //tbody

                            hw.RenderEndTag(); //table

                            //Render tables
                            if (hasTables)
                            {

                                for (int t = 0; t < schema.Tables.Count; t++)
                                {
                                    var table = schema.Tables[t];

                                    if (docGenConfig.ForeignKeyToTableHyperLink)
                                    {
                                        // create internel hyperlink target
                                        hw.AddAttribute("id", table.GetObjectAnchorId());
                                        hw.RenderBeginTag(HtmlTextWriterTag.A);
                                        hw.RenderEndTag(); //a
                                    }

                                    bool hasIndexes = (table.Indexes != null && table.Indexes.Count > 0);

                                    hw.RenderBeginTag(HtmlTextWriterTag.H3);
                                    hw.WriteEncodedText(String.Format("{0}.{1} (table)", schema.SchemaName, table.TableName));
                                    hw.RenderEndTag(); //h3

                                    hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed");
                                    hw.RenderBeginTag(HtmlTextWriterTag.Table);

                                    if (!String.IsNullOrWhiteSpace(table.Description))
                                    {
                                        hw.RenderBeginTag(HtmlTextWriterTag.Caption);
                                        hw.WriteEncodedText(table.Description);
                                        hw.RenderEndTag(); //caption
                                    }

                                    hw.RenderBeginTag(HtmlTextWriterTag.Thead);
                                    hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                    hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                    hw.Write("Column Name");
                                    hw.RenderEndTag(); //th

                                    hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                    hw.Write("System Data Type");

                                    if (table.ContainsColumnsWithUserDefinedDataType())
                                    {
                                        hw.Write(" / User Defined Type");
                                    }

                                    hw.RenderEndTag(); //th

                                    hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                    hw.Write("Size");
                                    hw.RenderEndTag(); //th

                                    hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                    hw.Write("Allow Null");
                                    hw.RenderEndTag(); //th

                                    hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                    hw.Write("Default");
                                    hw.RenderEndTag(); //th

                                    hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                    hw.Write("Is Computed");
                                    hw.RenderEndTag(); //th

                                    hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                    hw.Write("Description");
                                    hw.RenderEndTag(); //th

                                    hw.RenderEndTag(); //tr

                                    hw.RenderEndTag(); //thead

                                    hw.RenderBeginTag(HtmlTextWriterTag.Tbody);

                                    for (int c = 0; c < table.Columns.Count; c++)
                                    {

                                        var col = table.Columns[c];

                                        bool colHasDefaultValue = (col.DefaultValue != null);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                        hw.WriteEncodedText(col.ColumnName);
                                        hw.RenderEndTag();  //td

                                        hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                        hw.WriteEncodedText(col.BaseDataTypeName);
                                        if (col.IsIdentity)
                                        {
                                            hw.WriteEncodedText(" (identity)");
                                        }

                                        if (col.IsUserDefinedType)
                                        {
                                            hw.Write(" / ");
                                            hw.WriteEncodedText(col.TypeName);
                                        }

                                        hw.RenderEndTag();  //td

                                        hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right");
                                        hw.RenderBeginTag(HtmlTextWriterTag.Td);

                                        //show precision, scale when appliable, else use maxlength
                                        if (col.Precision.HasValue && col.Scale.HasValue && col.Precision > 0)
                                        {
                                            hw.WriteEncodedText(String.Format("{0},{1}",col.Precision.Value, col.Scale.Value));
                                        }
                                        else
                                        {
                                            if (col.MaximumLength.HasValue && col.MaximumLength.Value != -1)
                                            {
                                                hw.WriteEncodedText(col.MaximumLength.ToString());
                                            }

                                        }

                                        hw.RenderEndTag();  //td

                                        hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                        hw.WriteEncodedText(col.AllowNull ? "Yes" : "No");
                                        hw.RenderEndTag(); //td

                                        if (!colHasDefaultValue)
                                        {
                                            hw.AddAttribute(HtmlTextWriterAttribute.Class, "no-default");
                                        }

                                        hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                        hw.WriteEncodedText(colHasDefaultValue ? col.DefaultValue : "none");
                                        hw.RenderEndTag(); //td

                                        hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                        hw.WriteEncodedText(col.IsComputed ? "Yes" : "No");
                                        hw.RenderEndTag(); //td

                                        hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                        hw.WriteEncodedText(col.Description ?? String.Empty);
                                        hw.RenderEndTag(); //td

                                        hw.RenderEndTag(); //tr

                                    } //for column loop

                                    hw.RenderEndTag(); //tbody

                                    hw.RenderEndTag(); //table

                                    if (hasIndexes)
                                    {
                                        hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed");
                                        hw.RenderBeginTag(HtmlTextWriterTag.Table);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Caption);
                                        hw.WriteEncodedText(String.Format("Indexes on {0}", table.TableName));
                                        hw.RenderEndTag(); //caption

                                        hw.RenderBeginTag(HtmlTextWriterTag.Thead);
                                        hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Index Name");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Description");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Is Primary Key");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Is Unique");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Index Type");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Columns");
                                        hw.RenderEndTag(); //th

                                        hw.RenderEndTag(); //tr
                                        hw.RenderEndTag(); //thead

                                        hw.RenderBeginTag(HtmlTextWriterTag.Tbody);

                                        for (int i = 0; i < table.Indexes.Count; i++)
                                        {
                                            var index = table.Indexes[i];

                                            hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(index.IndexName);
                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(index.Description ?? String.Empty);
                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(index.IsPrimaryKey.ToYesNo());
                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(index.IsUnique.ToYesNo());
                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(index.IndexTypeDescription);
                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(String.Join(", ", index.ColumnNames.ToArray()));
                                            hw.RenderEndTag(); //td

                                            hw.RenderEndTag(); //tr
                                        }

                                        hw.RenderEndTag(); //tbody

                                        hw.RenderEndTag(); //table

                                    } //end indexes

                                    if (table.ForeignKeys != null && table.ForeignKeys.Count > 0)
                                    {
                                        hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed");
                                        hw.RenderBeginTag(HtmlTextWriterTag.Table);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Caption);
                                        hw.WriteEncodedText(String.Format("Foreign Keys in {0}", table.TableName));
                                        hw.RenderEndTag(); //caption

                                        hw.RenderBeginTag(HtmlTextWriterTag.Thead);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Foreign Key Name");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Columns");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("References Table (Columns)");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Description");
                                        hw.RenderEndTag(); //th

                                        hw.RenderEndTag(); //thead

                                        hw.RenderBeginTag(HtmlTextWriterTag.Tbody);

                                        for (int f = 0; f < table.ForeignKeys.Count; f++)
                                        {
                                            var fk = table.ForeignKeys[f];

                                            hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(fk.ForeignKeyName);
                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(String.Join(", ", fk.GetForeignKeyParentColumnNames()));
                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            //hw.WriteEncodedText(String.Format("{0}.{1} ({2})", fk.ReferencedObjectSchemaName, fk.ReferencedObjectName, String.Join(", ",fk.GetForeignKeyReferenceColumnNames())));

                                            if (docGenConfig.ForeignKeyToTableHyperLink)
                                            {
                                                hw.AddAttribute("href", fk.GetFkTargetAnchorId());
                                                hw.RenderBeginTag(HtmlTextWriterTag.A);
                                                hw.WriteEncodedText(String.Format("{0}.{1} ({2})", fk.ReferencedObjectSchemaName, fk.ReferencedObjectName, String.Join(", ", fk.GetForeignKeyReferenceColumnNames())));
                                                //hw.WriteEncodedText("table ->");
                                                hw.RenderEndTag(); //a
                                            }
                                            else
                                            {
                                                hw.WriteEncodedText(String.Format("{0}.{1} ({2})", fk.ReferencedObjectSchemaName, fk.ReferencedObjectName, String.Join(", ", fk.GetForeignKeyReferenceColumnNames())));
                                            }

                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(fk.Description ?? String.Empty);
                                            hw.RenderEndTag(); //td

                                            hw.RenderEndTag(); //tr
                                        }

                                        hw.RenderEndTag(); //tbody

                                        hw.RenderEndTag(); //table

                                    } //end foreign keys

                                } //end for table loop

                            }

                            if (schema.Views != null && schema.Views.Count > 0)
                            {
                                for (int v = 0; v < schema.Views.Count; v++)
                                {
                                    var view = schema.Views[v];

                                    hw.RenderBeginTag(HtmlTextWriterTag.H3);
                                    hw.WriteEncodedText(String.Format("{0}.{1} (view)", schema.SchemaName, view.ViewName));
                                    hw.RenderEndTag(); //h3

                                    //TODO: add columns and indexes for view, use view.Description as table caption
                                    hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed");
                                    hw.RenderBeginTag(HtmlTextWriterTag.Table);

                                    if (!String.IsNullOrWhiteSpace(view.Description))
                                    {
                                        hw.RenderBeginTag(HtmlTextWriterTag.Caption);
                                        hw.WriteEncodedText(view.Description);
                                        hw.RenderEndTag(); //caption
                                    }

                                    hw.RenderBeginTag(HtmlTextWriterTag.Thead);
                                    hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                    hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                    hw.Write("Column Name");
                                    hw.RenderEndTag(); //th

                                    hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                    hw.Write("System Data Type");

                                    if (view.ContainsColumnsWithUserDefinedDataType())
                                    {
                                        hw.Write(" / User Defined Type");
                                    }

                                    hw.RenderEndTag(); //th

                                    hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                    hw.Write("Size");
                                    hw.RenderEndTag(); //th

                                    hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                    hw.Write("Allow Null");
                                    hw.RenderEndTag(); //th

                                    hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                    hw.Write("Default");
                                    hw.RenderEndTag(); //th

                                    hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                    hw.Write("Is Computed");
                                    hw.RenderEndTag(); //th

                                    hw.RenderEndTag(); //tr

                                    hw.RenderEndTag(); //thead

                                    hw.RenderBeginTag(HtmlTextWriterTag.Tbody);

                                    for (int c = 0; c < view.Columns.Count; c++)
                                    {

                                        var col = view.Columns[c];

                                        bool colHasDefaultValue = (col.DefaultValue != null);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                        hw.WriteEncodedText(col.ColumnName);
                                        hw.RenderEndTag();  //td

                                        hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                        hw.WriteEncodedText(col.BaseDataTypeName);
                                        if (col.IsIdentity)
                                        {
                                            hw.WriteEncodedText(" (identity)");
                                        }

                                        if (col.IsUserDefinedType)
                                        {
                                            hw.Write(" / ");
                                            hw.WriteEncodedText(col.TypeName);
                                        }
                                        hw.RenderEndTag();  //td

                                        hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right");
                                        hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                        //show precision, scale when appliable
                                        if (col.Precision.HasValue && col.Scale.HasValue && col.Precision > 0)
                                        {
                                            hw.WriteEncodedText(String.Format("{0},{1}",col.Precision.Value, col.Scale.Value));
                                        }
                                        else
                                        {
                                            if (col.MaximumLength.HasValue && col.MaximumLength.Value != -1)
                                            {
                                                hw.WriteEncodedText(col.MaximumLength.ToString());
                                            }
                                            //else
                                            //{
                                            //    hw.Write("n/a");
                                            //}
                                        }

                                        hw.RenderEndTag();  //td

                                        hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                        hw.WriteEncodedText(col.AllowNull.ToYesNo());
                                        hw.RenderEndTag(); //td

                                        if (!colHasDefaultValue)
                                        {
                                            hw.AddAttribute(HtmlTextWriterAttribute.Class, "no-default");
                                        }

                                        hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                        hw.WriteEncodedText(colHasDefaultValue ? col.DefaultValue : "none");
                                        hw.RenderEndTag(); //td

                                        hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                        hw.WriteEncodedText(col.IsComputed.ToYesNo());
                                        hw.RenderEndTag(); //td

                                        hw.RenderEndTag(); //tr

                                    } //for column loop

                                    hw.RenderEndTag(); //tbody

                                    hw.RenderEndTag(); //table

                                    if (view.IsIndexedView)
                                    {
                                        hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed");
                                        hw.RenderBeginTag(HtmlTextWriterTag.Table);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Caption);
                                        hw.WriteEncodedText(String.Format("Indexes on {0}", view.ViewName));
                                        hw.RenderEndTag(); //caption

                                        hw.RenderBeginTag(HtmlTextWriterTag.Thead);
                                        hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Index Name");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Description");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Is Unique");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Index Type");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Columns");
                                        hw.RenderEndTag(); //th

                                        hw.RenderEndTag(); //tr
                                        hw.RenderEndTag(); //thead

                                        hw.RenderBeginTag(HtmlTextWriterTag.Tbody);

                                        for (int i = 0; i < view.Indexes.Count; i++)
                                        {
                                            var index = view.Indexes[i];

                                            hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(index.IndexName);
                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(index.Description ?? String.Empty);
                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(index.IsUnique.ToYesNo());
                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(index.IndexTypeDescription);
                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(String.Join(", ", index.ColumnNames.ToArray()));
                                            hw.RenderEndTag(); //td

                                            hw.RenderEndTag(); //tr
                                        }

                                        hw.RenderEndTag(); //tbody

                                        hw.RenderEndTag(); //table

                                    } //end indexes

                                } //end views loop

                            }//end views

                            if (schema.StoredProcedures != null && schema.StoredProcedures.Count > 0)
                            {
                                for (int r = 0; r < schema.StoredProcedures.Count; r++)
                                {
                                    var sproc = schema.StoredProcedures[r];

                                    hw.RenderBeginTag(HtmlTextWriterTag.H3);
                                    hw.WriteEncodedText(String.Format("{0}.{1} (stored procedure)", schema.SchemaName,sproc.ProcedureName) );
                                    hw.RenderEndTag(); //h3

                                    if (!String.IsNullOrWhiteSpace(sproc.Description))
                                    {
                                        hw.RenderBeginTag(HtmlTextWriterTag.P);
                                        hw.WriteEncodedText(sproc.Description);
                                        hw.RenderEndTag(); //p
                                    }

                                    if (sproc.Parameters != null && sproc.Parameters.Count > 0)
                                    {
                                        hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed");
                                        hw.RenderBeginTag(HtmlTextWriterTag.Table);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Caption);
                                        hw.Write("Parameters");
                                        hw.RenderEndTag();//caption

                                        hw.RenderBeginTag(HtmlTextWriterTag.Thead);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Paramater Name");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("System Data Type");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Size");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Direction");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Description");
                                        hw.RenderEndTag(); //th

                                        hw.RenderEndTag(); //tr

                                        hw.RenderEndTag(); //thead

                                        hw.RenderBeginTag(HtmlTextWriterTag.Tbody);

                                        for (int m = 0; m < sproc.Parameters.Count; m++)
                                        {
                                            var param = sproc.Parameters[m];

                                            hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(param.ParameterName);
                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(param.DataType);
                                            hw.RenderEndTag(); //td

                                            hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right");
                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            //show precision, scale when appliable
                                            if (param.Precision.HasValue && param.Scale.HasValue && param.Precision > 0)
                                            {
                                                hw.WriteEncodedText(String.Format("{0},{1}", param.Precision.Value, param.Scale.Value));
                                            }
                                            else
                                            {
                                                if (param.MaximumLength.HasValue && param.MaximumLength.Value != -1)
                                                {
                                                    hw.WriteEncodedText(param.MaximumLength.ToString());
                                                }
                                                //else
                                                //{
                                                //    hw.Write("n/a");
                                                //}
                                            }

                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(param.Direction);
                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(param.Description ?? String.Empty);
                                            hw.RenderEndTag(); //td

                                            hw.RenderEndTag(); //tr

                                        } //end parameter loop

                                        hw.RenderEndTag(); //tbody

                                        hw.RenderEndTag(); //table

                                    }  //end sproc parameters

                                } //end sproc loop

                            }// end stored procedures

                            if (schema.ScalarFunctions != null && schema.ScalarFunctions.Count > 0)
                            {
                                for (int f = 0; f < schema.ScalarFunctions.Count; f++)
                                {
                                    var func = schema.ScalarFunctions[f];

                                    hw.RenderBeginTag(HtmlTextWriterTag.H3);
                                    hw.WriteEncodedText(String.Format("{0}.{1} (scalar function)", schema.SchemaName, func.FunctionName));
                                    hw.RenderEndTag(); //h3

                                    if (!String.IsNullOrWhiteSpace(func.Description))
                                    {
                                        hw.RenderBeginTag(HtmlTextWriterTag.P);
                                        hw.WriteEncodedText(func.Description);
                                        hw.RenderEndTag(); //p
                                    }

                                    if (!String.IsNullOrEmpty(func.ReturnDataType))
                                    {

                                        hw.RenderBeginTag(HtmlTextWriterTag.P);
                                        hw.Write("Returns ");
                                        hw.AddAttribute(HtmlTextWriterAttribute.Class, "return-type");
                                        hw.RenderBeginTag(HtmlTextWriterTag.Span);
                                        hw.WriteEncodedText(func.GetReturnTypeDisplayText());
                                        hw.RenderEndTag(); //span
                                        hw.RenderEndTag(); //p

                                    }

                                    if (func.Parameters != null && func.Parameters.Count > 0)
                                    {
                                        hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed");
                                        hw.RenderBeginTag(HtmlTextWriterTag.Table);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Caption);
                                        hw.Write("Parameters");
                                        hw.RenderEndTag();//caption

                                        hw.RenderBeginTag(HtmlTextWriterTag.Thead);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Paramater Name");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("System Data Type");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Size");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Description");
                                        hw.RenderEndTag(); //th

                                        hw.RenderEndTag(); //tr

                                        hw.RenderEndTag(); //thead

                                        hw.RenderBeginTag(HtmlTextWriterTag.Tbody);

                                        for (int m = 0; m < func.Parameters.Count; m++)
                                        {
                                            var param = func.Parameters[m];

                                            hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(param.ParameterName);
                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(param.DataType);
                                            hw.RenderEndTag(); //td

                                            hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right");
                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            //show precision, scale when appliable
                                            if (param.Precision.HasValue && param.Scale.HasValue && param.Precision > 0)
                                            {
                                                hw.WriteEncodedText(String.Format("{0},{1}", param.Precision.Value, param.Scale.Value));
                                            }
                                            else
                                            {
                                                if (param.MaximumLength.HasValue && param.MaximumLength.Value != -1)
                                                {
                                                    hw.WriteEncodedText(param.MaximumLength.ToString());
                                                }

                                            }

                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(param.Description ?? String.Empty);
                                            hw.RenderEndTag(); //td

                                            hw.RenderEndTag(); //tr

                                        } //end scalar func parameter loop

                                        hw.RenderEndTag(); //tbody

                                        hw.RenderEndTag(); //table

                                    } //end scalar params
                                }

                            } //end scalar functions

                            if (schema.TableFunctions != null && schema.TableFunctions.Count > 0)
                            {
                                for (int t = 0; t < schema.TableFunctions.Count; t++)
                                {
                                    var tFunc = schema.TableFunctions[t];

                                    hw.RenderBeginTag(HtmlTextWriterTag.H3);
                                    hw.WriteEncodedText(String.Format("{0}.{1} (table function)", schema.SchemaName, tFunc.FunctionName));
                                    hw.RenderEndTag(); //h3

                                    if (!String.IsNullOrWhiteSpace(tFunc.Description))
                                    {
                                        hw.RenderBeginTag(HtmlTextWriterTag.P);
                                        hw.WriteEncodedText(tFunc.Description);
                                        hw.RenderEndTag(); //p
                                    }

                                    if (tFunc.Parameters != null && tFunc.Parameters.Count > 0)
                                    {
                                        if (tFunc.Parameters != null && tFunc.Parameters.Count > 0)
                                        {
                                            hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed");
                                            hw.RenderBeginTag(HtmlTextWriterTag.Table);

                                            hw.RenderBeginTag(HtmlTextWriterTag.Caption);
                                            hw.Write("Parameters");
                                            hw.RenderEndTag();//caption

                                            hw.RenderBeginTag(HtmlTextWriterTag.Thead);

                                            hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                            hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                            hw.Write("Paramater Name");
                                            hw.RenderEndTag(); //th

                                            hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                            hw.Write("System Data Type");
                                            hw.RenderEndTag(); //th

                                            hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                            hw.Write("Size");
                                            hw.RenderEndTag(); //th

                                            hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                            hw.Write("Description");
                                            hw.RenderEndTag(); //th

                                            hw.RenderEndTag(); //tr

                                            hw.RenderEndTag(); //thead

                                            hw.RenderBeginTag(HtmlTextWriterTag.Tbody);

                                            for (int m = 0; m < tFunc.Parameters.Count; m++)
                                            {
                                                var param = tFunc.Parameters[m];

                                                hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                                hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                                hw.WriteEncodedText(param.ParameterName);
                                                hw.RenderEndTag(); //td

                                                hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                                hw.WriteEncodedText(param.DataType);
                                                hw.RenderEndTag(); //td

                                                hw.AddAttribute(HtmlTextWriterAttribute.Class, "text-right");
                                                hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                                //show precision, scale when appliable
                                                if (param.Precision.HasValue && param.Scale.HasValue && param.Precision > 0)
                                                {
                                                    hw.WriteEncodedText(String.Format("{0},{1}", param.Precision.Value, param.Scale.Value));
                                                }
                                                else
                                                {
                                                    if (param.MaximumLength.HasValue && param.MaximumLength.Value != -1)
                                                    {
                                                        hw.WriteEncodedText(param.MaximumLength.ToString());
                                                    }

                                                }

                                                hw.RenderEndTag(); //td

                                                hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                                hw.WriteEncodedText(param.Description ?? String.Empty);
                                                hw.RenderEndTag(); //td

                                                hw.RenderEndTag(); //tr

                                            } //end table func parameter loop

                                            hw.RenderEndTag(); //tbody

                                            hw.RenderEndTag(); //table

                                        }

                                    }//end table function parameter

                                    if (tFunc.Columns != null && tFunc.Columns.Count > 0)
                                    {

                                        hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed schema-objects-list-container");
                                        hw.RenderBeginTag(HtmlTextWriterTag.Table);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Thead);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Column Name");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("System Data Type");
                                        hw.RenderEndTag(); //th

                                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                                        hw.Write("Allow Null");
                                        hw.RenderEndTag(); //th

                                        hw.RenderEndTag(); //tr

                                        hw.RenderEndTag(); //thead

                                        hw.RenderBeginTag(HtmlTextWriterTag.Tbody);

                                        for (int c = 0; c < tFunc.Columns.Count; c++)
                                        {
                                            var col = tFunc.Columns[c];

                                            hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(col.ColumnName);
                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(col.BaseDataTypeName);
                                            hw.RenderEndTag(); //td

                                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                                            hw.WriteEncodedText(col.AllowNull.ToYesNo());
                                            hw.RenderEndTag(); //td

                                            hw.RenderEndTag(); //tr

                                        } //end table function column loop

                                        hw.RenderEndTag(); //tbody

                                        hw.RenderEndTag(); //table

                                    } //end table function columns

                                }

                            } //end table functions

                        }// end for schema loop

                    }

                    //display design issues
                    if (docGenConfig.CheckForDesignIssues && db.DesignIssueWarnings.HasAny())
                    {
                        hw.RenderBeginTag(HtmlTextWriterTag.H2);
                        hw.WriteEncodedText(String.Format("Design Issue Warnings ({0})", db.DesignIssueWarnings.Count));
                        hw.RenderEndTag(); //h2

                        hw.AddAttribute(HtmlTextWriterAttribute.Class, "table table-bordered table-striped table-condensed");
                        hw.RenderBeginTag(HtmlTextWriterTag.Table);

                         hw.RenderBeginTag(HtmlTextWriterTag.Thead);

                        hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                        hw.Write("Warning Description");
                        hw.RenderEndTag(); //th

                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                        hw.Write("Reference URL");
                        hw.RenderEndTag(); //th

                        hw.RenderBeginTag(HtmlTextWriterTag.Th);
                        hw.Write("Object(s)");
                        hw.RenderEndTag(); //th

                        hw.RenderEndTag(); //tr

                        hw.RenderEndTag(); //thead

                        hw.RenderBeginTag(HtmlTextWriterTag.Tbody);

                        foreach(var warn in db.DesignIssueWarnings)
                        {

                            hw.RenderBeginTag(HtmlTextWriterTag.Tr);

                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                            hw.WriteEncodedText(warn.Description);
                            hw.RenderEndTag(); //td

                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                            if(warn.ReferenceUrl != null)
                            {
                                hw.AddAttribute("href", warn.ReferenceUrl.ToString());
                                hw.RenderBeginTag(HtmlTextWriterTag.A);
                                hw.WriteEncodedText(warn.ReferenceUrl.ToString());
                                hw.RenderEndTag(); //a
                            }
                            hw.RenderEndTag(); //td

                            hw.RenderBeginTag(HtmlTextWriterTag.Td);
                            foreach(IDbObject obj in warn.DatabaseObjects)
                            {
                                //hw.WriteEncodedText(obj.ObjectFullDisplayName);  //TODO: add internal hyperlinking
                                hw.WriteEncodedText(String.Format("{0} ( {1} )", obj.ObjectFullDisplayName, obj.ObjectTypeDisplayText));
                                hw.WriteBreak(); //br

                            }
                            //hw.WriteEncodedText(warn.Description);
                            hw.RenderEndTag(); //td

                            hw.RenderEndTag(); //tr
                        }

                        hw.RenderEndTag(); // tbody

                        hw.RenderEndTag(); //table
                    }

                    //footer
                    hw.RenderBeginTag(HtmlTextWriterTag.P);
                    hw.WriteEncodedText(String.Format("Documentation created using SQL Server Database Documentation Generator version {0}", this.appVersion));

                    hw.WriteBreak(); //br

                    hw.AddAttribute(HtmlTextWriterAttribute.Href, this.projectUrl);
                    hw.RenderBeginTag(HtmlTextWriterTag.A);
                    hw.WriteEncodedText(this.projectUrl);
                    hw.RenderEndTag(); //a

                    hw.RenderEndTag(); //p

                    hw.RenderEndTag(); //body

                    hw.RenderEndTag(); //html
                }

                return textWriter.ToString();
        }