Exemplo n.º 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;
        }
Exemplo n.º 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);
		}
Exemplo n.º 3
0
        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);
                }
            }
        }
Exemplo n.º 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();
     }
 }
Exemplo n.º 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();
		}
Exemplo n.º 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();
            }
        }
Exemplo n.º 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();
        }
Exemplo n.º 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();
            }
        }
Exemplo n.º 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);
        }
Exemplo n.º 10
0
 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);
     }
 }
Exemplo n.º 11
0
        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();
            }
        }
Exemplo n.º 12
0
        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();
                }
            }
        }
Exemplo n.º 13
0
        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();
     }
 }
Exemplo n.º 16
0
        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();
            }
        }
Exemplo n.º 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();
        }
Exemplo n.º 18
0
 /// <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();
     }
 }
Exemplo n.º 19
0
        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();
            }
        }
Exemplo n.º 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();
     }
 }
Exemplo n.º 24
0
        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
        }
Exemplo n.º 25
0
 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();
     }
 }
Exemplo n.º 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();
            }
        }
Exemplo n.º 27
0
 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();
         }
     }
 }
Exemplo n.º 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();
        }
Exemplo n.º 30
0
 protected virtual void WriteVinExample(HtmlTextWriter writer)
 {
     writer.Write(GetLocalizedString("InputVIN", GetVinExample()));
     writer.WriteBreak();
 }
Exemplo n.º 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());
            }
        }
Exemplo n.º 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();
        }
Exemplo n.º 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();
        }