Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / WebParts / EditorZoneDesigner.cs / 1 / EditorZoneDesigner.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 EditorZoneDesigner : ToolZoneDesigner {
private static DesignerAutoFormatCollection _autoFormats;
private EditorZone _zone;
private TemplateGroup _templateGroup;
public override DesignerAutoFormatCollection AutoFormats {
get {
if (_autoFormats == null) {
_autoFormats = CreateAutoFormats(AutoFormatSchemes.EDITORZONE_SCHEMES,
delegate(DataRow schemeData) { return new EditorZoneAutoFormat(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 {
EditorZone zone = (EditorZone)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 (regions != null && 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();
EditorPartEditableDesignerRegion region = new EditorPartEditableDesignerRegion(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();
}
// Don't substitute the placeholder if this is the AutoFormat PreviewControl
if (ViewInBrowseMode && zone.ID != EditorZoneAutoFormat.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.EditorZoneDesigner_Empty));
}
public override void Initialize(IComponent component) {
VerifyInitializeArgument(component, typeof(EditorZone));
base.Initialize(component);
_zone = (EditorZone)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 EditorPartEditableDesignerRegion : TemplatedEditableDesignerRegion {
private EditorZone _zone;
public EditorPartEditableDesignerRegion(EditorZone zone, TemplateDefinition templateDefinition)
: base(templateDefinition) {
_zone = zone;
}
public override ViewRendering GetChildViewRendering(Control control) {
if (control == null) {
throw new ArgumentNullException("control");
}
DesignerEditorPartChrome chrome = new DesignerEditorPartChrome(_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
- PageVisual.cs
- ClientFormsAuthenticationCredentials.cs
- WebEventCodes.cs
- OptimizerPatterns.cs
- ConfigurationManagerHelper.cs
- BulletedListEventArgs.cs
- ProgressBarRenderer.cs
- MaskInputRejectedEventArgs.cs
- DbParameterCollectionHelper.cs
- ListViewContainer.cs
- AsyncCompletedEventArgs.cs
- NotCondition.cs
- FrameworkTemplate.cs
- DocumentViewerBase.cs
- HttpHandlersSection.cs
- TypedElement.cs
- DESCryptoServiceProvider.cs
- TypeSemantics.cs
- ISFClipboardData.cs
- SimpleWorkerRequest.cs
- CultureInfo.cs
- AnimationLayer.cs
- TraceFilter.cs
- BuiltInExpr.cs
- LicenseException.cs
- DataDocumentXPathNavigator.cs
- AppDomainFactory.cs
- HybridWebProxyFinder.cs
- WebAdminConfigurationHelper.cs
- ToolStripDropDown.cs
- InputBindingCollection.cs
- RepeaterItemCollection.cs
- OdbcError.cs
- XamlTreeBuilderBamlRecordWriter.cs
- CompareValidator.cs
- DocumentPageView.cs
- NameValueFileSectionHandler.cs
- CompositeCollectionView.cs
- SignatureGenerator.cs
- ListViewCommandEventArgs.cs
- SQLDecimalStorage.cs
- PropertyReferenceSerializer.cs
- AutomationPropertyInfo.cs
- ContextQuery.cs
- LocalizedNameDescriptionPair.cs
- RecognizerInfo.cs
- PKCS1MaskGenerationMethod.cs
- DesignTimeType.cs
- SiteMapNodeItem.cs
- ValidationPropertyAttribute.cs
- SelectionPattern.cs
- Encoder.cs
- OdbcEnvironment.cs
- ButtonBaseDesigner.cs
- SoapSchemaExporter.cs
- TargetException.cs
- BStrWrapper.cs
- FormsAuthenticationUserCollection.cs
- AnnotationDocumentPaginator.cs
- IHttpResponseInternal.cs
- UseLicense.cs
- MDIClient.cs
- AssemblyHash.cs
- PerformanceCounterPermissionAttribute.cs
- WorkflowPrinting.cs
- HtmlElementErrorEventArgs.cs
- WaitForChangedResult.cs
- SerializationEventsCache.cs
- XmlAttributeProperties.cs
- TiffBitmapEncoder.cs
- CroppedBitmap.cs
- ViewGenerator.cs
- Image.cs
- CardSpaceException.cs
- TypeDescriptorContext.cs
- Verify.cs
- PersonalizationStateInfoCollection.cs
- columnmapfactory.cs
- NativeRecognizer.cs
- XamlPathDataSerializer.cs
- DataSourceProvider.cs
- ObjectCloneHelper.cs
- ListItemParagraph.cs
- SqlExpressionNullability.cs
- DataAdapter.cs
- SourceElementsCollection.cs
- InvokePattern.cs
- StickyNoteAnnotations.cs
- OperationCanceledException.cs
- COM2ExtendedUITypeEditor.cs
- QilTernary.cs
- XPathItem.cs
- TemplateField.cs
- HostingEnvironment.cs
- NavigationService.cs
- RightsManagementInformation.cs
- mediaeventshelper.cs
- OpenFileDialog.cs
- PropertyToken.cs
- XmlSchemaGroup.cs