Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / WebControlToolBoxItem.cs / 1 / WebControlToolBoxItem.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.Design {
using System;
using System.Design;
using System.Reflection;
using System.Runtime.Serialization;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Design;
using System.IO;
using System.Web.UI;
///
///
///
[
System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode),
Serializable
]
public class WebControlToolboxItem : ToolboxItem {
private string toolData = null;
private int persistChildren = -1;
///
public WebControlToolboxItem() {
}
///
///
/// Initializes a new instance of the class.
///
public WebControlToolboxItem(Type type) : base(type) {
BuildMetadataCache(type);
}
protected WebControlToolboxItem(SerializationInfo info, StreamingContext context) {
Deserialize(info, context);
}
private void BuildMetadataCache(Type type) {
toolData = ExtractToolboxData(type);
persistChildren = ExtractPersistChildrenAttribute(type);
}
///
///
///
/// Creates objects from each Type contained in this
/// , and adds
/// them to the specified designer.
///
protected override IComponent[] CreateComponentsCore(IDesignerHost host) {
throw new Exception(SR.GetString(SR.Toolbox_OnWebformsPage));
}
///
///
protected override void Deserialize(SerializationInfo info, StreamingContext context) {
base.Deserialize(info, context);
toolData = info.GetString("ToolData");
persistChildren = info.GetInt32("PersistChildren");
}
///
/// Extracts the value of the PersistChildrenAttribute attribute associated with the tool
///
private static int ExtractPersistChildrenAttribute(Type type) {
Debug.Assert(type != null);
if (type != null) {
object[] attrs = type.GetCustomAttributes(typeof(PersistChildrenAttribute), /*inherit*/ true);
if ((attrs != null) && (attrs.Length == 1)) {
Debug.Assert(attrs[0] is PersistChildrenAttribute);
PersistChildrenAttribute pca = (PersistChildrenAttribute)attrs[0];
return (pca.Persist ? 1 : 0);
}
}
return (PersistChildrenAttribute.Default.Persist ? 1 : 0);
}
///
/// Extracts the value of the ToolboxData attribute associated with the tool
///
private static string ExtractToolboxData(Type type) {
Debug.Assert(type != null);
string toolData = String.Empty;
if (type != null) {
object[] attrs = type.GetCustomAttributes(typeof(ToolboxDataAttribute), /*inherit*/ false);
if ((attrs != null) && (attrs.Length == 1)) {
Debug.Assert(attrs[0] is ToolboxDataAttribute);
ToolboxDataAttribute toolDataAttr = (ToolboxDataAttribute)attrs[0];
toolData = toolDataAttr.Data;
}
else {
string typeName = type.Name;
toolData = "<{0}:" + typeName + " runat=\"server\">{0}:" + typeName + ">";
}
}
return toolData;
}
///
public object GetToolAttributeValue(IDesignerHost host, Type attributeType) {
if (attributeType == typeof(PersistChildrenAttribute)) {
if (persistChildren == -1) {
Type toolType = GetToolType(host);
persistChildren = ExtractPersistChildrenAttribute(toolType);
}
return ((persistChildren == 1) ? true : false);
}
throw new ArgumentException(SR.GetString(SR.Toolbox_BadAttributeType));
}
///
///
/// Gets the toolbox HTML that represents the corresponding web control on the design surface.
///
public string GetToolHtml(IDesignerHost host) {
if (toolData != null) {
return toolData;
}
// Create the HTML data that is to be droppped.
Type toolType = GetToolType(host);
toolData = ExtractToolboxData(toolType);
return toolData;
}
///
public Type GetToolType(IDesignerHost host) {
if (host == null) {
throw new ArgumentNullException("host");
}
return GetType(host, AssemblyName, TypeName, true);
}
///
public override void Initialize(Type type) {
base.Initialize(type);
BuildMetadataCache(type);
}
///
///
protected override void Serialize(SerializationInfo info, StreamingContext context) {
base.Serialize(info, context);
info.AddValue("ToolData", toolData);
info.AddValue("PersistChildren", persistChildren);
}
}
}
// 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
- HttpRuntimeSection.cs
- PageCache.cs
- SectionInformation.cs
- GeneratedCodeAttribute.cs
- TextAction.cs
- BinaryMessageEncodingElement.cs
- DataGridViewRowEventArgs.cs
- ImageFormat.cs
- Gdiplus.cs
- AbstractSvcMapFileLoader.cs
- ComplexObject.cs
- NumericUpDownAccelerationCollection.cs
- ApplicationGesture.cs
- SponsorHelper.cs
- DefaultValueAttribute.cs
- SmiConnection.cs
- WorkflowWebHostingModule.cs
- NavigationEventArgs.cs
- VectorCollectionConverter.cs
- DataMember.cs
- SHA1CryptoServiceProvider.cs
- CountdownEvent.cs
- Module.cs
- MultidimensionalArrayItemReference.cs
- ConfigurationLocation.cs
- SemanticAnalyzer.cs
- IsolatedStorageFilePermission.cs
- FieldBuilder.cs
- Point4DConverter.cs
- RecordManager.cs
- PropertyDescriptorCollection.cs
- UndoUnit.cs
- FontFamilyValueSerializer.cs
- IRCollection.cs
- CompiledQuery.cs
- TextEditorMouse.cs
- BufferAllocator.cs
- Label.cs
- DeviceContext.cs
- RoleManagerSection.cs
- InstanceOwnerException.cs
- TypedElement.cs
- PolyLineSegmentFigureLogic.cs
- ViewStateAttachedPropertyFeature.cs
- Operators.cs
- XmlObjectSerializer.cs
- SQLRoleProvider.cs
- OdbcCommand.cs
- ClrProviderManifest.cs
- IDispatchConstantAttribute.cs
- ItemsPresenter.cs
- Compiler.cs
- ZipIORawDataFileBlock.cs
- Pair.cs
- WindowsListViewScroll.cs
- DataError.cs
- SoapAttributes.cs
- MonthChangedEventArgs.cs
- BindUriHelper.cs
- entityreference_tresulttype.cs
- SiteMapDataSourceView.cs
- DateTimeOffset.cs
- XmlSchemaAnnotation.cs
- WorkflowDefinitionDispenser.cs
- FormatterServices.cs
- ReliabilityContractAttribute.cs
- NativeObjectSecurity.cs
- SqlUtil.cs
- TextEditorTyping.cs
- NestedContainer.cs
- DataGridViewCellLinkedList.cs
- MissingFieldException.cs
- LinearGradientBrush.cs
- TypeForwardedToAttribute.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- serverconfig.cs
- sqlmetadatafactory.cs
- EventRoute.cs
- PropertyGridEditorPart.cs
- StringExpressionSet.cs
- Point3DIndependentAnimationStorage.cs
- xdrvalidator.cs
- FreezableCollection.cs
- EmptyControlCollection.cs
- CurrentChangedEventManager.cs
- MarkupCompilePass2.cs
- CodeNamespace.cs
- DBSchemaTable.cs
- ActionMismatchAddressingException.cs
- RTTrackingProfile.cs
- RedistVersionInfo.cs
- _DomainName.cs
- DbDeleteCommandTree.cs
- ExpressionBuilder.cs
- MultiBinding.cs
- PropertyManager.cs
- FixedPageStructure.cs
- ConfigXmlComment.cs
- KeyInterop.cs
- XmlnsPrefixAttribute.cs