Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Framework / System / Windows / Markup / Localizer / BamlLocalizationDictionary.cs / 1 / BamlLocalizationDictionary.cs
//------------------------------------------------------------------------ // // Microsoft Windows Client Platform // Copyright (C) Microsoft Corporation, 2001 // // File: BamlLocalizationDictionary.cs // // Contents: BamlLocalizationDictionary and BamlLocalizationDictionaryEnumerator // // History: 8/3/2004 Move to System.Windows namespace // 11/30/2004 Garyyang Move to System.Windows.Markup.Localization namespace // Renamed class to BamlLocalizationDictionary // 03/24/2005 Garyyang Move to System.Windows.Markup.Localizer namespace //----------------------------------------------------------------------- using System; using System.IO; using System.Globalization; using System.Runtime.InteropServices; using System.Collections; using System.Collections.Generic; using System.Windows.Markup; using System.Diagnostics; using System.Text; using System.Windows; namespace System.Windows.Markup.Localizer { ////// BamlLocalizationDictionaryEnumerator /// public sealed class BamlLocalizationDictionaryEnumerator : IDictionaryEnumerator { internal BamlLocalizationDictionaryEnumerator(IEnumerator enumerator) { _enumerator = enumerator; } ////// move to the next entry /// public bool MoveNext() { return _enumerator.MoveNext(); } ////// reset /// public void Reset() { _enumerator.Reset(); } ////// gets the DictionaryEntry /// public DictionaryEntry Entry { get{ return (DictionaryEntry) _enumerator.Current; } } ////// gets the key /// public BamlLocalizableResourceKey Key { get{ return (BamlLocalizableResourceKey) Entry.Key; } } ////// gets the value /// public BamlLocalizableResource Value { get{ return (BamlLocalizableResource) Entry.Value; } } ////// return the current entry /// public DictionaryEntry Current { get { return this.Entry; } } //------------------------------------ // Interfaces //------------------------------------ ////// Return the current object /// ///object object IEnumerator.Current { get { return this.Current; } } ////// return the key /// ///key object IDictionaryEnumerator.Key { get { return this.Key; } } ////// Value /// ///value object IDictionaryEnumerator.Value { get { return this.Value; } } //--------------------------------------- // Private //--------------------------------------- private IEnumerator _enumerator; } ////// Enumerator that enumerates all the localizable resources in /// a baml stream /// public sealed class BamlLocalizationDictionary : IDictionary { ////// Constructor that creates an empty baml resource dictionary /// public BamlLocalizationDictionary() { _dictionary = new Dictionary(); } /// /// gets value indicating whether the dictionary has fixed size /// ///true for fixed size, false otherwise. public bool IsFixedSize { get { return false; } } ////// get value indicating whether it is readonly /// ///true for readonly, false otherwise. public bool IsReadOnly { get { return false;} } ////// Return the key to the root element if the root element is localizable, return null otherwise /// ////// Modifications can be added to the proeprties of the root element which will have a global effect /// on the UI. For example, changing CulutreInfo or FlowDirection on the root element (if applicable) /// will have impact to the whole UI. /// public BamlLocalizableResourceKey RootElementKey { get { return _rootElementKey; } } ////// gets the collection of keys /// ///a collection of keys public ICollection Keys { get { return ((IDictionary)_dictionary).Keys; } } ////// gets the collection of values /// ///a collection of values public ICollection Values { get { return ((IDictionary)_dictionary).Values; } } ////// Gets or sets a localizable resource by the key /// /// BamlLocalizableResourceKey key ///BamlLocalizableResource object identified by the key public BamlLocalizableResource this[BamlLocalizableResourceKey key] { get { CheckNonNullParam(key, "key"); return _dictionary[key]; } set { CheckNonNullParam(key, "key"); _dictionary[key] = value; } } ////// Adds a localizable resource with the provided key /// /// the BamlLocalizableResourceKey key /// the BamlLocalizableResource public void Add(BamlLocalizableResourceKey key, BamlLocalizableResource value) { CheckNonNullParam(key, "key"); _dictionary.Add(key, value); } ////// removes all the resources in the dictionary. /// public void Clear() { _dictionary.Clear(); } ////// removes the localizable resource with the specified key /// /// the key public void Remove(BamlLocalizableResourceKey key) { _dictionary.Remove(key); } ////// determines whether the dictionary contains the localizable resource /// with the specified key /// /// ///public bool Contains(BamlLocalizableResourceKey key) { CheckNonNullParam(key, "key"); return _dictionary.ContainsKey(key); } /// /// returns an IDictionaryEnumerator for the dictionary. /// ///the enumerator for the dictionary public BamlLocalizationDictionaryEnumerator GetEnumerator() { return new BamlLocalizationDictionaryEnumerator( ((IDictionary)_dictionary).GetEnumerator() ); } ////// gets the number of localizable resources in the dictionary /// ///number of localizable resources public int Count { get { return _dictionary.Count; } } ////// Copies the dictionary's elements to a one-dimensional /// Array instance at the specified index. /// public void CopyTo(DictionaryEntry[] array, int arrayIndex) { CheckNonNullParam(array, "array"); if (arrayIndex < 0) { throw new ArgumentOutOfRangeException( "arrayIndex", SR.Get(SRID.ParameterCannotBeNegative) ); } if (arrayIndex >= array.Length) { throw new ArgumentException( SR.Get( SRID.Collection_CopyTo_IndexGreaterThanOrEqualToArrayLength, "arrayIndex", "array" ), "arrayIndex" ); } if (Count > (array.Length - arrayIndex)) { throw new ArgumentException( SR.Get( SRID.Collection_CopyTo_NumberOfElementsExceedsArrayLength, "arrayIndex", "array" ) ); } foreach(KeyValuePairpair in _dictionary) { DictionaryEntry entry = new DictionaryEntry(pair.Key, pair.Value); array[arrayIndex++] = entry; } } #region interface ICollection, IEnumerable, IDictionary //------------------------------ // interface functions //------------------------------ bool IDictionary.Contains(object key) { CheckNonNullParam(key, "key"); return ((IDictionary)_dictionary).Contains(key); } void IDictionary.Add(object key, object value) { CheckNonNullParam(key, "key"); ((IDictionary) _dictionary).Add(key, value); } void IDictionary.Remove(object key) { CheckNonNullParam(key, "key"); ((IDictionary) _dictionary).Remove(key); } object IDictionary.this[object key] { get { CheckNonNullParam(key, "key"); return ((IDictionary)_dictionary)[key]; } set { CheckNonNullParam(key, "key"); ((IDictionary)_dictionary)[key] = value; } } IDictionaryEnumerator IDictionary.GetEnumerator() { return this.GetEnumerator(); } void ICollection.CopyTo(Array array, int index) { if (array != null && array.Rank != 1) { throw new ArgumentException( SR.Get( SRID.Collection_CopyTo_ArrayCannotBeMultidimensional ), "array" ); } CopyTo(array as DictionaryEntry[], index); } int ICollection.Count { get { return Count; } } object ICollection.SyncRoot { get { return ((IDictionary)_dictionary).SyncRoot; } } bool ICollection.IsSynchronized { get { return ((IDictionary)_dictionary).IsSynchronized; } } IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); } #endregion //------------------------------ // internal functions //------------------------------ internal BamlLocalizationDictionary Copy() { BamlLocalizationDictionary newDictionary = new BamlLocalizationDictionary(); foreach (KeyValuePair pair in _dictionary) { BamlLocalizableResource resourceCopy = pair.Value == null ? null : new BamlLocalizableResource(pair.Value); newDictionary.Add(pair.Key, resourceCopy); } newDictionary._rootElementKey = _rootElementKey; // return the new dictionary return newDictionary; } internal void SetRootElementKey(BamlLocalizableResourceKey key) { _rootElementKey = key; } //------------------------------ // private methods //------------------------------ private void CheckNonNullParam(object param, string paramName) { if (param == null) throw new ArgumentNullException(paramName); } //------------------------------ // private member //------------------------------ private IDictionary _dictionary; private BamlLocalizableResourceKey _rootElementKey; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------ // // Microsoft Windows Client Platform // Copyright (C) Microsoft Corporation, 2001 // // File: BamlLocalizationDictionary.cs // // Contents: BamlLocalizationDictionary and BamlLocalizationDictionaryEnumerator // // History: 8/3/2004 Move to System.Windows namespace // 11/30/2004 Garyyang Move to System.Windows.Markup.Localization namespace // Renamed class to BamlLocalizationDictionary // 03/24/2005 Garyyang Move to System.Windows.Markup.Localizer namespace //----------------------------------------------------------------------- using System; using System.IO; using System.Globalization; using System.Runtime.InteropServices; using System.Collections; using System.Collections.Generic; using System.Windows.Markup; using System.Diagnostics; using System.Text; using System.Windows; namespace System.Windows.Markup.Localizer { /// /// BamlLocalizationDictionaryEnumerator /// public sealed class BamlLocalizationDictionaryEnumerator : IDictionaryEnumerator { internal BamlLocalizationDictionaryEnumerator(IEnumerator enumerator) { _enumerator = enumerator; } ////// move to the next entry /// public bool MoveNext() { return _enumerator.MoveNext(); } ////// reset /// public void Reset() { _enumerator.Reset(); } ////// gets the DictionaryEntry /// public DictionaryEntry Entry { get{ return (DictionaryEntry) _enumerator.Current; } } ////// gets the key /// public BamlLocalizableResourceKey Key { get{ return (BamlLocalizableResourceKey) Entry.Key; } } ////// gets the value /// public BamlLocalizableResource Value { get{ return (BamlLocalizableResource) Entry.Value; } } ////// return the current entry /// public DictionaryEntry Current { get { return this.Entry; } } //------------------------------------ // Interfaces //------------------------------------ ////// Return the current object /// ///object object IEnumerator.Current { get { return this.Current; } } ////// return the key /// ///key object IDictionaryEnumerator.Key { get { return this.Key; } } ////// Value /// ///value object IDictionaryEnumerator.Value { get { return this.Value; } } //--------------------------------------- // Private //--------------------------------------- private IEnumerator _enumerator; } ////// Enumerator that enumerates all the localizable resources in /// a baml stream /// public sealed class BamlLocalizationDictionary : IDictionary { ////// Constructor that creates an empty baml resource dictionary /// public BamlLocalizationDictionary() { _dictionary = new Dictionary(); } /// /// gets value indicating whether the dictionary has fixed size /// ///true for fixed size, false otherwise. public bool IsFixedSize { get { return false; } } ////// get value indicating whether it is readonly /// ///true for readonly, false otherwise. public bool IsReadOnly { get { return false;} } ////// Return the key to the root element if the root element is localizable, return null otherwise /// ////// Modifications can be added to the proeprties of the root element which will have a global effect /// on the UI. For example, changing CulutreInfo or FlowDirection on the root element (if applicable) /// will have impact to the whole UI. /// public BamlLocalizableResourceKey RootElementKey { get { return _rootElementKey; } } ////// gets the collection of keys /// ///a collection of keys public ICollection Keys { get { return ((IDictionary)_dictionary).Keys; } } ////// gets the collection of values /// ///a collection of values public ICollection Values { get { return ((IDictionary)_dictionary).Values; } } ////// Gets or sets a localizable resource by the key /// /// BamlLocalizableResourceKey key ///BamlLocalizableResource object identified by the key public BamlLocalizableResource this[BamlLocalizableResourceKey key] { get { CheckNonNullParam(key, "key"); return _dictionary[key]; } set { CheckNonNullParam(key, "key"); _dictionary[key] = value; } } ////// Adds a localizable resource with the provided key /// /// the BamlLocalizableResourceKey key /// the BamlLocalizableResource public void Add(BamlLocalizableResourceKey key, BamlLocalizableResource value) { CheckNonNullParam(key, "key"); _dictionary.Add(key, value); } ////// removes all the resources in the dictionary. /// public void Clear() { _dictionary.Clear(); } ////// removes the localizable resource with the specified key /// /// the key public void Remove(BamlLocalizableResourceKey key) { _dictionary.Remove(key); } ////// determines whether the dictionary contains the localizable resource /// with the specified key /// /// ///public bool Contains(BamlLocalizableResourceKey key) { CheckNonNullParam(key, "key"); return _dictionary.ContainsKey(key); } /// /// returns an IDictionaryEnumerator for the dictionary. /// ///the enumerator for the dictionary public BamlLocalizationDictionaryEnumerator GetEnumerator() { return new BamlLocalizationDictionaryEnumerator( ((IDictionary)_dictionary).GetEnumerator() ); } ////// gets the number of localizable resources in the dictionary /// ///number of localizable resources public int Count { get { return _dictionary.Count; } } ////// Copies the dictionary's elements to a one-dimensional /// Array instance at the specified index. /// public void CopyTo(DictionaryEntry[] array, int arrayIndex) { CheckNonNullParam(array, "array"); if (arrayIndex < 0) { throw new ArgumentOutOfRangeException( "arrayIndex", SR.Get(SRID.ParameterCannotBeNegative) ); } if (arrayIndex >= array.Length) { throw new ArgumentException( SR.Get( SRID.Collection_CopyTo_IndexGreaterThanOrEqualToArrayLength, "arrayIndex", "array" ), "arrayIndex" ); } if (Count > (array.Length - arrayIndex)) { throw new ArgumentException( SR.Get( SRID.Collection_CopyTo_NumberOfElementsExceedsArrayLength, "arrayIndex", "array" ) ); } foreach(KeyValuePairpair in _dictionary) { DictionaryEntry entry = new DictionaryEntry(pair.Key, pair.Value); array[arrayIndex++] = entry; } } #region interface ICollection, IEnumerable, IDictionary //------------------------------ // interface functions //------------------------------ bool IDictionary.Contains(object key) { CheckNonNullParam(key, "key"); return ((IDictionary)_dictionary).Contains(key); } void IDictionary.Add(object key, object value) { CheckNonNullParam(key, "key"); ((IDictionary) _dictionary).Add(key, value); } void IDictionary.Remove(object key) { CheckNonNullParam(key, "key"); ((IDictionary) _dictionary).Remove(key); } object IDictionary.this[object key] { get { CheckNonNullParam(key, "key"); return ((IDictionary)_dictionary)[key]; } set { CheckNonNullParam(key, "key"); ((IDictionary)_dictionary)[key] = value; } } IDictionaryEnumerator IDictionary.GetEnumerator() { return this.GetEnumerator(); } void ICollection.CopyTo(Array array, int index) { if (array != null && array.Rank != 1) { throw new ArgumentException( SR.Get( SRID.Collection_CopyTo_ArrayCannotBeMultidimensional ), "array" ); } CopyTo(array as DictionaryEntry[], index); } int ICollection.Count { get { return Count; } } object ICollection.SyncRoot { get { return ((IDictionary)_dictionary).SyncRoot; } } bool ICollection.IsSynchronized { get { return ((IDictionary)_dictionary).IsSynchronized; } } IEnumerator IEnumerable.GetEnumerator() { return this.GetEnumerator(); } #endregion //------------------------------ // internal functions //------------------------------ internal BamlLocalizationDictionary Copy() { BamlLocalizationDictionary newDictionary = new BamlLocalizationDictionary(); foreach (KeyValuePair pair in _dictionary) { BamlLocalizableResource resourceCopy = pair.Value == null ? null : new BamlLocalizableResource(pair.Value); newDictionary.Add(pair.Key, resourceCopy); } newDictionary._rootElementKey = _rootElementKey; // return the new dictionary return newDictionary; } internal void SetRootElementKey(BamlLocalizableResourceKey key) { _rootElementKey = key; } //------------------------------ // private methods //------------------------------ private void CheckNonNullParam(object param, string paramName) { if (param == null) throw new ArgumentNullException(paramName); } //------------------------------ // private member //------------------------------ private IDictionary _dictionary; private BamlLocalizableResourceKey _rootElementKey; } } // 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
- EventArgs.cs
- PersonalizationProvider.cs
- RadioButtonStandardAdapter.cs
- DataGridViewRowEventArgs.cs
- SingleAnimation.cs
- CultureTable.cs
- TCEAdapterGenerator.cs
- SizeF.cs
- UmAlQuraCalendar.cs
- Span.cs
- SqlRowUpdatedEvent.cs
- TabletDevice.cs
- HealthMonitoringSectionHelper.cs
- XslNumber.cs
- PolicyVersion.cs
- StreamWriter.cs
- ConfigXmlText.cs
- XmlAttributeAttribute.cs
- DataGridViewButtonCell.cs
- HMACMD5.cs
- GlyphShapingProperties.cs
- NullRuntimeConfig.cs
- XmlSecureResolver.cs
- UnsafeNativeMethodsCLR.cs
- FlowDocumentView.cs
- ObjectManager.cs
- DigitShape.cs
- ConnectionStringEditor.cs
- GlobalProxySelection.cs
- BoundColumn.cs
- PropertyMappingExceptionEventArgs.cs
- Relationship.cs
- ManagedFilter.cs
- ClientOptions.cs
- DBSqlParserColumn.cs
- WindowsImpersonationContext.cs
- SchemaImporterExtensionsSection.cs
- InputScopeAttribute.cs
- ChildDocumentBlock.cs
- ProfileService.cs
- List.cs
- TraceContextEventArgs.cs
- SQLDecimalStorage.cs
- TransactionOptions.cs
- SetMemberBinder.cs
- ResourceReferenceExpressionConverter.cs
- PeerInvitationResponse.cs
- QilCloneVisitor.cs
- BrowserPolicyValidator.cs
- ProfileServiceManager.cs
- XmlReflectionMember.cs
- CapabilitiesSection.cs
- LinkedDataMemberFieldEditor.cs
- MessageAction.cs
- DataGridHeaderBorder.cs
- DescendantBaseQuery.cs
- XmlHelper.cs
- IsolatedStorageFilePermission.cs
- RemotingService.cs
- SmtpCommands.cs
- AdornerLayer.cs
- RelatedEnd.cs
- SimpleType.cs
- FixedFlowMap.cs
- IteratorDescriptor.cs
- ObjectDataSourceStatusEventArgs.cs
- WinFormsUtils.cs
- InvalidCastException.cs
- SpellerError.cs
- OleDbReferenceCollection.cs
- SelectionWordBreaker.cs
- ContextMenuAutomationPeer.cs
- ForwardPositionQuery.cs
- Pen.cs
- DataGridViewUtilities.cs
- DataSourceXmlSubItemAttribute.cs
- DataGridItem.cs
- MsmqHostedTransportManager.cs
- CheckBox.cs
- UnsafeNativeMethodsPenimc.cs
- ToolStripPanelSelectionGlyph.cs
- EmptyQuery.cs
- DbMetaDataFactory.cs
- CompilerParameters.cs
- StateMachineSubscriptionManager.cs
- XmlAttributeAttribute.cs
- DataExpression.cs
- MsmqProcessProtocolHandler.cs
- XXXOnTypeBuilderInstantiation.cs
- CacheOutputQuery.cs
- OperatingSystem.cs
- Compiler.cs
- Compilation.cs
- MemoryMappedFile.cs
- SystemBrushes.cs
- AuthenticationModuleElement.cs
- ContextMenuStripGroupCollection.cs
- EditorZoneAutoFormat.cs
- SecurityException.cs
- WebDisplayNameAttribute.cs