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
- ConfigUtil.cs
- DataColumnChangeEvent.cs
- XAMLParseException.cs
- ScriptingProfileServiceSection.cs
- SslStream.cs
- SectionInput.cs
- DataSetMappper.cs
- AppDomainUnloadedException.cs
- Blend.cs
- SapiRecognizer.cs
- CommentAction.cs
- MetadataCacheItem.cs
- XmlSchemaImport.cs
- ValuePattern.cs
- SerializationInfo.cs
- TagPrefixInfo.cs
- Slider.cs
- ManagedWndProcTracker.cs
- ComAdminInterfaces.cs
- TextServicesDisplayAttribute.cs
- CapabilitiesState.cs
- KeyboardNavigation.cs
- TransactionManager.cs
- RunWorkerCompletedEventArgs.cs
- AssemblyNameProxy.cs
- ConnectionsZone.cs
- SqlTriggerContext.cs
- SByte.cs
- ClickablePoint.cs
- CompModHelpers.cs
- XmlSchemaObjectTable.cs
- SecurityContextSecurityTokenAuthenticator.cs
- ThreadSafeList.cs
- recordstatefactory.cs
- ExtensionQuery.cs
- ExtensionQuery.cs
- ObjectNotFoundException.cs
- TraceHandlerErrorFormatter.cs
- MetadataItem.cs
- EmptyControlCollection.cs
- PropertyGrid.cs
- InstancePersistenceEvent.cs
- iisPickupDirectory.cs
- DiffuseMaterial.cs
- GroupDescription.cs
- DecoratedNameAttribute.cs
- SessionMode.cs
- EntityDataSourceDesignerHelper.cs
- ToolStripRenderer.cs
- CacheMemory.cs
- TileModeValidation.cs
- TextDecoration.cs
- RangeValuePattern.cs
- JapaneseLunisolarCalendar.cs
- EffectiveValueEntry.cs
- UrlRoutingModule.cs
- ADMembershipProvider.cs
- ColumnHeader.cs
- OpCopier.cs
- EventLogEntry.cs
- Convert.cs
- Switch.cs
- TextStore.cs
- WebPartRestoreVerb.cs
- FontCacheLogic.cs
- DateTimeOffsetStorage.cs
- DeclaredTypeValidatorAttribute.cs
- ProcessHostConfigUtils.cs
- EnvelopedSignatureTransform.cs
- RelationshipFixer.cs
- XPathNavigatorKeyComparer.cs
- GroupBoxRenderer.cs
- AutoGeneratedField.cs
- FunctionParameter.cs
- SafeCryptHandles.cs
- BaseCollection.cs
- SmtpFailedRecipientsException.cs
- FragmentNavigationEventArgs.cs
- EntryWrittenEventArgs.cs
- BindingExpression.cs
- BindingCompleteEventArgs.cs
- SafeCryptoHandles.cs
- UnsafeNativeMethods.cs
- Int32Rect.cs
- DiscoveryExceptionDictionary.cs
- JsonMessageEncoderFactory.cs
- MatrixConverter.cs
- StubHelpers.cs
- SchemaObjectWriter.cs
- HttpContext.cs
- ControlCachePolicy.cs
- ProtocolViolationException.cs
- CreateUserWizardStep.cs
- LayoutTableCell.cs
- Tablet.cs
- GenericIdentity.cs
- DataErrorValidationRule.cs
- CheckableControlBaseAdapter.cs
- TypeSystem.cs
- DSACryptoServiceProvider.cs