Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / UI / ChtmlTextWriter.cs / 1 / ChtmlTextWriter.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
// ChtmlTextWriter.cs
//
namespace System.Web.UI {
using System;
using System.Collections;
using System.Collections.Specialized;
using System.IO;
using System.Text;
using System.Web.UI.WebControls;
using System.Web.Util;
using System.Globalization;
using System.Security.Permissions;
///
/// [To be supplied.]
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class ChtmlTextWriter : Html32TextWriter {
private Hashtable _recognizedAttributes = new Hashtable(StringComparer.CurrentCultureIgnoreCase);
private Hashtable _suppressedAttributes = new Hashtable(StringComparer.CurrentCultureIgnoreCase);
private Hashtable _globalSuppressedAttributes = new Hashtable(StringComparer.CurrentCultureIgnoreCase);
public ChtmlTextWriter(TextWriter writer) : this(writer, DefaultTabString) {
}
public ChtmlTextWriter(TextWriter writer, string tabString) : base(writer, tabString) {
_globalSuppressedAttributes["onclick"] = true;
_globalSuppressedAttributes["ondblclick"] = true;
_globalSuppressedAttributes["onmousedown"] = true;
_globalSuppressedAttributes["onmouseup"] = true;
_globalSuppressedAttributes["onmouseover"] = true;
_globalSuppressedAttributes["onmousemove"] = true;
_globalSuppressedAttributes["onmouseout"] = true;
_globalSuppressedAttributes["onkeypress"] = true;
_globalSuppressedAttributes["onkeydown"] = true;
_globalSuppressedAttributes["onkeyup"] = true;
// Supress certain element attribute pairs that can happen when Html32TextWriter performs the div table
// substitution.
RemoveRecognizedAttributeInternal("div", "accesskey"); // VSWhidbey 270254
RemoveRecognizedAttributeInternal("div", "cellspacing");
RemoveRecognizedAttributeInternal("div", "cellpadding");
RemoveRecognizedAttributeInternal("div", "gridlines");
RemoveRecognizedAttributeInternal("div", "rules");
RemoveRecognizedAttributeInternal("span", "cellspacing");
RemoveRecognizedAttributeInternal("span", "cellpadding");
RemoveRecognizedAttributeInternal("span", "gridlines");
RemoveRecognizedAttributeInternal("span", "rules");
}
///
/// [To be supplied.]
///
public virtual void AddRecognizedAttribute(string elementName, string attributeName) {
Hashtable eltAttributes = (Hashtable) _recognizedAttributes[elementName];
if (eltAttributes == null) {
eltAttributes = new Hashtable(StringComparer.CurrentCultureIgnoreCase);
_recognizedAttributes[elementName] = eltAttributes;
}
eltAttributes.Add(attributeName, true);
}
///
/// Override to filter out unnecessary attributes
///
protected override bool OnAttributeRender(string name, string value, HtmlTextWriterAttribute key) {
Hashtable elementRecognizedAttributes = (Hashtable)_recognizedAttributes[TagName];
if (elementRecognizedAttributes != null && elementRecognizedAttributes[name] != null) {
return true;
}
if (_globalSuppressedAttributes[name] != null) {
return false;
}
Hashtable elementSuppressedAttributes = (Hashtable)_suppressedAttributes[TagName];
if (elementSuppressedAttributes != null && elementSuppressedAttributes[name] != null) {
return false;
}
return true;
}
protected override bool OnStyleAttributeRender(string name,string value, HtmlTextWriterStyle key) {
if (key == HtmlTextWriterStyle.TextDecoration) {
if (StringUtil.EqualsIgnoreCase("line-through", value)) {
return false;
}
}
return base.OnStyleAttributeRender(name, value, key);
}
protected override bool OnTagRender(string name, HtmlTextWriterTag key) {
return base.OnTagRender(name, key) && key != HtmlTextWriterTag.Span;
}
///
/// [To be supplied.]
///
public virtual void RemoveRecognizedAttribute(string elementName, string attributeName) {
RemoveRecognizedAttributeInternal(elementName, attributeName);
}
private void RemoveRecognizedAttributeInternal(string elementName, string attributeName) {
// Since recognized attributes have precedence, we need to do two operations: add this attribute
// to the suppressed list, and remove it from the recognized list.
Hashtable eltAttributes = (Hashtable) _suppressedAttributes[elementName];
if (eltAttributes == null) {
eltAttributes = new Hashtable(StringComparer.CurrentCultureIgnoreCase);
_suppressedAttributes[elementName] = eltAttributes;
}
eltAttributes.Add(attributeName, true);
eltAttributes = (Hashtable)_recognizedAttributes[elementName];
if (eltAttributes == null) {
eltAttributes = new Hashtable(StringComparer.CurrentCultureIgnoreCase);
_recognizedAttributes[elementName] = eltAttributes;
}
// Note: Hashtable::Remove silently continues if the key does not exist.
eltAttributes.Remove(attributeName);
}
public override void WriteBreak() {
Write("
");
}
public override void WriteEncodedText(String text) {
if (null == text || text.Length == 0) {
return;
}
int length = text.Length;
int start = -1;
for(int pos = 0; pos < length; pos++) {
int ch = text[pos];
if(ch > 160 && ch < 256) {
if(start != -1) {
base.WriteEncodedText(text.Substring(start, pos - start));
start = -1;
}
base.Write(text[pos]);
}
else {
if(start == -1) {
start = pos;
}
}
}
if(start != -1) {
if(start == 0) {
base.WriteEncodedText(text);
}
else {
base.WriteEncodedText(text.Substring(start, length - start));
}
}
}
protected Hashtable RecognizedAttributes {
get {
return _recognizedAttributes;
}
}
protected Hashtable SuppressedAttributes {
get {
return _suppressedAttributes;
}
}
protected Hashtable GlobalSuppressedAttributes {
get {
return _globalSuppressedAttributes;
}
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NullableLongMinMaxAggregationOperator.cs
- ColumnMapTranslator.cs
- SapiRecognizer.cs
- TypefaceMetricsCache.cs
- NodeFunctions.cs
- DriveNotFoundException.cs
- Utility.cs
- SspiSecurityTokenProvider.cs
- MemoryStream.cs
- SelectionBorderGlyph.cs
- WinInetCache.cs
- ExpressionEvaluator.cs
- ScriptingProfileServiceSection.cs
- DataSetViewSchema.cs
- ServiceObjectContainer.cs
- ACE.cs
- MediaContextNotificationWindow.cs
- FlatButtonAppearance.cs
- SafeNativeMethods.cs
- ContractInferenceHelper.cs
- DiagnosticTraceSource.cs
- SqlAliaser.cs
- TextServicesDisplayAttributePropertyRanges.cs
- TextBoxAutoCompleteSourceConverter.cs
- BinaryParser.cs
- DataTrigger.cs
- DrawingImage.cs
- XmlToDatasetMap.cs
- BaseTemplateParser.cs
- ConstraintCollection.cs
- MemberExpressionHelper.cs
- OleDbConnectionInternal.cs
- Decimal.cs
- Globals.cs
- NativeMethods.cs
- SecurityUtils.cs
- WindowsHyperlink.cs
- Brush.cs
- keycontainerpermission.cs
- UIHelper.cs
- IItemProperties.cs
- JsonReaderDelegator.cs
- IOThreadScheduler.cs
- securitycriticaldataformultiplegetandset.cs
- ConnectionsZone.cs
- XsdSchemaFileEditor.cs
- ChildTable.cs
- PolyQuadraticBezierSegment.cs
- VariantWrapper.cs
- TextEditor.cs
- Int32Rect.cs
- RegisterResponseInfo.cs
- CreateDataSourceDialog.cs
- NeutralResourcesLanguageAttribute.cs
- ThicknessAnimationBase.cs
- ImportCatalogPart.cs
- ParentQuery.cs
- XmlDataProvider.cs
- SqlReorderer.cs
- Version.cs
- DataServiceOperationContext.cs
- HttpModuleActionCollection.cs
- TypeCodeDomSerializer.cs
- DocumentXPathNavigator.cs
- PositiveTimeSpanValidatorAttribute.cs
- DbConnectionStringCommon.cs
- StringConverter.cs
- ControlBindingsConverter.cs
- Page.cs
- DummyDataSource.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- UnSafeCharBuffer.cs
- ISFClipboardData.cs
- FormattedTextSymbols.cs
- ActivityExecutorOperation.cs
- XmlDictionary.cs
- OnOperation.cs
- GridViewDeleteEventArgs.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- ProxyHelper.cs
- XamlStackWriter.cs
- RuntimeEnvironment.cs
- MessageHeaderDescriptionCollection.cs
- UIntPtr.cs
- AccessorTable.cs
- RoutedEventHandlerInfo.cs
- StrokeCollection2.cs
- SubMenuStyle.cs
- InvalidFilterCriteriaException.cs
- StreamWriter.cs
- MeasurementDCInfo.cs
- ActionMismatchAddressingException.cs
- MainMenu.cs
- ConnectionConsumerAttribute.cs
- XmlSchemaDatatype.cs
- RegexBoyerMoore.cs
- ConnectionPoolManager.cs
- WebPartConnectVerb.cs
- HScrollProperties.cs
- JoinCqlBlock.cs