83 lines
3.3 KiB
C#
83 lines
3.3 KiB
C#
|
//------------------------------------------------------------------------------
|
||
|
// <copyright file="MobileCategoryAttribute.cs" company="Microsoft">
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
// </copyright>
|
||
|
//------------------------------------------------------------------------------
|
||
|
|
||
|
namespace System.Web.UI.MobileControls
|
||
|
{
|
||
|
using System;
|
||
|
using System.ComponentModel;
|
||
|
using System.Diagnostics;
|
||
|
|
||
|
[
|
||
|
AttributeUsage(AttributeTargets.All)
|
||
|
]
|
||
|
[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 sealed class MobileCategoryAttribute : CategoryAttribute
|
||
|
{
|
||
|
private static MobileCategoryAttribute deviceSpecific;
|
||
|
private const String _categoryDeviceSpecific = "Category_DeviceSpecific";
|
||
|
private const String _categoryPrefix = "Category_";
|
||
|
private const String _usCategoryDeviceSpecific = "Device Specific";
|
||
|
private static readonly int _prefixLength = _categoryPrefix.Length;
|
||
|
|
||
|
// Initializes a new instance of the CategoryAttribute class.
|
||
|
internal /*public*/ MobileCategoryAttribute(String category) : base(category)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
internal /*public*/ static CategoryAttribute DeviceSpecific
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (deviceSpecific == null)
|
||
|
{
|
||
|
deviceSpecific = new MobileCategoryAttribute(_categoryDeviceSpecific);
|
||
|
}
|
||
|
return deviceSpecific;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// This method is called the first time the category property
|
||
|
// is accessed. It provides a way to lookup a localized string for
|
||
|
// the given category. Classes may override this to add their
|
||
|
// own localized names to categories. If a localized string is
|
||
|
// available for the given value, the method should return it.
|
||
|
// Otherwise, it should return null.
|
||
|
protected override String GetLocalizedString(String value)
|
||
|
{
|
||
|
Debug.Assert(value != null);
|
||
|
String localizedValue = null;
|
||
|
|
||
|
int index = value.IndexOf(_categoryPrefix, StringComparison.Ordinal);
|
||
|
|
||
|
// mobile controls have "Category_" prefix.
|
||
|
if (index == 0)
|
||
|
{
|
||
|
String categoryName = value.Substring(_prefixLength);
|
||
|
|
||
|
// see if already defined in base class.
|
||
|
localizedValue = base.GetLocalizedString(categoryName);
|
||
|
}
|
||
|
|
||
|
// fall back to local resource string.
|
||
|
if (localizedValue == null)
|
||
|
{
|
||
|
localizedValue = (String) SR.GetString(value);
|
||
|
}
|
||
|
|
||
|
if (localizedValue == null && value.Equals(_usCategoryDeviceSpecific))
|
||
|
{
|
||
|
localizedValue = (String) SR.GetString(SR.Category_DeviceSpecific);
|
||
|
}
|
||
|
|
||
|
// This attribute is internal, and we should never have a missing resource string.
|
||
|
Debug.Assert(localizedValue != null,
|
||
|
"All MobileWebForms category attributes should have localized strings. Category '"
|
||
|
+ value + "' not found.");
|
||
|
return localizedValue;
|
||
|
}
|
||
|
}
|
||
|
}
|