Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / WebParts / CatalogZoneDesigner.cs / 1 / CatalogZoneDesigner.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.Design.WebControls.WebParts {
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Data;
using System.Design;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Web.UI.Design;
using System.Web.UI.Design.WebControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
///
///
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]
public class CatalogZoneDesigner : ToolZoneDesigner {
private static DesignerAutoFormatCollection _autoFormats;
private CatalogZone _zone;
private TemplateGroup _templateGroup;
public override DesignerAutoFormatCollection AutoFormats {
get {
if (_autoFormats == null) {
_autoFormats = CreateAutoFormats(AutoFormatSchemes.CATALOGZONE_SCHEMES,
delegate(DataRow schemeData) { return new CatalogZoneAutoFormat(schemeData); });
}
return _autoFormats;
}
}
public override TemplateGroupCollection TemplateGroups {
get {
TemplateGroupCollection groups = base.TemplateGroups;
if (_templateGroup == null) {
_templateGroup = CreateZoneTemplateGroup();
}
groups.Add(_templateGroup);
return groups;
}
}
public override string GetDesignTimeHtml() {
return GetDesignTimeHtml(null);
}
///
///
/// Provides the layout html for the control in the designer, including regions.
///
public override string GetDesignTimeHtml(DesignerRegionCollection regions) {
string designTimeHtml;
try {
CatalogZone zone = (CatalogZone)ViewControl;
bool useRegions = UseRegions(regions, _zone.ZoneTemplate, zone.ZoneTemplate);
// When there is an editable region, we want to use the regular control
// rendering instead of the EmptyDesignTimeHtml
if (zone.ZoneTemplate == null && !useRegions) {
designTimeHtml = GetEmptyDesignTimeHtml();
}
else {
((ICompositeControlDesignerAccessor)zone).RecreateChildControls();
if (useRegions) {
// If the tools supports editable regions, the initial rendering of the
// WebParts in the Zone is thrown away by the tool anyway, so we should clear
// the controls collection before rendering. If we don't clear the controls
// collection and a WebPart inside the Zone throws an exception when rendering,
// this would cause the whole Zone to render as an error, instead of just
// the offending WebPart. This also improves perf.
zone.Controls.Clear();
CatalogPartEditableDesignerRegion region = new CatalogPartEditableDesignerRegion(zone, TemplateDefinition);
// Tells Venus that all controls inside the EditableRegion should be parented to the zone
region.Properties[typeof(Control)] = zone;
region.IsSingleInstanceTemplate = true;
region.Description = SR.GetString(SR.ContainerControlDesigner_RegionWatermark);
regions.Add(region);
}
designTimeHtml = base.GetDesignTimeHtml();
}
if (ViewInBrowseMode && zone.ID != CatalogZoneAutoFormat.PreviewControlID) {
designTimeHtml = CreatePlaceHolderDesignTimeHtml();
}
} catch (Exception e) {
designTimeHtml = GetErrorDesignTimeHtml(e);
}
return designTimeHtml;
}
///
///
/// Get the content for the specified region
///
public override string GetEditableDesignerRegionContent(EditableDesignerRegion region) {
Debug.Assert(region != null);
// Occasionally getting NullRef here in WebMatrix. Maybe Zone is null?
Debug.Assert(_zone != null);
return ControlPersister.PersistTemplate(_zone.ZoneTemplate, (IDesignerHost)Component.Site.GetService(typeof(IDesignerHost)));
}
protected override string GetEmptyDesignTimeHtml() {
return CreatePlaceHolderDesignTimeHtml(SR.GetString(SR.CatalogZoneDesigner_Empty));
}
public override void Initialize(IComponent component) {
VerifyInitializeArgument(component, typeof(CatalogZone));
base.Initialize(component);
_zone = (CatalogZone)component;
}
///
///
/// Set the content for the specified region
///
public override void SetEditableDesignerRegionContent(EditableDesignerRegion region, string content) {
Debug.Assert(region != null);
_zone.ZoneTemplate = ControlParser.ParseTemplate((IDesignerHost)Component.Site.GetService(typeof(IDesignerHost)), content);
IsDirtyInternal = true;
}
private sealed class CatalogPartEditableDesignerRegion : TemplatedEditableDesignerRegion {
private CatalogZone _zone;
public CatalogPartEditableDesignerRegion(CatalogZone zone, TemplateDefinition templateDefinition)
: base(templateDefinition) {
_zone = zone;
}
public override ViewRendering GetChildViewRendering(Control control) {
if (control == null) {
throw new ArgumentNullException("control");
}
DesignerCatalogPartChrome chrome = new DesignerCatalogPartChrome(_zone);
return chrome.GetViewRendering(control);
}
}
}
}
// 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
- XmlName.cs
- SafeCertificateContext.cs
- Metafile.cs
- EventHandlersStore.cs
- Blend.cs
- Parameter.cs
- DbConnectionHelper.cs
- SecureStringHasher.cs
- ConfigurationPropertyCollection.cs
- _TimerThread.cs
- WinFormsSecurity.cs
- Thread.cs
- AggregateException.cs
- RegexFCD.cs
- RootAction.cs
- VersionPair.cs
- unsafenativemethodsother.cs
- SBCSCodePageEncoding.cs
- xmlsaver.cs
- ToolStripArrowRenderEventArgs.cs
- DataAdapter.cs
- QilInvoke.cs
- PasswordBox.cs
- PathData.cs
- DBDataPermissionAttribute.cs
- PropVariant.cs
- NameValueConfigurationCollection.cs
- SByteConverter.cs
- UIElementParagraph.cs
- FrameworkElementAutomationPeer.cs
- RegexCompilationInfo.cs
- Descriptor.cs
- MediaElementAutomationPeer.cs
- ParameterBuilder.cs
- ButtonPopupAdapter.cs
- PeerNameRecordCollection.cs
- OutputCacheSection.cs
- DataContractSerializerSection.cs
- MdImport.cs
- SkipStoryboardToFill.cs
- SRGSCompiler.cs
- WpfSharedBamlSchemaContext.cs
- ExponentialEase.cs
- ObjectViewQueryResultData.cs
- CutCopyPasteHelper.cs
- PeerNearMe.cs
- SchemaCollectionCompiler.cs
- StrokeFIndices.cs
- DefaultTraceListener.cs
- Win32.cs
- ZoneMembershipCondition.cs
- HwndHost.cs
- DigitShape.cs
- FixedTextContainer.cs
- ToolStripItemEventArgs.cs
- LoginCancelEventArgs.cs
- UpdateRecord.cs
- FrameworkElement.cs
- ButtonRenderer.cs
- SqlCacheDependencyDatabaseCollection.cs
- ListBoxItemAutomationPeer.cs
- RtType.cs
- HelpInfo.cs
- ParseHttpDate.cs
- CompositeFontInfo.cs
- TypeConverterHelper.cs
- UIElementHelper.cs
- BookmarkScopeInfo.cs
- X509Utils.cs
- AvTraceDetails.cs
- BinaryObjectWriter.cs
- AspProxy.cs
- InputReferenceExpression.cs
- XmlSchemaSimpleContentExtension.cs
- XmlSecureResolver.cs
- UnicodeEncoding.cs
- NotFiniteNumberException.cs
- Quaternion.cs
- IndexedGlyphRun.cs
- SettingsSavedEventArgs.cs
- PropertyChangedEventArgs.cs
- Point3DCollectionValueSerializer.cs
- SoapBinding.cs
- XmlLoader.cs
- WebMethodAttribute.cs
- CannotUnloadAppDomainException.cs
- Hashtable.cs
- Matrix3DValueSerializer.cs
- _ProxyChain.cs
- NavigateEvent.cs
- TreeNodeEventArgs.cs
- ValueProviderWrapper.cs
- HttpContextServiceHost.cs
- XamlBrushSerializer.cs
- XmlComplianceUtil.cs
- OperatingSystem.cs
- CodeArrayIndexerExpression.cs
- AuditLogLocation.cs
- StylusButtonEventArgs.cs
- TypeReference.cs