Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / CompileLiteralTextParser.cs / 1305376 / CompileLiteralTextParser.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Specialized; using System.Diagnostics; using System.Web.UI; namespace System.Web.UI.MobileControls { /* * CompileLiteralTextParser class. * * This is a specialized version of the LiteralTextParser class. * It creates a set of control builders from the parsed literal text. * * Copyright (c) 2000 Microsoft Corporation */ [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")] internal class CompileLiteralTextParser : LiteralTextParser { TemplateParser _parser; ControlBuilder _parentBuilder; String _fileName; int _lineNumber; IList _tagInnerTextElements = null; internal CompileLiteralTextParser(TemplateParser parser, ControlBuilder parentBuilder, String fileName, int lineNumber) { _parser = parser; _parentBuilder = parentBuilder; _fileName = fileName; _lineNumber = lineNumber; } protected override void ProcessElement(LiteralElement element) { ControlBuilder subBuilder; switch (element.Type) { case LiteralElementType.Text: Debug.Assert(_tagInnerTextElements == null); subBuilder = ControlBuilder.CreateBuilderFromType( _parser, _parentBuilder, typeof(LiteralText), typeof(LiteralText).Name, null, GetPropertyDictionary(element.Format, element.BreakAfter, null), _lineNumber, _fileName); break; case LiteralElementType.Anchor: { String linkUrl = (String)element.GetAttribute("href"); subBuilder = ControlBuilder.CreateBuilderFromType( _parser, _parentBuilder, typeof(LiteralLink), typeof(LiteralLink).Name, null, GetPropertyDictionary(element.Format, element.BreakAfter, linkUrl), _lineNumber, _fileName); AddTagInnerTextElements(subBuilder); break; } default: return; } _parentBuilder.AppendSubBuilder(subBuilder); if (element.Text == null || element.Text.Length != 0) { subBuilder.AppendLiteralString(element.Text); } } private IList TagInnerTextElements { get { if (_tagInnerTextElements == null) { _tagInnerTextElements = new ArrayList(); } return _tagInnerTextElements; } } private void AddTagInnerTextElements(ControlBuilder builder) { if (_tagInnerTextElements != null) { foreach(Object o in _tagInnerTextElements) { if (o is String) { builder.AppendLiteralString((String)o); } else { builder.AppendSubBuilder((ControlBuilder)o); } } _tagInnerTextElements = null; } } protected override void ProcessTagInnerText(String text) { // Called to add an inner text segment of a multi-segment tag, e.g. // some text <%# a databinding %> some more text TagInnerTextElements.Add(text); } internal /*public*/ void AddDataBinding(ControlBuilder builder) { if (IsInTag) { TagInnerTextElements.Add(builder); } else { ControlBuilder newBuilder = ControlBuilder.CreateBuilderFromType( _parser, _parentBuilder, typeof(LiteralText), typeof(LiteralText).Name, null, GetPropertyDictionary(CurrentFormat, false, null), _lineNumber, _fileName); _parentBuilder.AppendSubBuilder(newBuilder); newBuilder.AppendSubBuilder(builder); OnAfterDataBoundLiteral(); } } // Convert formatting and other options into a set of properties, just as if they had been // specified in persistence format. private ListDictionary GetPropertyDictionary(LiteralFormat format, bool breakAfter, String linkUrl) { ListDictionary dictionary = null; if (format != LiteralFormat.None || !breakAfter || linkUrl != null) { dictionary = new ListDictionary(); if ((format & LiteralFormat.Bold) == LiteralFormat.Bold) { dictionary.Add("Font-Bold", "True"); } if ((format & LiteralFormat.Italic) == LiteralFormat.Italic) { dictionary.Add("Font-Italic", "True"); } if(!breakAfter) { dictionary.Add("BreakAfter", "False"); } if (linkUrl != null) { dictionary.Add("NavigateUrl", linkUrl); } } return dictionary; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DurableInstanceProvider.cs
- UrlRoutingHandler.cs
- WebPartEventArgs.cs
- ScrollItemProviderWrapper.cs
- LineSegment.cs
- CatalogZoneAutoFormat.cs
- InplaceBitmapMetadataWriter.cs
- ContainerCodeDomSerializer.cs
- Util.cs
- BitmapPalettes.cs
- RepeatInfo.cs
- DataGridAutoFormat.cs
- WebPartCloseVerb.cs
- ActivityInstanceReference.cs
- InkCanvasFeedbackAdorner.cs
- FileDocument.cs
- DllNotFoundException.cs
- BindingEntityInfo.cs
- TTSEvent.cs
- CompareInfo.cs
- Keyboard.cs
- OutKeywords.cs
- OdbcInfoMessageEvent.cs
- SqlTrackingQuery.cs
- AdornerPresentationContext.cs
- ValidatingPropertiesEventArgs.cs
- SoapClientMessage.cs
- Object.cs
- DesignSurface.cs
- ComponentCollection.cs
- SemanticResolver.cs
- ParserStreamGeometryContext.cs
- RangeBase.cs
- ProtectedConfigurationSection.cs
- TextureBrush.cs
- View.cs
- WebPartMinimizeVerb.cs
- TracePayload.cs
- LayoutEngine.cs
- DataGridItemEventArgs.cs
- RegisteredHiddenField.cs
- ControlCodeDomSerializer.cs
- ToolStripRendererSwitcher.cs
- DelegateBodyWriter.cs
- DocumentPageHost.cs
- ListenerElementsCollection.cs
- DependencyPropertyKey.cs
- LinqDataSourceDisposeEventArgs.cs
- ManualResetEvent.cs
- XmlDictionaryReaderQuotasElement.cs
- NativeMethods.cs
- TypeHelpers.cs
- IMembershipProvider.cs
- KnownTypesProvider.cs
- ImportFileRequest.cs
- ResourceSetExpression.cs
- TableRowGroup.cs
- ReferencedCollectionType.cs
- GeneralTransformGroup.cs
- ComUdtElementCollection.cs
- ItemsControlAutomationPeer.cs
- BorderSidesEditor.cs
- ReadWriteSpinLock.cs
- Ipv6Element.cs
- Rule.cs
- EventsTab.cs
- HostedAspNetEnvironment.cs
- ZoomPercentageConverter.cs
- DbMetaDataColumnNames.cs
- TextFormatterHost.cs
- ZipArchive.cs
- TypeValidationEventArgs.cs
- BinaryUtilClasses.cs
- MethodRental.cs
- MissingMethodException.cs
- ReadOnlyCollection.cs
- LazyTextWriterCreator.cs
- FlowLayoutPanel.cs
- ActivityExecutorSurrogate.cs
- XhtmlBasicPageAdapter.cs
- PrePrepareMethodAttribute.cs
- TableItemStyle.cs
- UrlPropertyAttribute.cs
- AssemblyAttributesGoHere.cs
- Pair.cs
- PeerApplication.cs
- PixelFormats.cs
- XmlDocumentType.cs
- CodeNamespace.cs
- FigureHelper.cs
- InitializationEventAttribute.cs
- CloudCollection.cs
- EntityKeyElement.cs
- TaskForm.cs
- TreeWalker.cs
- SoapAttributes.cs
- DesignBindingEditor.cs
- CompilationUtil.cs
- SqlDataSourceStatusEventArgs.cs
- UdpChannelFactory.cs