public void Render(WebTabStripRenderingContext renderingContext, IWebTab tab, bool isEnabled, bool isLast, WebTabStyle style) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); ArgumentUtility.CheckNotNull("style", style); ScriptUtility.Instance.RegisterElementForBorderSpans(renderingContext.Control, "#" + GetTabClientID(renderingContext, tab) + " > *:first"); RenderTabBegin(renderingContext); RenderSeperator(renderingContext); RenderWrapperBegin(renderingContext, tab); var command = RenderBeginTagForCommand(renderingContext, tab, isEnabled, style); RenderContents(renderingContext, tab); RenderEndTagForCommand(renderingContext, command); renderingContext.Writer.RenderEndTag(); // End tab span renderingContext.Writer.RenderEndTag(); // End tab wrapper span if (isLast) { renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Class, CssClassTabLast); renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Span); renderingContext.Writer.RenderEndTag(); } renderingContext.Writer.RenderEndTag(); // End list item }
private void AssertAnchor(XmlNode link, IWebTab tab) { var anchorBody = link.GetAssertedChildElement("span", 0); anchorBody.AssertAttributeValueEquals("class", _renderer.CssClassTabAnchorBody); string text = tab.Text ?? string.Empty; var hasIcon = tab.Icon != null && !string.IsNullOrEmpty(tab.Icon.Url); if (hasIcon) { string url = tab.Icon.Url.TrimStart('~'); string alt = tab.Icon.AlternateText ?? string.Empty; text = HtmlHelper.WhiteSpace + text; var image = anchorBody.GetAssertedChildElement("img", 0); image.AssertAttributeValueEquals("src", url); image.AssertAttributeValueEquals("alt", alt); } if (string.IsNullOrEmpty(text)) { text = HtmlHelper.WhiteSpace; } anchorBody.AssertTextNode(text, hasIcon ? 1 : 0); }
private void AssertTabs(XmlNode list, bool isDesignMode) { var tabs = _webTabStrip.GetVisibleTabs(); int itemCount = list.ChildNodes.Count; if (!isDesignMode) { Assert.That(itemCount, Is.EqualTo(tabs.Count)); } for (int i = 0; i < itemCount; i++) { IWebTab tab = tabs[i]; bool isLastItem = (i == itemCount - 1); var item = list.GetAssertedChildElement("li", i); AssertItem(item, tab, isLastItem, isDesignMode); if (isLastItem) { var lastSpan = item.GetAssertedChildElement("span", 1); lastSpan.AssertAttributeValueEquals("class", "last"); } } }
public WebTabRendererAdapter(IWebTabRenderer webTabRenderer, IWebTab webTab, bool isLast, bool isEnabled, WebTabStyle webTabStyle) { ArgumentUtility.CheckNotNull("webTabRenderer", webTabRenderer); ArgumentUtility.CheckNotNull("webTab", webTab); _webTabRenderer = webTabRenderer; _webTab = webTab; _isLast = isLast; _isEnabled = isEnabled; _webTabStyle = webTabStyle; }
private void AssertItem(XmlNode item, IWebTab webTab, bool isLastItem, bool isDesignMode) { if (isDesignMode) { item.AssertStyleAttribute("float", "left"); item.AssertStyleAttribute("display", "block"); item.AssertStyleAttribute("white-space", "nowrap"); } item.AssertChildElementCount(isLastItem ? 2 : 1); var wrapper = item.GetAssertedChildElement("span", 0); wrapper.AssertAttributeValueEquals("class", _renderer.CssClassTabWrapper); var separator = wrapper.GetAssertedChildElement("span", 0); separator.AssertAttributeValueEquals("class", _renderer.CssClassSeparator); separator.AssertChildElementCount(1); var empty = separator.GetAssertedChildElement("span", 0); empty.AssertChildElementCount(0); var tab = wrapper.GetAssertedChildElement("span", 1); tab.AssertAttributeValueEquals("id", _webTabStrip.ClientID + "_" + webTab.ItemID); tab.AssertAttributeValueContains("class", webTab.IsSelected ? _renderer.CssClassTabSelected : _renderer.CssClassTab); if (!webTab.EvaluateEnabled()) { tab.AssertAttributeValueContains("class", _renderer.CssClassDisabled); } var link = tab.GetAssertedChildElement("a", 0); bool isDisabledBySelection = webTab.IsSelected && !_webTabStrip.EnableSelectedTab; if (webTab.EvaluateEnabled()) { link.AssertAttributeValueEquals("href", "#"); } if (webTab.EvaluateEnabled() && !isDisabledBySelection) { string clickScript = _pageStub.ClientScript.GetPostBackClientHyperlink(_webTabStrip, webTab.ItemID); link.AssertAttributeValueEquals("onclick", clickScript); } AssertAnchor(link, webTab); }
private void PopulateTabStrip() { _tab0 = MockRepository.GenerateStub <IWebTab>(); _tab0.Stub(stub => stub.ItemID).Return("Tab0"); _tab0.Stub(stub => stub.Text).Return("First Tab"); _tab0.Stub(stub => stub.Icon).Return(new IconInfo()); _tab0.Stub(stub => stub.EvaluateEnabled()).Return(true); _tab0.Stub(stub => stub.GetPostBackClientEvent()).Return(_pageStub.ClientScript.GetPostBackClientHyperlink(_webTabStrip, _tab0.ItemID)); _tab0.Stub(stub => stub.GetRenderer()).IgnoreArguments().Return(CreateWebTabRenderer()); _tab1 = MockRepository.GenerateStub <IWebTab>(); _tab1.Stub(stub => stub.ItemID).Return("Tab1"); _tab1.Stub(stub => stub.Text).Return("Second Tab"); _tab1.Stub(stub => stub.Icon).Return(new IconInfo("~/myImageUrl")); _tab1.Stub(stub => stub.EvaluateEnabled()).Return(true); _tab1.Stub(stub => stub.GetPostBackClientEvent()).Return(_pageStub.ClientScript.GetPostBackClientHyperlink(_webTabStrip, _tab1.ItemID)); _tab1.Stub(stub => stub.GetRenderer()).IgnoreArguments().Return(CreateWebTabRenderer()); _tab2 = MockRepository.GenerateStub <IWebTab>(); _tab2.Stub(stub => stub.ItemID).Return("Tab2"); _tab2.Stub(stub => stub.Text).Return("Third Tab"); _tab2.Stub(stub => stub.Icon).Return(null); _tab2.Stub(stub => stub.EvaluateEnabled()).Return(true); _tab2.Stub(stub => stub.GetPostBackClientEvent()).Return(_pageStub.ClientScript.GetPostBackClientHyperlink(_webTabStrip, _tab2.ItemID)); _tab2.Stub(stub => stub.GetRenderer()).IgnoreArguments().Return(CreateWebTabRenderer()); _tab3 = MockRepository.GenerateStub <IWebTab>(); _tab3.Stub(stub => stub.ItemID).Return("Tab3"); _tab3.Stub(stub => stub.Text).Return(null); _tab3.Stub(stub => stub.Icon).Return(null); _tab3.Stub(stub => stub.EvaluateEnabled()).Return(true); _tab3.Stub(stub => stub.GetPostBackClientEvent()).Return(_pageStub.ClientScript.GetPostBackClientHyperlink(_webTabStrip, _tab3.ItemID)); _tab3.Stub(stub => stub.GetRenderer()).IgnoreArguments().Return(CreateWebTabRenderer()); _webTabStrip.GetVisibleTabs().Add(_tab0); _webTabStrip.GetVisibleTabs().Add(_tab1); _webTabStrip.GetVisibleTabs().Add(_tab2); _webTabStrip.GetVisibleTabs().Add(_tab3); }
protected override Command RenderBeginTagForCommand(WebTabStripRenderingContext renderingContext, IWebTab tab, bool isEnabled, WebTabStyle style) { ArgumentUtility.CheckNotNull("style", style); var menuTab = ((IMenuTab)tab).GetActiveTab(); var command = GetRenderingCommand(isEnabled, menuTab); var additionalUrlParameters = menuTab.GetUrlParameters(); var backupID = command.ItemID; var backupAccessKey = command.AccessKey; try { if (string.IsNullOrEmpty(command.ItemID) && !string.IsNullOrEmpty(tab.ItemID)) { command.ItemID = tab.ItemID + "_Command"; } if (string.IsNullOrEmpty(command.AccessKey)) { var textWithHotkey = HotkeyParser.Parse(tab.Text); if (textWithHotkey.Hotkey.HasValue) { command.AccessKey = HotkeyFormatter.FormatHotkey(textWithHotkey); } } command.RenderBegin( renderingContext.Writer, RenderingFeatures, tab.GetPostBackClientEvent(), new string[0], string.Empty, null, additionalUrlParameters, false, style); return(command); } finally { command.ItemID = backupID; command.AccessKey = backupAccessKey; } }
private void RenderWrapperBegin(WebTabStripRenderingContext renderingContext, IWebTab tab) { renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Id, GetTabClientID(renderingContext, tab)); string cssClass; if (tab.IsSelected) { cssClass = CssClassTabSelected; } else { cssClass = CssClassTab; } if (!tab.EvaluateEnabled()) { cssClass += " " + CssClassDisabled; } renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Class, cssClass); if (RenderingFeatures.EnableDiagnosticMetadata) { if (!string.IsNullOrEmpty(tab.ItemID)) { renderingContext.Writer.AddAttribute(DiagnosticMetadataAttributes.ItemID, tab.ItemID); } if (!string.IsNullOrEmpty(tab.Text)) { renderingContext.Writer.AddAttribute(DiagnosticMetadataAttributes.Content, HtmlUtility.StripHtmlTags(tab.Text)); } } renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Span); // Begin tab span }
private string GetTabClientID(WebTabStripRenderingContext renderingContext, IWebTab tab) { return(renderingContext.Control.ClientID + "_" + tab.ItemID); }
protected virtual void RenderContents(WebTabStripRenderingContext renderingContext, IWebTab tab) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); renderingContext.Writer.AddAttribute(HtmlTextWriterAttribute.Class, CssClassTabAnchorBody); renderingContext.Writer.RenderBeginTag(HtmlTextWriterTag.Span); // Begin anchor body span bool hasIcon = tab.Icon != null && tab.Icon.HasRenderingInformation; bool hasText = !string.IsNullOrEmpty(tab.Text); if (hasIcon) { tab.Icon.Render(renderingContext.Writer, renderingContext.Control); } if (hasIcon && hasText) { renderingContext.Writer.Write(" "); } if (hasText) { var textWithHotkey = HotkeyParser.Parse(tab.Text); renderingContext.Writer.Write(_hotkeyFormatter.FormatText(textWithHotkey, false)); // Do not HTML encode } if (!hasIcon && !hasText) { renderingContext.Writer.Write(" "); } renderingContext.Writer.RenderEndTag(); // End anchor body span }
protected virtual Command RenderBeginTagForCommand(WebTabStripRenderingContext renderingContext, IWebTab tab, bool isEnabled, WebTabStyle style) { ArgumentUtility.CheckNotNull("renderingContext", renderingContext); ArgumentUtility.CheckNotNull("style", style); var command = new Command(); command.OwnerControl = renderingContext.Control; command.ItemID = tab.ItemID + "_Command"; if (isEnabled && tab.EvaluateEnabled()) { command.Type = CommandType.Event; var textWithHotkey = HotkeyParser.Parse(tab.Text); if (textWithHotkey.Hotkey.HasValue) { command.AccessKey = _hotkeyFormatter.FormatHotkey(textWithHotkey); } } else { command.Type = CommandType.None; } command.RenderBegin( renderingContext.Writer, RenderingFeatures, tab.GetPostBackClientEvent(), new string[0], string.Empty, null, new NameValueCollection(), false, style); return(command); }