Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / WebControls / WebColorConverter.cs / 2 / WebColorConverter.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Text;
using System.Web.Util;
using System.Web.UI;
using System.Globalization;
using System.Security.Permissions;
///
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class WebColorConverter : ColorConverter {
private static Hashtable htmlSysColorTable;
///
///
///
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) {
if (value is string) {
string colorText = ((string)value).Trim();
Color c = Color.Empty;
// empty color
if (String.IsNullOrEmpty(colorText))
return c;
// #RRGGBB notation is handled by ColorConverter
if (colorText[0] == '#') {
return base.ConvertFrom(context, culture, value);
}
// special case. HTML requires LightGrey, but System.Drawing.KnownColor has LightGray
if (StringUtil.EqualsIgnoreCase(colorText, "LightGrey")) {
return Color.LightGray;
}
// System color
if (htmlSysColorTable == null) {
InitializeHTMLSysColorTable();
}
object o = htmlSysColorTable[colorText];
if (o != null) {
return (Color)o;
}
}
// ColorConverter handles all named and KnownColors
return base.ConvertFrom(context, culture, value);
}
///
///
///
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) {
if (destinationType == null) {
throw new ArgumentNullException("destinationType");
}
if (destinationType == typeof(string)) {
if (value != null) {
Color c = (Color)value;
if (c == Color.Empty) {
return String.Empty;
}
/*
if (c.IsKnownColor) {
// Handle Web system colors and any 'special' named colors
string colorString = null;
switch (c.ToKnownColor()) {
case KnownColor.ActiveBorder: colorString = "ActiveBorder"; break;
case KnownColor.ActiveCaption: colorString = "ActiveCaption"; break;
case KnownColor.AppWorkspace: colorString = "AppWorkspace"; break;
case KnownColor.Desktop: colorString = "Background"; break;
case KnownColor.Control: colorString = "ButtonFace"; break;
case KnownColor.ControlLight: colorString = "ButtonHighlight"; break;
case KnownColor.ControlDark: colorString = "ButtonShadow"; break;
case KnownColor.ControlText: colorString = "ButtonText"; break;
case KnownColor.ActiveCaptionText: colorString = "CaptionText"; break;
case KnownColor.GrayText: colorString = "GrayText"; break;
case KnownColor.HotTrack:
case KnownColor.Highlight: colorString = "Highlight"; break;
case KnownColor.HighlightText: colorString = "HighlightText"; break;
case KnownColor.InactiveBorder: colorString = "InactiveBorder"; break;
case KnownColor.InactiveCaption: colorString = "InactiveCaption"; break;
case KnownColor.InactiveCaptionText: colorString = "InactiveCaptionText"; break;
case KnownColor.Info: colorString = "InfoBackground"; break;
case KnownColor.InfoText: colorString = "InfoText"; break;
case KnownColor.Menu: colorString = "Menu"; break;
case KnownColor.MenuText: colorString = "MenuText"; break;
case KnownColor.ScrollBar: colorString = "Scrollbar"; break;
case KnownColor.ControlDarkDark: colorString = "ThreeDDarkShadow"; break;
case KnownColor.ControlLightLight: colorString = "ButtonHighlight"; break;
case KnownColor.Window: colorString = "Window"; break;
case KnownColor.WindowFrame: colorString = "WindowFrame"; break;
case KnownColor.WindowText: colorString = "WindowText"; break;
case KnownColor.LightGray: colorString = "LightGrey"; break;
}
if (colorString != null) {
return colorString;
}
}
*/
if (c.IsKnownColor == false) {
// in the Web scenario, colors should be formatted in #RRGGBB notation
StringBuilder sb = new StringBuilder("#", 7);
sb.Append((c.R).ToString("X2", CultureInfo.InvariantCulture));
sb.Append((c.G).ToString("X2", CultureInfo.InvariantCulture));
sb.Append((c.B).ToString("X2", CultureInfo.InvariantCulture));
return sb.ToString();
}
}
}
return base.ConvertTo(context, culture, value, destinationType);
}
private static void InitializeHTMLSysColorTable() {
Hashtable t = new Hashtable(StringComparer.OrdinalIgnoreCase);
t["activeborder"] = Color.FromKnownColor(KnownColor.ActiveBorder);
t["activecaption"] = Color.FromKnownColor(KnownColor.ActiveCaption);
t["appworkspace"] = Color.FromKnownColor(KnownColor.AppWorkspace);
t["background"] = Color.FromKnownColor(KnownColor.Desktop);
t["buttonface"] = Color.FromKnownColor(KnownColor.Control);
t["buttonhighlight"] = Color.FromKnownColor(KnownColor.ControlLightLight);
t["buttonshadow"] = Color.FromKnownColor(KnownColor.ControlDark);
t["buttontext"] = Color.FromKnownColor(KnownColor.ControlText);
t["captiontext"] = Color.FromKnownColor(KnownColor.ActiveCaptionText);
t["graytext"] = Color.FromKnownColor(KnownColor.GrayText);
t["highlight"] = Color.FromKnownColor(KnownColor.Highlight);
t["highlighttext"] = Color.FromKnownColor(KnownColor.HighlightText);
t["inactiveborder"] = Color.FromKnownColor(KnownColor.InactiveBorder);
t["inactivecaption"] = Color.FromKnownColor(KnownColor.InactiveCaption);
t["inactivecaptiontext"] = Color.FromKnownColor(KnownColor.InactiveCaptionText);
t["infobackground"] = Color.FromKnownColor(KnownColor.Info);
t["infotext"] = Color.FromKnownColor(KnownColor.InfoText);
t["menu"] = Color.FromKnownColor(KnownColor.Menu);
t["menutext"] = Color.FromKnownColor(KnownColor.MenuText);
t["scrollbar"] = Color.FromKnownColor(KnownColor.ScrollBar);
t["threeddarkshadow"] = Color.FromKnownColor(KnownColor.ControlDarkDark);
t["threedface"] = Color.FromKnownColor(KnownColor.Control);
t["threedhighlight"] = Color.FromKnownColor(KnownColor.ControlLight);
t["threedlightshadow"] = Color.FromKnownColor(KnownColor.ControlLightLight);
t["window"] = Color.FromKnownColor(KnownColor.Window);
t["windowframe"] = Color.FromKnownColor(KnownColor.WindowFrame);
t["windowtext"] = Color.FromKnownColor(KnownColor.WindowText);
htmlSysColorTable = t;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Text;
using System.Web.Util;
using System.Web.UI;
using System.Globalization;
using System.Security.Permissions;
///
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class WebColorConverter : ColorConverter {
private static Hashtable htmlSysColorTable;
///
///
///
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) {
if (value is string) {
string colorText = ((string)value).Trim();
Color c = Color.Empty;
// empty color
if (String.IsNullOrEmpty(colorText))
return c;
// #RRGGBB notation is handled by ColorConverter
if (colorText[0] == '#') {
return base.ConvertFrom(context, culture, value);
}
// special case. HTML requires LightGrey, but System.Drawing.KnownColor has LightGray
if (StringUtil.EqualsIgnoreCase(colorText, "LightGrey")) {
return Color.LightGray;
}
// System color
if (htmlSysColorTable == null) {
InitializeHTMLSysColorTable();
}
object o = htmlSysColorTable[colorText];
if (o != null) {
return (Color)o;
}
}
// ColorConverter handles all named and KnownColors
return base.ConvertFrom(context, culture, value);
}
///
///
///
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) {
if (destinationType == null) {
throw new ArgumentNullException("destinationType");
}
if (destinationType == typeof(string)) {
if (value != null) {
Color c = (Color)value;
if (c == Color.Empty) {
return String.Empty;
}
/*
if (c.IsKnownColor) {
// Handle Web system colors and any 'special' named colors
string colorString = null;
switch (c.ToKnownColor()) {
case KnownColor.ActiveBorder: colorString = "ActiveBorder"; break;
case KnownColor.ActiveCaption: colorString = "ActiveCaption"; break;
case KnownColor.AppWorkspace: colorString = "AppWorkspace"; break;
case KnownColor.Desktop: colorString = "Background"; break;
case KnownColor.Control: colorString = "ButtonFace"; break;
case KnownColor.ControlLight: colorString = "ButtonHighlight"; break;
case KnownColor.ControlDark: colorString = "ButtonShadow"; break;
case KnownColor.ControlText: colorString = "ButtonText"; break;
case KnownColor.ActiveCaptionText: colorString = "CaptionText"; break;
case KnownColor.GrayText: colorString = "GrayText"; break;
case KnownColor.HotTrack:
case KnownColor.Highlight: colorString = "Highlight"; break;
case KnownColor.HighlightText: colorString = "HighlightText"; break;
case KnownColor.InactiveBorder: colorString = "InactiveBorder"; break;
case KnownColor.InactiveCaption: colorString = "InactiveCaption"; break;
case KnownColor.InactiveCaptionText: colorString = "InactiveCaptionText"; break;
case KnownColor.Info: colorString = "InfoBackground"; break;
case KnownColor.InfoText: colorString = "InfoText"; break;
case KnownColor.Menu: colorString = "Menu"; break;
case KnownColor.MenuText: colorString = "MenuText"; break;
case KnownColor.ScrollBar: colorString = "Scrollbar"; break;
case KnownColor.ControlDarkDark: colorString = "ThreeDDarkShadow"; break;
case KnownColor.ControlLightLight: colorString = "ButtonHighlight"; break;
case KnownColor.Window: colorString = "Window"; break;
case KnownColor.WindowFrame: colorString = "WindowFrame"; break;
case KnownColor.WindowText: colorString = "WindowText"; break;
case KnownColor.LightGray: colorString = "LightGrey"; break;
}
if (colorString != null) {
return colorString;
}
}
*/
if (c.IsKnownColor == false) {
// in the Web scenario, colors should be formatted in #RRGGBB notation
StringBuilder sb = new StringBuilder("#", 7);
sb.Append((c.R).ToString("X2", CultureInfo.InvariantCulture));
sb.Append((c.G).ToString("X2", CultureInfo.InvariantCulture));
sb.Append((c.B).ToString("X2", CultureInfo.InvariantCulture));
return sb.ToString();
}
}
}
return base.ConvertTo(context, culture, value, destinationType);
}
private static void InitializeHTMLSysColorTable() {
Hashtable t = new Hashtable(StringComparer.OrdinalIgnoreCase);
t["activeborder"] = Color.FromKnownColor(KnownColor.ActiveBorder);
t["activecaption"] = Color.FromKnownColor(KnownColor.ActiveCaption);
t["appworkspace"] = Color.FromKnownColor(KnownColor.AppWorkspace);
t["background"] = Color.FromKnownColor(KnownColor.Desktop);
t["buttonface"] = Color.FromKnownColor(KnownColor.Control);
t["buttonhighlight"] = Color.FromKnownColor(KnownColor.ControlLightLight);
t["buttonshadow"] = Color.FromKnownColor(KnownColor.ControlDark);
t["buttontext"] = Color.FromKnownColor(KnownColor.ControlText);
t["captiontext"] = Color.FromKnownColor(KnownColor.ActiveCaptionText);
t["graytext"] = Color.FromKnownColor(KnownColor.GrayText);
t["highlight"] = Color.FromKnownColor(KnownColor.Highlight);
t["highlighttext"] = Color.FromKnownColor(KnownColor.HighlightText);
t["inactiveborder"] = Color.FromKnownColor(KnownColor.InactiveBorder);
t["inactivecaption"] = Color.FromKnownColor(KnownColor.InactiveCaption);
t["inactivecaptiontext"] = Color.FromKnownColor(KnownColor.InactiveCaptionText);
t["infobackground"] = Color.FromKnownColor(KnownColor.Info);
t["infotext"] = Color.FromKnownColor(KnownColor.InfoText);
t["menu"] = Color.FromKnownColor(KnownColor.Menu);
t["menutext"] = Color.FromKnownColor(KnownColor.MenuText);
t["scrollbar"] = Color.FromKnownColor(KnownColor.ScrollBar);
t["threeddarkshadow"] = Color.FromKnownColor(KnownColor.ControlDarkDark);
t["threedface"] = Color.FromKnownColor(KnownColor.Control);
t["threedhighlight"] = Color.FromKnownColor(KnownColor.ControlLight);
t["threedlightshadow"] = Color.FromKnownColor(KnownColor.ControlLightLight);
t["window"] = Color.FromKnownColor(KnownColor.Window);
t["windowframe"] = Color.FromKnownColor(KnownColor.WindowFrame);
t["windowtext"] = Color.FromKnownColor(KnownColor.WindowText);
htmlSysColorTable = t;
}
}
}
// 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
- InputReferenceExpression.cs
- BigInt.cs
- CodeObject.cs
- Model3D.cs
- FileVersionInfo.cs
- WebServiceHost.cs
- UrlAuthFailedErrorFormatter.cs
- CodeDirectoryCompiler.cs
- CurrentTimeZone.cs
- EventProxy.cs
- CellLabel.cs
- VirtualPathData.cs
- HelloOperation11AsyncResult.cs
- DockAndAnchorLayout.cs
- SqlUtils.cs
- DrawingAttributeSerializer.cs
- ArraySubsetEnumerator.cs
- SoapSchemaExporter.cs
- ChangeBlockUndoRecord.cs
- DataTemplate.cs
- ZoneMembershipCondition.cs
- XPathSelfQuery.cs
- SafeIUnknown.cs
- HttpAsyncResult.cs
- SizeAnimation.cs
- LineUtil.cs
- MenuItemBinding.cs
- ProcessThread.cs
- TextServicesCompartmentEventSink.cs
- SolidBrush.cs
- ConstraintConverter.cs
- TakeQueryOptionExpression.cs
- ToolZone.cs
- DocumentViewerAutomationPeer.cs
- ModelItemCollection.cs
- TypefaceMetricsCache.cs
- DoWorkEventArgs.cs
- SchemaType.cs
- SessionPageStatePersister.cs
- StrokeIntersection.cs
- MSHTMLHostUtil.cs
- MarkupCompiler.cs
- FlowDocumentReaderAutomationPeer.cs
- IssuanceLicense.cs
- ListItemDetailViewAttribute.cs
- MorphHelper.cs
- SafeThreadHandle.cs
- Inline.cs
- CheckBoxPopupAdapter.cs
- DtdParser.cs
- ChangeProcessor.cs
- _NtlmClient.cs
- RadioButtonList.cs
- StrongNameMembershipCondition.cs
- UnauthorizedAccessException.cs
- xml.cs
- SqlExpressionNullability.cs
- ComEventsMethod.cs
- PanelStyle.cs
- Int32Converter.cs
- InternalControlCollection.cs
- EventItfInfo.cs
- InvokeBinder.cs
- TableItemProviderWrapper.cs
- Metadata.cs
- SiteMapDataSourceView.cs
- HtmlInputFile.cs
- ErrorHandler.cs
- DbReferenceCollection.cs
- QilLoop.cs
- AmbientValueAttribute.cs
- PageOutputColor.cs
- ISessionStateStore.cs
- ExpressionHelper.cs
- SynchronizedInputPattern.cs
- MouseEvent.cs
- InteropAutomationProvider.cs
- FixUp.cs
- GrammarBuilderRuleRef.cs
- loginstatus.cs
- DefinitionUpdate.cs
- ExpressionPrefixAttribute.cs
- DirectoryNotFoundException.cs
- PagedDataSource.cs
- Buffer.cs
- BufferedWebEventProvider.cs
- Translator.cs
- RelationshipEndMember.cs
- TreeIterator.cs
- XamlDesignerSerializationManager.cs
- TypeConverterAttribute.cs
- OdbcDataAdapter.cs
- Button.cs
- EdmError.cs
- SoapHeaderAttribute.cs
- DebugInfoGenerator.cs
- AsyncInvokeContext.cs
- ClientCredentials.cs
- AssociationEndMember.cs
- SQLSingleStorage.cs