Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / UI / WebParts / CatalogPartChrome.cs / 1 / CatalogPartChrome.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls.WebParts { using System; using System.Collections; using System.ComponentModel; using System.Drawing; using System.Globalization; using System.Security.Permissions; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class CatalogPartChrome { private CatalogZoneBase _zone; // PERF: Cache these, since they are needed for every CatalogPart in the zone private Page _page; private Style _chromeStyleWithBorder; private Style _chromeStyleNoBorder; public CatalogPartChrome(CatalogZoneBase zone) { if (zone == null) { throw new ArgumentNullException("zone"); } _zone = zone; _page = zone.Page; } protected CatalogZoneBase Zone { get { return _zone; } } protected virtual Style CreateCatalogPartChromeStyle(CatalogPart catalogPart, PartChromeType chromeType) { if (catalogPart == null) { throw new ArgumentNullException("catalogPart"); } if ((chromeType < PartChromeType.Default) || (chromeType > PartChromeType.BorderOnly)) { throw new ArgumentOutOfRangeException("chromeType"); } if (chromeType == PartChromeType.BorderOnly || chromeType == PartChromeType.TitleAndBorder) { if (_chromeStyleWithBorder == null) { Style style = new Style(); style.CopyFrom(Zone.PartChromeStyle); if (style.BorderStyle == BorderStyle.NotSet) { style.BorderStyle = BorderStyle.Solid; } if (style.BorderWidth == Unit.Empty) { style.BorderWidth = Unit.Pixel(1); } if (style.BorderColor == Color.Empty) { style.BorderColor = Color.Black; } _chromeStyleWithBorder = style; } return _chromeStyleWithBorder; } else { if (_chromeStyleNoBorder == null) { Style style = new Style(); style.CopyFrom(Zone.PartChromeStyle); if (style.BorderStyle != BorderStyle.NotSet) { style.BorderStyle = BorderStyle.NotSet; } if (style.BorderWidth != Unit.Empty) { style.BorderWidth = Unit.Empty; } if (style.BorderColor != Color.Empty) { style.BorderColor = Color.Empty; } _chromeStyleNoBorder = style; } return _chromeStyleNoBorder; } } public virtual void PerformPreRender() { } public virtual void RenderCatalogPart(HtmlTextWriter writer, CatalogPart catalogPart) { if (catalogPart == null) { throw new ArgumentNullException("catalogPart"); } PartChromeType chromeType = Zone.GetEffectiveChromeType(catalogPart); Style partChromeStyle = CreateCatalogPartChromeStyle(catalogPart, chromeType); // if (!partChromeStyle.IsEmpty) { partChromeStyle.AddAttributesToRender(writer, Zone); } writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0"); // Use CellPadding=2 to match WebPartChrome (VSWhidbey 324397) writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "2"); writer.AddAttribute(HtmlTextWriterAttribute.Border, "0"); writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%"); writer.RenderBeginTag(HtmlTextWriterTag.Table); if (chromeType == PartChromeType.TitleOnly || chromeType == PartChromeType.TitleAndBorder) { writer.RenderBeginTag(HtmlTextWriterTag.Tr); // Can apply PartTitleStyle directly, since the title bar doesn't contain a nested table Style partTitleStyle = Zone.PartTitleStyle; if (!partTitleStyle.IsEmpty) { partTitleStyle.AddAttributesToRender(writer, Zone); } writer.RenderBeginTag(HtmlTextWriterTag.Td); RenderTitle(writer, catalogPart); writer.RenderEndTag(); // Td writer.RenderEndTag(); // Tr } if (catalogPart.ChromeState != PartChromeState.Minimized) { writer.RenderBeginTag(HtmlTextWriterTag.Tr); Style partStyle = Zone.PartStyle; if (!partStyle.IsEmpty) { partStyle.AddAttributesToRender(writer, Zone); } // For now, I don't think we should render extra padding here. People writing custom // CatalogParts can add a margin to their contents if they want it. This is not the // same as the WebPartChrome case, since for WebParts we allow people to use ServerControls, // that will likely not have a margin. (VSWhidbey 324397) // writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "5px"); writer.RenderBeginTag(HtmlTextWriterTag.Td); // RenderPartContents(writer, catalogPart); RenderItems(writer, catalogPart); writer.RenderEndTag(); // Td writer.RenderEndTag(); // Tr } writer.RenderEndTag(); // Table } private void RenderItem(HtmlTextWriter writer, WebPartDescription webPartDescription) { string description = webPartDescription.Description; if (String.IsNullOrEmpty(description)) { description = webPartDescription.Title; } RenderItemCheckBox(writer, webPartDescription.ID); writer.Write(" "); if (Zone.ShowCatalogIcons) { string icon = webPartDescription.CatalogIconImageUrl; if (!String.IsNullOrEmpty(icon)) { RenderItemIcon(writer, icon, description); writer.Write(" "); } } RenderItemText(writer, webPartDescription.ID, webPartDescription.Title, description); writer.WriteBreak(); } private void RenderItemCheckBox(HtmlTextWriter writer, string value) { Zone.EditUIStyle.AddAttributesToRender(writer, Zone); writer.AddAttribute(HtmlTextWriterAttribute.Type, "checkbox"); writer.AddAttribute(HtmlTextWriterAttribute.Id, Zone.GetCheckBoxID(value)); writer.AddAttribute(HtmlTextWriterAttribute.Name, Zone.CheckBoxName); writer.AddAttribute(HtmlTextWriterAttribute.Value, value); writer.RenderBeginTag(HtmlTextWriterTag.Input); writer.RenderEndTag(); // Input if (_page != null) { _page.ClientScript.RegisterForEventValidation(Zone.CheckBoxName); } } private void RenderItemIcon(HtmlTextWriter writer, string iconUrl, string description) { System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image(); img.AlternateText = description; // img.ImageUrl = iconUrl; img.BorderStyle = BorderStyle.None; img.Page = _page; img.RenderControl(writer); } private void RenderItemText(HtmlTextWriter writer, string value, string text, string description) { Zone.LabelStyle.AddAttributesToRender(writer, Zone); writer.AddAttribute(HtmlTextWriterAttribute.For, Zone.GetCheckBoxID(value)); writer.AddAttribute(HtmlTextWriterAttribute.Title, description, true /* fEncode */); writer.RenderBeginTag(HtmlTextWriterTag.Label); writer.WriteEncodedText(text); writer.RenderEndTag(); } private void RenderItems(HtmlTextWriter writer, CatalogPart catalogPart) { WebPartDescriptionCollection availableWebParts = catalogPart.GetAvailableWebPartDescriptions(); if (availableWebParts != null) { foreach (WebPartDescription webPartDescription in availableWebParts) { RenderItem(writer, webPartDescription); } } } protected virtual void RenderPartContents(HtmlTextWriter writer, CatalogPart catalogPart) { if (catalogPart == null) { throw new ArgumentNullException("catalogPart"); } catalogPart.RenderControl(writer); } private void RenderTitle(HtmlTextWriter writer, CatalogPart catalogPart) { Label label = new Label(); label.Text = catalogPart.DisplayTitle; label.ToolTip = catalogPart.Description; label.Page = _page; label.RenderControl(writer); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.WebControls.WebParts { using System; using System.Collections; using System.ComponentModel; using System.Drawing; using System.Globalization; using System.Security.Permissions; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class CatalogPartChrome { private CatalogZoneBase _zone; // PERF: Cache these, since they are needed for every CatalogPart in the zone private Page _page; private Style _chromeStyleWithBorder; private Style _chromeStyleNoBorder; public CatalogPartChrome(CatalogZoneBase zone) { if (zone == null) { throw new ArgumentNullException("zone"); } _zone = zone; _page = zone.Page; } protected CatalogZoneBase Zone { get { return _zone; } } protected virtual Style CreateCatalogPartChromeStyle(CatalogPart catalogPart, PartChromeType chromeType) { if (catalogPart == null) { throw new ArgumentNullException("catalogPart"); } if ((chromeType < PartChromeType.Default) || (chromeType > PartChromeType.BorderOnly)) { throw new ArgumentOutOfRangeException("chromeType"); } if (chromeType == PartChromeType.BorderOnly || chromeType == PartChromeType.TitleAndBorder) { if (_chromeStyleWithBorder == null) { Style style = new Style(); style.CopyFrom(Zone.PartChromeStyle); if (style.BorderStyle == BorderStyle.NotSet) { style.BorderStyle = BorderStyle.Solid; } if (style.BorderWidth == Unit.Empty) { style.BorderWidth = Unit.Pixel(1); } if (style.BorderColor == Color.Empty) { style.BorderColor = Color.Black; } _chromeStyleWithBorder = style; } return _chromeStyleWithBorder; } else { if (_chromeStyleNoBorder == null) { Style style = new Style(); style.CopyFrom(Zone.PartChromeStyle); if (style.BorderStyle != BorderStyle.NotSet) { style.BorderStyle = BorderStyle.NotSet; } if (style.BorderWidth != Unit.Empty) { style.BorderWidth = Unit.Empty; } if (style.BorderColor != Color.Empty) { style.BorderColor = Color.Empty; } _chromeStyleNoBorder = style; } return _chromeStyleNoBorder; } } public virtual void PerformPreRender() { } public virtual void RenderCatalogPart(HtmlTextWriter writer, CatalogPart catalogPart) { if (catalogPart == null) { throw new ArgumentNullException("catalogPart"); } PartChromeType chromeType = Zone.GetEffectiveChromeType(catalogPart); Style partChromeStyle = CreateCatalogPartChromeStyle(catalogPart, chromeType); // if (!partChromeStyle.IsEmpty) { partChromeStyle.AddAttributesToRender(writer, Zone); } writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0"); // Use CellPadding=2 to match WebPartChrome (VSWhidbey 324397) writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "2"); writer.AddAttribute(HtmlTextWriterAttribute.Border, "0"); writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%"); writer.RenderBeginTag(HtmlTextWriterTag.Table); if (chromeType == PartChromeType.TitleOnly || chromeType == PartChromeType.TitleAndBorder) { writer.RenderBeginTag(HtmlTextWriterTag.Tr); // Can apply PartTitleStyle directly, since the title bar doesn't contain a nested table Style partTitleStyle = Zone.PartTitleStyle; if (!partTitleStyle.IsEmpty) { partTitleStyle.AddAttributesToRender(writer, Zone); } writer.RenderBeginTag(HtmlTextWriterTag.Td); RenderTitle(writer, catalogPart); writer.RenderEndTag(); // Td writer.RenderEndTag(); // Tr } if (catalogPart.ChromeState != PartChromeState.Minimized) { writer.RenderBeginTag(HtmlTextWriterTag.Tr); Style partStyle = Zone.PartStyle; if (!partStyle.IsEmpty) { partStyle.AddAttributesToRender(writer, Zone); } // For now, I don't think we should render extra padding here. People writing custom // CatalogParts can add a margin to their contents if they want it. This is not the // same as the WebPartChrome case, since for WebParts we allow people to use ServerControls, // that will likely not have a margin. (VSWhidbey 324397) // writer.AddStyleAttribute(HtmlTextWriterStyle.Padding, "5px"); writer.RenderBeginTag(HtmlTextWriterTag.Td); // RenderPartContents(writer, catalogPart); RenderItems(writer, catalogPart); writer.RenderEndTag(); // Td writer.RenderEndTag(); // Tr } writer.RenderEndTag(); // Table } private void RenderItem(HtmlTextWriter writer, WebPartDescription webPartDescription) { string description = webPartDescription.Description; if (String.IsNullOrEmpty(description)) { description = webPartDescription.Title; } RenderItemCheckBox(writer, webPartDescription.ID); writer.Write(" "); if (Zone.ShowCatalogIcons) { string icon = webPartDescription.CatalogIconImageUrl; if (!String.IsNullOrEmpty(icon)) { RenderItemIcon(writer, icon, description); writer.Write(" "); } } RenderItemText(writer, webPartDescription.ID, webPartDescription.Title, description); writer.WriteBreak(); } private void RenderItemCheckBox(HtmlTextWriter writer, string value) { Zone.EditUIStyle.AddAttributesToRender(writer, Zone); writer.AddAttribute(HtmlTextWriterAttribute.Type, "checkbox"); writer.AddAttribute(HtmlTextWriterAttribute.Id, Zone.GetCheckBoxID(value)); writer.AddAttribute(HtmlTextWriterAttribute.Name, Zone.CheckBoxName); writer.AddAttribute(HtmlTextWriterAttribute.Value, value); writer.RenderBeginTag(HtmlTextWriterTag.Input); writer.RenderEndTag(); // Input if (_page != null) { _page.ClientScript.RegisterForEventValidation(Zone.CheckBoxName); } } private void RenderItemIcon(HtmlTextWriter writer, string iconUrl, string description) { System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image(); img.AlternateText = description; // img.ImageUrl = iconUrl; img.BorderStyle = BorderStyle.None; img.Page = _page; img.RenderControl(writer); } private void RenderItemText(HtmlTextWriter writer, string value, string text, string description) { Zone.LabelStyle.AddAttributesToRender(writer, Zone); writer.AddAttribute(HtmlTextWriterAttribute.For, Zone.GetCheckBoxID(value)); writer.AddAttribute(HtmlTextWriterAttribute.Title, description, true /* fEncode */); writer.RenderBeginTag(HtmlTextWriterTag.Label); writer.WriteEncodedText(text); writer.RenderEndTag(); } private void RenderItems(HtmlTextWriter writer, CatalogPart catalogPart) { WebPartDescriptionCollection availableWebParts = catalogPart.GetAvailableWebPartDescriptions(); if (availableWebParts != null) { foreach (WebPartDescription webPartDescription in availableWebParts) { RenderItem(writer, webPartDescription); } } } protected virtual void RenderPartContents(HtmlTextWriter writer, CatalogPart catalogPart) { if (catalogPart == null) { throw new ArgumentNullException("catalogPart"); } catalogPart.RenderControl(writer); } private void RenderTitle(HtmlTextWriter writer, CatalogPart catalogPart) { Label label = new Label(); label.Text = catalogPart.DisplayTitle; label.ToolTip = catalogPart.Description; label.Page = _page; label.RenderControl(writer); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- QuotaThrottle.cs
- GridViewRowEventArgs.cs
- PictureBoxDesigner.cs
- List.cs
- InternalBufferManager.cs
- ExtensionWindow.cs
- WorkflowServiceNamespace.cs
- ViewBox.cs
- HttpModuleAction.cs
- DataGridViewColumnHeaderCell.cs
- QilStrConcatenator.cs
- PictureBox.cs
- XNodeNavigator.cs
- PropertyKey.cs
- SafeReversePInvokeHandle.cs
- HtmlInputPassword.cs
- DateTimeSerializationSection.cs
- TextRangeSerialization.cs
- TCPClient.cs
- EntityDataReader.cs
- HtmlTable.cs
- AspCompat.cs
- NetworkStream.cs
- AuthenticationException.cs
- RegionIterator.cs
- Attribute.cs
- AjaxFrameworkAssemblyAttribute.cs
- FontResourceCache.cs
- PropertyStore.cs
- CodeArgumentReferenceExpression.cs
- ProtocolInformationWriter.cs
- BackStopAuthenticationModule.cs
- LiteralSubsegment.cs
- LayoutDump.cs
- ArgumentNullException.cs
- XmlTypeMapping.cs
- AudioFormatConverter.cs
- TextUtf8RawTextWriter.cs
- RegistrySecurity.cs
- SemanticResultKey.cs
- DocumentXPathNavigator.cs
- SystemNetworkInterface.cs
- SymbolMethod.cs
- WebPartTransformer.cs
- SqlConnectionFactory.cs
- DockingAttribute.cs
- SettingsPropertyIsReadOnlyException.cs
- DockingAttribute.cs
- IPHostEntry.cs
- WebEventTraceProvider.cs
- Int32CollectionValueSerializer.cs
- StylusEventArgs.cs
- MembershipPasswordException.cs
- SqlTriggerContext.cs
- Pointer.cs
- HttpClientCredentialType.cs
- PeerContact.cs
- WebZone.cs
- HierarchicalDataSourceConverter.cs
- CompilerState.cs
- XmlnsPrefixAttribute.cs
- PlainXmlDeserializer.cs
- RuntimeResourceSet.cs
- RtfControlWordInfo.cs
- FileNotFoundException.cs
- ParameterModifier.cs
- ElapsedEventArgs.cs
- RoutingEndpointTrait.cs
- UniqueConstraint.cs
- AudioException.cs
- UIElementParagraph.cs
- AsyncCodeActivityContext.cs
- SwitchElementsCollection.cs
- PackageRelationshipSelector.cs
- TypeBuilderInstantiation.cs
- ControlCachePolicy.cs
- ToolStripDropDownItem.cs
- Schema.cs
- Vertex.cs
- FileEnumerator.cs
- WindowHelperService.cs
- StylusPointPropertyId.cs
- UnmanagedMemoryStream.cs
- EventWaitHandleSecurity.cs
- SqlNotificationEventArgs.cs
- SetterBase.cs
- VirtualPath.cs
- WebBrowsableAttribute.cs
- PiiTraceSource.cs
- BitmapPalette.cs
- CustomErrorsSection.cs
- ParameterElementCollection.cs
- ConversionValidationRule.cs
- JavaScriptString.cs
- XmlArrayAttribute.cs
- DataGridTableCollection.cs
- InputLanguageSource.cs
- DataGridDetailsPresenter.cs
- FrameSecurityDescriptor.cs
- TypeInitializationException.cs