Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / WebControls / LoginDesignerUtil.cs / 1 / LoginDesignerUtil.cs
using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel.Design; using System.Diagnostics; using System.Drawing; using System.Globalization; using System.IO; using System.Text; using System.Web.UI.WebControls; namespace System.Web.UI.Design.WebControls { internal static class LoginDesignerUtil { internal abstract class GenericConvertToTemplateHelperwhere ControlType: WebControl, IControlDesignerAccessor where ControlDesignerType: ControlDesigner { private const string _failureTextID = "FailureText"; private ControlDesignerType _designer; private IDesignerHost _designerHost; public GenericConvertToTemplateHelper(ControlDesignerType designer, IDesignerHost designerHost) { Debug.Assert(designer.Component is ControlType, "designer.Component does not match ControlType"); _designer = designer; _designerHost = designerHost; } protected ControlDesignerType Designer { get { return _designer; } } private ControlType ViewControl { get { return (ControlType)Designer.ViewControl; } } protected abstract string[] PersistedControlIDs { get; } protected abstract string[] PersistedIfNotVisibleControlIDs { get; } // Returns a table that contains the default template contents. The table should // have CellPadding equal to the BorderPadding property of the Login control. protected abstract Control GetDefaultTemplateContents(); protected abstract Style GetFailureTextStyle(ControlType control); protected abstract ITemplate GetTemplate(ControlType control); // Replace textboxes, validators, checkbox, button, and errorMessage with LiteralControls // that contain the persistence view of that control private void ConvertPersistedControlsToLiteralControls(Control defaultTemplateContents) { foreach (string ID in PersistedControlIDs) { Control control = defaultTemplateContents.FindControl(ID); if (control != null) { if (Array.IndexOf(PersistedIfNotVisibleControlIDs, ID) >= 0) { control.Visible = true; // Set the parent table cell and table row to visible so they will get rendered control.Parent.Visible = true; control.Parent.Parent.Visible = true; } if (control.Visible) { String persisted = ControlPersister.PersistControl(control, _designerHost); LiteralControl literal = new LiteralControl(persisted); ControlCollection controls = control.Parent.Controls; int index = controls.IndexOf(control); controls.Remove(control); controls.AddAt(index, literal); } } } } public ITemplate ConvertToTemplate() { ITemplate template = null; // Skin with template scenario ITemplate viewControlTemplate = GetTemplate((ControlType)ViewControl); if (viewControlTemplate != null) { template = viewControlTemplate; } else { _designer.ViewControlCreated = false; Hashtable convertOn = new Hashtable(1); convertOn.Add("ConvertToTemplate", true); ((IControlDesignerAccessor)ViewControl).SetDesignModeState(convertOn); // Causes the control to set its child properties _designer.GetDesignTimeHtml(); // Get the default template contents from the ViewControl Control defaultTemplateContents = GetDefaultTemplateContents(); SetFailureTextStyle(defaultTemplateContents); ConvertPersistedControlsToLiteralControls(defaultTemplateContents); // Render table to HTML StringWriter stringWriter = new StringWriter(CultureInfo.CurrentCulture); HtmlTextWriter writer = new HtmlTextWriter(stringWriter); defaultTemplateContents.RenderControl(writer); // Create template from HTML template = ControlParser.ParseTemplate(_designerHost, stringWriter.ToString()); Hashtable convertOff = new Hashtable(1); convertOff.Add("ConvertToTemplate", false); ((IControlDesignerAccessor)ViewControl).SetDesignModeState(convertOff); } return template; } // Special case to apply style to failure text table cell, since the failure text is empty at design time private void SetFailureTextStyle(Control defaultTemplateContents) { Control failureText = defaultTemplateContents.FindControl(_failureTextID); if (failureText != null) { TableCell failureTextCell = (TableCell)(failureText.Parent); failureTextCell.ForeColor = Color.Red; failureTextCell.ApplyStyle(GetFailureTextStyle((ControlType)ViewControl)); // Turn off viewstate for the failure text so postbacks don't retain the failure text // VSWhidbey 195651 failureText.EnableViewState = false; } } } } } // 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
- EntityClassGenerator.cs
- Int32Collection.cs
- ToolStripItemTextRenderEventArgs.cs
- CfgParser.cs
- QuaternionValueSerializer.cs
- SelectionListDesigner.cs
- _PooledStream.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- JoinSymbol.cs
- CodeTryCatchFinallyStatement.cs
- SQLMembershipProvider.cs
- CustomBindingCollectionElement.cs
- PublisherMembershipCondition.cs
- Ipv6Element.cs
- NativeMethods.cs
- SafeNativeMemoryHandle.cs
- XPathDocumentBuilder.cs
- WebResponse.cs
- ToolZone.cs
- SafeLocalAllocation.cs
- XPathNodeList.cs
- FieldNameLookup.cs
- DesignerSerializationOptionsAttribute.cs
- EncryptedXml.cs
- XmlReflectionMember.cs
- ExceptionUtil.cs
- LinkButton.cs
- ComponentResourceKeyConverter.cs
- RelatedPropertyManager.cs
- QilSortKey.cs
- SemanticResolver.cs
- DataStorage.cs
- NavigationPropertyAccessor.cs
- MimeMultiPart.cs
- WebPartConnectionsCancelEventArgs.cs
- RootProfilePropertySettingsCollection.cs
- oledbconnectionstring.cs
- TreeNodeBinding.cs
- Variable.cs
- ConfigurationValue.cs
- PathBox.cs
- ScriptDescriptor.cs
- WpfXamlMember.cs
- IfAction.cs
- HandlerFactoryWrapper.cs
- _NetworkingPerfCounters.cs
- FixedDSBuilder.cs
- DataSourceControl.cs
- RIPEMD160Managed.cs
- ValidatorCompatibilityHelper.cs
- Graphics.cs
- ValidationEventArgs.cs
- ObjectHandle.cs
- FeatureManager.cs
- XmlSerializerFactory.cs
- DrawItemEvent.cs
- ClientReliableChannelBinder.cs
- TemplateControlCodeDomTreeGenerator.cs
- AutomationProperties.cs
- CodeBlockBuilder.cs
- CqlLexer.cs
- PageRanges.cs
- TaiwanLunisolarCalendar.cs
- CfgSemanticTag.cs
- CompositeFontParser.cs
- SearchForVirtualItemEventArgs.cs
- MoveSizeWinEventHandler.cs
- ExceptionHandlers.cs
- FixedSOMLineRanges.cs
- XmlKeywords.cs
- FormViewDeleteEventArgs.cs
- DetailsViewPageEventArgs.cs
- OptimalBreakSession.cs
- Stack.cs
- PrintDocument.cs
- FormsAuthenticationTicket.cs
- Types.cs
- ChineseLunisolarCalendar.cs
- CssStyleCollection.cs
- ProfileService.cs
- DataServiceConfiguration.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- FixedSOMFixedBlock.cs
- SimpleHandlerBuildProvider.cs
- DataGridCellClipboardEventArgs.cs
- SqlTriggerContext.cs
- PrintingPermissionAttribute.cs
- TCEAdapterGenerator.cs
- AdapterUtil.cs
- DesignerVerbCollection.cs
- TrackBar.cs
- InputLangChangeRequestEvent.cs
- EntityAdapter.cs
- ContentValidator.cs
- DecoderFallbackWithFailureFlag.cs
- TreeIterators.cs
- UnaryExpressionHelper.cs
- XMLSyntaxException.cs
- TCEAdapterGenerator.cs
- ToolStripSystemRenderer.cs