Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / WebControls / SiteMapPathDesigner.cs / 1 / SiteMapPathDesigner.cs
//------------------------------------------------------------------------------ ////// Copyright (c) Microsoft Corporation. All Rights Reserved. /// Information Contained Herein is Proprietary and Confidential. /// //----------------------------------------------------------------------------- namespace System.Web.UI.Design.WebControls { using System; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.Data; using System.Design; using System.Diagnostics; using System.Drawing; using System.Globalization; using System.IO; using System.Text; using System.Web; using System.Web.UI.Design; using System.Web.UI.WebControls; ////// /// [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)] public class SiteMapPathDesigner : ControlDesigner { private SiteMapPath _navigationPath; private SiteMapProvider _siteMapProvider; private DesignerAutoFormatCollection _autoFormats; private static string[] _controlTemplateNames; private static Style[] _templateStyleArray; static SiteMapPathDesigner() { _controlTemplateNames = new string[] { "NodeTemplate", "CurrentNodeTemplate", "RootNodeTemplate", "PathSeparatorTemplate" }; } ////// Provides design-time support for the /// ///web control. /// public SiteMapPathDesigner() { } public override DesignerAutoFormatCollection AutoFormats { get { if (_autoFormats == null) { _autoFormats = CreateAutoFormats(AutoFormatSchemes.SITEMAPPATH_SCHEMES, delegate(DataRow schemeData) { return new SiteMapPathAutoFormat(schemeData); }); } return _autoFormats; } } private SiteMapProvider DesignTimeSiteMapProvider { get { if (_siteMapProvider == null) { IDesignerHost host = (IDesignerHost)GetService(typeof(IDesignerHost)); _siteMapProvider = new DesignTimeSiteMapProvider(host); } return _siteMapProvider; } } public override TemplateGroupCollection TemplateGroups { get { TemplateGroupCollection groups = base.TemplateGroups; // don't cache the template groups because the styles might have changed. for (int i=0; i < _controlTemplateNames.Length; i++) { string templateName = _controlTemplateNames[i]; TemplateGroup templateGroup = new TemplateGroup(templateName); templateGroup.AddTemplateDefinition(new TemplateDefinition(this, templateName, Component, templateName, TemplateStyleArray[i])); groups.Add(templateGroup); } return groups; } } private Style[] TemplateStyleArray { get { if (_templateStyleArray == null) { Debug.Assert(_navigationPath != null, "Designer not yet initialized."); _templateStyleArray = new Style[] { ((SiteMapPath)ViewControl).NodeStyle, ((SiteMapPath)ViewControl).CurrentNodeStyle, ((SiteMapPath)ViewControl).RootNodeStyle, ((SiteMapPath)ViewControl).PathSeparatorStyle, }; } return _templateStyleArray; } } protected override bool UsePreviewControl { get { return true; } } public override string GetDesignTimeHtml() { string designTimeHtml = null; SiteMapPath renderControl = (SiteMapPath)ViewControl; try { // We need to set this on both the component and renderControl since // it uses the provider when saving the content renderControl.Provider = DesignTimeSiteMapProvider; // Make sure the child controls are recreated ICompositeControlDesignerAccessor designerAccessor = (ICompositeControlDesignerAccessor)renderControl; designerAccessor.RecreateChildControls(); designTimeHtml = base.GetDesignTimeHtml(); } catch (Exception e) { designTimeHtml = GetErrorDesignTimeHtml(e); } return designTimeHtml; } /// protected override string GetErrorDesignTimeHtml(Exception e) { return CreatePlaceHolderDesignTimeHtml(SR.GetString(SR.Control_ErrorRendering) + e.Message); } /// public override void Initialize(IComponent component) { VerifyInitializeArgument(component, typeof(SiteMapPath)); base.Initialize(component); _navigationPath = (SiteMapPath)component; if (View != null) { View.SetFlags(ViewFlags.TemplateEditing, true); } } } internal sealed class SiteMapPathAutoFormat : DesignerAutoFormat { private string _fontName; private FontUnit _fontSize; private string _pathSeparator; private bool _nodeStyleFontBold; private Color _nodeStyleForeColor; private bool _rootNodeStyleFontBold; private Color _rootNodeStyleForeColor; private Color _currentNodeStyleForeColor; private bool _pathSeparatorStyleFontBold; private Color _pathSeparatorStyleForeColor; public SiteMapPathAutoFormat(DataRow schemeData) : base(SR.GetString(schemeData["SchemeName"].ToString())) { Load(schemeData); Style.Width = 400; Style.Height = 100; } public override void Apply(Control control) { Debug.Assert(control is SiteMapPath, "SiteMapPathAutoFormat:ApplyScheme- control is not SiteMapPath"); if (control is SiteMapPath) { Apply(control as SiteMapPath); } } private void Apply(SiteMapPath siteMapPath) { siteMapPath.Font.Name = _fontName; siteMapPath.Font.Size = _fontSize; siteMapPath.Font.ClearDefaults(); siteMapPath.NodeStyle.Font.Bold = _nodeStyleFontBold; siteMapPath.NodeStyle.ForeColor = _nodeStyleForeColor; siteMapPath.NodeStyle.Font.ClearDefaults(); siteMapPath.RootNodeStyle.Font.Bold = _rootNodeStyleFontBold; siteMapPath.RootNodeStyle.ForeColor = _rootNodeStyleForeColor; siteMapPath.RootNodeStyle.Font.ClearDefaults(); siteMapPath.CurrentNodeStyle.ForeColor = _currentNodeStyleForeColor; siteMapPath.PathSeparatorStyle.Font.Bold = _pathSeparatorStyleFontBold; siteMapPath.PathSeparatorStyle.ForeColor = _pathSeparatorStyleForeColor; siteMapPath.PathSeparatorStyle.Font.ClearDefaults(); // VSWhidbey 321248. Reset the pathseparator if it's empty string. if (_pathSeparator != null && _pathSeparator.Length == 0) { _pathSeparator = null; } siteMapPath.PathSeparator = _pathSeparator; } private bool GetBoolProperty(string propertyTag, DataRow schemeData) { object data = schemeData[propertyTag]; if ((data != null) && !data.Equals(DBNull.Value)) return bool.Parse(data.ToString()); else return false; } private string GetStringProperty(string propertyTag, DataRow schemeData) { object data = schemeData[propertyTag]; if ((data != null) && !data.Equals(DBNull.Value)) return data.ToString(); else return String.Empty; } private void Load(DataRow schemeData) { if (schemeData == null) { Debug.Write("SiteMapPathAutoFormatUtil:LoadScheme- scheme not found"); return; } _fontName = GetStringProperty("FontName", schemeData); _fontSize = new FontUnit(GetStringProperty("FontSize", schemeData), CultureInfo.InvariantCulture); _pathSeparator = GetStringProperty("PathSeparator", schemeData); _nodeStyleFontBold = GetBoolProperty("NodeStyleFontBold", schemeData); _nodeStyleForeColor = ColorTranslator.FromHtml(GetStringProperty("NodeStyleForeColor", schemeData)); _rootNodeStyleFontBold = GetBoolProperty("RootNodeStyleFontBold", schemeData); _rootNodeStyleForeColor = ColorTranslator.FromHtml(GetStringProperty("RootNodeStyleForeColor", schemeData)); _currentNodeStyleForeColor = ColorTranslator.FromHtml(GetStringProperty("CurrentNodeStyleForeColor", schemeData)); _pathSeparatorStyleFontBold = GetBoolProperty("PathSeparatorStyleFontBold", schemeData); _pathSeparatorStyleForeColor = ColorTranslator.FromHtml(GetStringProperty("PathSeparatorStyleForeColor", schemeData)); } } } // 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
- XslVisitor.cs
- QueryComponents.cs
- DbReferenceCollection.cs
- XmlReflectionMember.cs
- DbCommandDefinition.cs
- NotCondition.cs
- SpanIndex.cs
- XmlSignificantWhitespace.cs
- TailPinnedEventArgs.cs
- InlineCollection.cs
- CustomErrorsSectionWrapper.cs
- PopOutPanel.cs
- SqlUDTStorage.cs
- AncillaryOps.cs
- VsPropertyGrid.cs
- AggregateException.cs
- BitmapEffectCollection.cs
- SubpageParagraph.cs
- StopRoutingHandler.cs
- SiteMapPath.cs
- EngineSite.cs
- UserControlCodeDomTreeGenerator.cs
- TextEncodedRawTextWriter.cs
- LongPath.cs
- Ipv6Element.cs
- UserPersonalizationStateInfo.cs
- PlainXmlWriter.cs
- ListSortDescription.cs
- PromptEventArgs.cs
- Label.cs
- DSASignatureDeformatter.cs
- ReceiveErrorHandling.cs
- ContainerParagraph.cs
- TableAutomationPeer.cs
- HexParser.cs
- WarningException.cs
- cookiecollection.cs
- ResourceContainerWrapper.cs
- KeysConverter.cs
- SoapProtocolImporter.cs
- ConfigUtil.cs
- InputMethodStateTypeInfo.cs
- WindowsListViewItemStartMenu.cs
- DeclarationUpdate.cs
- WorkerRequest.cs
- WSHttpSecurity.cs
- DefaultHttpHandler.cs
- ScrollChrome.cs
- PropertyPathWorker.cs
- ErrorHandler.cs
- ArraySet.cs
- EntityDataSourceQueryBuilder.cs
- PriorityItem.cs
- IfAction.cs
- TemplateAction.cs
- Int16AnimationBase.cs
- TemplateApplicationHelper.cs
- CommandBinding.cs
- Vector3DAnimationBase.cs
- CryptoHelper.cs
- TypeConverterHelper.cs
- AxisAngleRotation3D.cs
- SafeLibraryHandle.cs
- DataGridrowEditEndingEventArgs.cs
- DesignerAttribute.cs
- ImageClickEventArgs.cs
- MSAAWinEventWrap.cs
- ImportDesigner.xaml.cs
- PropertyChangeTracker.cs
- Environment.cs
- KeyProperty.cs
- ButtonChrome.cs
- FixedSOMTableCell.cs
- URL.cs
- ServiceModelActivationSectionGroup.cs
- MetadataArtifactLoaderFile.cs
- StylusTouchDevice.cs
- OpenTypeLayoutCache.cs
- SoapProcessingBehavior.cs
- TextPatternIdentifiers.cs
- FacetChecker.cs
- DataGridItem.cs
- ModelTypeConverter.cs
- FormViewInsertedEventArgs.cs
- ImageConverter.cs
- DataGridLinkButton.cs
- TriggerBase.cs
- EventHandlersDesigner.cs
- DateTimeFormatInfoScanner.cs
- SendOperation.cs
- LineServices.cs
- Panel.cs
- ReadOnlyHierarchicalDataSource.cs
- DataGridTextBox.cs
- GridViewAutomationPeer.cs
- MimeTypeMapper.cs
- SelectionRangeConverter.cs
- EntityClientCacheEntry.cs
- Psha1DerivedKeyGenerator.cs
- DataMemberAttribute.cs