Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / xsp / System / Web / UI / WebControls / WebColorConverter.cs / 1 / 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;
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SerializationBinder.cs
- PolicyLevel.cs
- CodeMethodReturnStatement.cs
- SelectingProviderEventArgs.cs
- Vector3DConverter.cs
- SharedPersonalizationStateInfo.cs
- Keywords.cs
- DataGridCellClipboardEventArgs.cs
- PixelFormat.cs
- ZipPackagePart.cs
- NameValuePair.cs
- UriPrefixTable.cs
- ScriptControlDescriptor.cs
- KeyedHashAlgorithm.cs
- DataGridViewRowPostPaintEventArgs.cs
- SimpleHandlerBuildProvider.cs
- AccessDataSourceView.cs
- DashStyle.cs
- DependentList.cs
- GeneralTransform3DCollection.cs
- OverloadGroupAttribute.cs
- ping.cs
- CodeIdentifiers.cs
- NameValueSectionHandler.cs
- GenericTypeParameterBuilder.cs
- HandlerFactoryWrapper.cs
- ProjectionPruner.cs
- QueryResults.cs
- ParallelRangeManager.cs
- HtmlHead.cs
- _NativeSSPI.cs
- MenuStrip.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- TextPenaltyModule.cs
- SchemaCollectionPreprocessor.cs
- ImageKeyConverter.cs
- AddingNewEventArgs.cs
- SafeUserTokenHandle.cs
- WindowsListViewGroupSubsetLink.cs
- OdbcParameterCollection.cs
- HtmlInputPassword.cs
- Rect3DValueSerializer.cs
- StorageScalarPropertyMapping.cs
- DataKey.cs
- ElementNotEnabledException.cs
- _HTTPDateParse.cs
- ShapingWorkspace.cs
- MetadataAssemblyHelper.cs
- WebEventTraceProvider.cs
- ReadingWritingEntityEventArgs.cs
- Console.cs
- DataBinding.cs
- GenericUriParser.cs
- XmlSchemaDocumentation.cs
- AudioSignalProblemOccurredEventArgs.cs
- Visitors.cs
- ToolStripDropDownButton.cs
- BrushValueSerializer.cs
- CodeDirectoryCompiler.cs
- FlowLayoutSettings.cs
- TerminatorSinks.cs
- MouseGestureConverter.cs
- DataGridRelationshipRow.cs
- MultilineStringConverter.cs
- SynchronizationValidator.cs
- ResourceManagerWrapper.cs
- Errors.cs
- PathFigure.cs
- PhysicalAddress.cs
- DecimalStorage.cs
- FlowSwitchDesigner.xaml.cs
- input.cs
- AutoGeneratedField.cs
- DictionaryEntry.cs
- DelegatingHeader.cs
- ReceiveCompletedEventArgs.cs
- EmptyStringExpandableObjectConverter.cs
- ExceptionHandlersDesigner.cs
- ReadOnlyState.cs
- InputScopeManager.cs
- ByteStreamMessageEncodingElement.cs
- GridViewDeleteEventArgs.cs
- WebPartConnectionsCloseVerb.cs
- BamlBinaryReader.cs
- UserMapPath.cs
- TypeToken.cs
- MessageUtil.cs
- MultipleViewPattern.cs
- TableAdapterManagerGenerator.cs
- OneOfScalarConst.cs
- WeakReadOnlyCollection.cs
- Directory.cs
- BuildProviderAppliesToAttribute.cs
- DebugView.cs
- StrokeNode.cs
- ControlTemplate.cs
- DesignBindingConverter.cs
- MethodBody.cs
- DictionaryEditChange.cs
- FakeModelPropertyImpl.cs