Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / WebParts / CatalogPartChrome.cs / 2 / 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 (
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. (
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.
//------------------------------------------------------------------------------
//
// 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 (
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. (
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PasswordBoxAutomationPeer.cs
- GPPOINTF.cs
- ParamArrayAttribute.cs
- MetadataItemCollectionFactory.cs
- XmlEncoding.cs
- PublishLicense.cs
- MemberDescriptor.cs
- PrincipalPermission.cs
- ActivityTrace.cs
- PropertyTabChangedEvent.cs
- WebUtil.cs
- DetailsViewUpdateEventArgs.cs
- GC.cs
- WebHttpDispatchOperationSelector.cs
- DependencyObjectValidator.cs
- EntityTypeEmitter.cs
- ApplicationActivator.cs
- XmlSignificantWhitespace.cs
- WS2007HttpBinding.cs
- ApplicationInterop.cs
- HyperLinkStyle.cs
- UnsafeNetInfoNativeMethods.cs
- CodeTryCatchFinallyStatement.cs
- XmlEntityReference.cs
- Opcode.cs
- TokenBasedSetEnumerator.cs
- _SSPISessionCache.cs
- DataGridItem.cs
- WebPartEditorOkVerb.cs
- SqlGenerator.cs
- PrintSystemException.cs
- Subtree.cs
- SendMailErrorEventArgs.cs
- UIElement3DAutomationPeer.cs
- CodeGenerator.cs
- FontStretches.cs
- PieceNameHelper.cs
- MessageQueueCriteria.cs
- WebBodyFormatMessageProperty.cs
- WindowsScrollBar.cs
- ErrorStyle.cs
- PropertyItem.cs
- SqlRowUpdatingEvent.cs
- IgnoreDeviceFilterElement.cs
- WhitespaceRuleReader.cs
- DataSourceHelper.cs
- Viewport3DVisual.cs
- WaitHandle.cs
- MsmqTransportElement.cs
- TextBoxBase.cs
- LayoutEngine.cs
- InternalDuplexChannelListener.cs
- StateMachine.cs
- XmlQueryRuntime.cs
- ExpressionBuilderContext.cs
- FixedTextBuilder.cs
- PointCollection.cs
- CommandValueSerializer.cs
- OneOfElement.cs
- ContainerActivationHelper.cs
- IgnoreFileBuildProvider.cs
- CustomLineCap.cs
- DefaultPropertyAttribute.cs
- Geometry.cs
- ResourceProviderFactory.cs
- MetadataHelper.cs
- UnauthorizedWebPart.cs
- SqlStatistics.cs
- RegexMatchCollection.cs
- ListChangedEventArgs.cs
- ValidationPropertyAttribute.cs
- SuppressMergeCheckAttribute.cs
- XmlWriter.cs
- DispatcherSynchronizationContext.cs
- FileDetails.cs
- ContractAdapter.cs
- ChildTable.cs
- Operator.cs
- FormViewModeEventArgs.cs
- SynchronizedMessageSource.cs
- StorageModelBuildProvider.cs
- Point4DValueSerializer.cs
- XPathEmptyIterator.cs
- XmlAnyElementAttribute.cs
- ModelVisual3D.cs
- FloaterParaClient.cs
- UseAttributeSetsAction.cs
- BrowserInteropHelper.cs
- ErrorHandlingAcceptor.cs
- MSAAWinEventWrap.cs
- SkewTransform.cs
- XLinq.cs
- MonitorWrapper.cs
- AttributeCollection.cs
- CodeObject.cs
- ReachBasicContext.cs
- MDIWindowDialog.cs
- NetworkInterface.cs
- PeerCollaborationPermission.cs
- BinaryWriter.cs