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
- DataGridViewCellMouseEventArgs.cs
- GridItem.cs
- X500Name.cs
- IODescriptionAttribute.cs
- ScriptingProfileServiceSection.cs
- CodeAttributeDeclaration.cs
- IndexingContentUnit.cs
- ClientBase.cs
- UIElementAutomationPeer.cs
- MessageHeaderDescription.cs
- LayoutEditorPart.cs
- MapPathBasedVirtualPathProvider.cs
- CachedPathData.cs
- ClusterSafeNativeMethods.cs
- Comparer.cs
- LinqMaximalSubtreeNominator.cs
- DataKeyPropertyAttribute.cs
- ProcessHost.cs
- IntSumAggregationOperator.cs
- EventData.cs
- FileLogRecord.cs
- ColumnBinding.cs
- brushes.cs
- _NestedSingleAsyncResult.cs
- Context.cs
- SQLMoneyStorage.cs
- AsynchronousChannelMergeEnumerator.cs
- XmlValidatingReader.cs
- RequiredFieldValidator.cs
- DirectoryNotFoundException.cs
- PersistChildrenAttribute.cs
- path.cs
- ComponentResourceKeyConverter.cs
- ArraySet.cs
- InternalControlCollection.cs
- HtmlButton.cs
- DataGridViewRow.cs
- DataProtection.cs
- HttpConfigurationContext.cs
- WebColorConverter.cs
- IndicFontClient.cs
- UIElement.cs
- IgnoreFileBuildProvider.cs
- IncrementalCompileAnalyzer.cs
- FieldToken.cs
- CharConverter.cs
- CloseSequence.cs
- coordinator.cs
- Normalization.cs
- UnsafeNativeMethods.cs
- PkcsMisc.cs
- Membership.cs
- SendSecurityHeaderElementContainer.cs
- VectorAnimationBase.cs
- BridgeDataRecord.cs
- TableCellCollection.cs
- COM2TypeInfoProcessor.cs
- UInt16.cs
- SiteOfOriginContainer.cs
- StaticFileHandler.cs
- TemplateBaseAction.cs
- Soap.cs
- UserControlCodeDomTreeGenerator.cs
- xml.cs
- DataKeyCollection.cs
- ExtenderProviderService.cs
- TransformedBitmap.cs
- XmlBinaryWriter.cs
- StateElement.cs
- GridItemCollection.cs
- HttpException.cs
- UInt64Storage.cs
- QueryContinueDragEventArgs.cs
- BufferedReadStream.cs
- BaseHashHelper.cs
- Debug.cs
- CaseCqlBlock.cs
- ObjectItemAttributeAssemblyLoader.cs
- Geometry.cs
- SeekStoryboard.cs
- RC2CryptoServiceProvider.cs
- DecimalAnimation.cs
- Enlistment.cs
- UserControlCodeDomTreeGenerator.cs
- LoginUtil.cs
- TraceUtility.cs
- PackageStore.cs
- XmlSchemaException.cs
- GenericArgumentsUpdater.cs
- RTLAwareMessageBox.cs
- PreloadedPackages.cs
- GlyphTypeface.cs
- StylusPointProperties.cs
- OdbcErrorCollection.cs
- CodeObject.cs
- OracleConnectionString.cs
- DataTemplateKey.cs
- DataGridViewTextBoxCell.cs
- AnonymousIdentificationModule.cs
- AttachInfo.cs