Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / ResourceExpressionEditorSheet.cs / 1 / ResourceExpressionEditorSheet.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.Design {
using System.Collections;
using System.ComponentModel;
using System.Design;
using System.Diagnostics;
///
/// Summary description for ResourceExpressionEditorSheet.
///
public class ResourceExpressionEditorSheet : ExpressionEditorSheet {
private string _classKey;
private string _resourceKey;
public ResourceExpressionEditorSheet(string expression, IServiceProvider serviceProvider) : base(serviceProvider) {
// Parse the existing expression if it exists;
if (!String.IsNullOrEmpty(expression)) {
ResourceExpressionFields fields = ParseExpressionInternal(expression);
ClassKey = fields.ClassKey;
ResourceKey = fields.ResourceKey;
}
}
[DefaultValue("")]
[SRDescription(SR.ResourceExpressionEditorSheet_ClassKey)]
public string ClassKey {
get {
if (_classKey == null) {
return String.Empty;
}
return _classKey;
}
set {
_classKey = value;
}
}
public override bool IsValid {
get {
return !String.IsNullOrEmpty(ResourceKey);
}
}
[DefaultValue("")]
[SRDescription(SR.ResourceExpressionEditorSheet_ResourceKey)]
[TypeConverter(typeof(ResourceKeyTypeConverter))]
public string ResourceKey {
get {
if (_resourceKey == null) {
return String.Empty;
}
return _resourceKey;
}
set {
_resourceKey = value;
}
}
public override string GetExpression() {
string expression = String.Empty;
if (!String.IsNullOrEmpty(_classKey)) {
return _classKey + ", " + _resourceKey;
}
else {
return _resourceKey;
}
}
// The following syntaxes are accepted for the expression
// resourceKey
// classKey, resourceKey
//
private static ResourceExpressionFields ParseExpressionInternal(string expression) {
ResourceExpressionFields fields = new ResourceExpressionFields();
int len = expression.Length;
// Split the comma separated string
string[] parts = expression.Split(',');
int numOfParts = parts.Length;
if (numOfParts > 2) return null;
if (numOfParts == 1) {
fields.ResourceKey = parts[0].Trim();
}
else {
fields.ClassKey = parts[0].Trim();
fields.ResourceKey = parts[1].Trim();
}
return fields;
}
internal class ResourceExpressionFields {
internal string ClassKey;
internal string ResourceKey;
}
private class ResourceKeyTypeConverter : StringConverter {
private static ICollection GetResourceKeys(IServiceProvider serviceProvider, string classKey) {
DesignTimeResourceProviderFactory resourceProviderFactory = ControlDesigner.GetDesignTimeResourceProviderFactory(serviceProvider);
System.Web.Compilation.IResourceProvider resProvider;
if (String.IsNullOrEmpty(classKey)) {
resProvider = resourceProviderFactory.CreateDesignTimeLocalResourceProvider(serviceProvider);
}
else {
resProvider = resourceProviderFactory.CreateDesignTimeGlobalResourceProvider(serviceProvider, classKey);
}
if (resProvider != null) {
System.Resources.IResourceReader resReader = resProvider.ResourceReader;
if (resReader != null) {
ArrayList resourceKeys = new ArrayList();
foreach (DictionaryEntry de in resReader) {
resourceKeys.Add(de.Key);
}
return resourceKeys;
}
}
return null;
}
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) {
if (context != null) {
if (context.Instance != null) {
ResourceExpressionEditorSheet sheet = (ResourceExpressionEditorSheet)context.Instance;
ICollection resourceKeys = GetResourceKeys(sheet.ServiceProvider, sheet.ClassKey);
if ((resourceKeys != null) && (resourceKeys.Count > 0)) {
return new StandardValuesCollection(resourceKeys);
}
}
}
return base.GetStandardValues(context);
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) {
return false;
}
public override bool GetStandardValuesSupported(ITypeDescriptorContext context) {
if (context != null) {
if (context.Instance != null) {
ResourceExpressionEditorSheet sheet = (ResourceExpressionEditorSheet)context.Instance;
ICollection resourceKeys = GetResourceKeys(sheet.ServiceProvider, sheet.ClassKey);
if ((resourceKeys != null) && (resourceKeys.Count > 0)) {
return true;
}
}
}
return base.GetStandardValuesSupported(context);
}
}
}
}
// 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
- WhitespaceRuleReader.cs
- ContextMenuStrip.cs
- Matrix.cs
- DataGridItem.cs
- SamlAssertion.cs
- DataGridRowHeader.cs
- Int32EqualityComparer.cs
- BooleanSwitch.cs
- StructuralType.cs
- SingleAnimationUsingKeyFrames.cs
- XmlMapping.cs
- HttpSysSettings.cs
- NumericUpDownAcceleration.cs
- ImagingCache.cs
- SaveLedgerEntryRequest.cs
- ColorConverter.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- BlurEffect.cs
- EventProviderWriter.cs
- MbpInfo.cs
- FrameAutomationPeer.cs
- ExtendedPropertiesHandler.cs
- OleDbDataAdapter.cs
- UnitySerializationHolder.cs
- XmlDocumentFieldSchema.cs
- DockAndAnchorLayout.cs
- RootBrowserWindow.cs
- WebPartPersonalization.cs
- NodeLabelEditEvent.cs
- ClientType.cs
- EditorZoneBase.cs
- QEncodedStream.cs
- PhonemeEventArgs.cs
- RawKeyboardInputReport.cs
- RotationValidation.cs
- ToolboxDataAttribute.cs
- ObjectAssociationEndMapping.cs
- DataException.cs
- EntityStoreSchemaFilterEntry.cs
- WebResponse.cs
- FamilyCollection.cs
- TaskHelper.cs
- BitmapVisualManager.cs
- PreloadHost.cs
- StatusStrip.cs
- ConnectivityStatus.cs
- CriticalFinalizerObject.cs
- RelationshipConverter.cs
- Authorization.cs
- AddDataControlFieldDialog.cs
- EventPrivateKey.cs
- WmfPlaceableFileHeader.cs
- MissingManifestResourceException.cs
- SqlConnectionFactory.cs
- LogicalExpressionTypeConverter.cs
- VerificationException.cs
- ProbeMatchesApril2005.cs
- BasicExpressionVisitor.cs
- PasswordBoxAutomationPeer.cs
- SplitterDesigner.cs
- SchemaTableColumn.cs
- EntityDataSourceReferenceGroup.cs
- HttpContextServiceHost.cs
- MetabaseSettingsIis7.cs
- HtmlInputImage.cs
- ActionMessageFilterTable.cs
- CopyAction.cs
- ProgressChangedEventArgs.cs
- XmlSchemaElement.cs
- ClientFormsIdentity.cs
- ToolStripTextBox.cs
- EventLogHandle.cs
- ServiceMetadataContractBehavior.cs
- InternalResources.cs
- ApplicationSettingsBase.cs
- ByteKeyFrameCollection.cs
- FunctionUpdateCommand.cs
- DesigntimeLicenseContextSerializer.cs
- DataGridViewCellValueEventArgs.cs
- HttpRequestWrapper.cs
- ColumnResizeUndoUnit.cs
- ValueProviderWrapper.cs
- NameValuePair.cs
- TablePattern.cs
- _ListenerRequestStream.cs
- StorageInfo.cs
- ProcessHostFactoryHelper.cs
- AssociationSetMetadata.cs
- Variant.cs
- CachedPathData.cs
- GetPageNumberCompletedEventArgs.cs
- ThrowOnMultipleAssignment.cs
- WebPartManagerInternals.cs
- DataGridViewElement.cs
- MergeFailedEvent.cs
- StylusOverProperty.cs
- ObservableDictionary.cs
- PropertyGridCommands.cs
- SubMenuStyle.cs
- ResourcePermissionBase.cs