Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Input / Command / InputGestureCollection.cs / 1 / InputGestureCollection.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description: InputGestureCollection serves the purpose of Storing/Retrieving InputGestures
//
// See spec at : [....]/coreui/Specs/Commanding(new).mht
//
// History:
// 03/30/2004 : [....] - Created
//
//---------------------------------------------------------------------------
using System;
using System.Collections;
using System.Diagnostics;
using System.Collections.Generic;
using System.Windows;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
namespace System.Windows.Input
{
///
/// InputGestureCollection
/// InputGestureCollection - Collection of InputGestures.
/// Stores the InputGestures sequentially in a genric InputGesture List
/// Will be changed to generic List implementation once the
/// parser supports generic collections.
///
public sealed class InputGestureCollection : IList
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
///
/// Constructor
///
public InputGestureCollection()
{
}
///
/// InputGestureCollection
///
/// InputGesture array
public InputGestureCollection( IList inputGestures )
{
if (inputGestures != null && inputGestures.Count > 0)
{
this.AddRange(inputGestures as ICollection);
}
}
#endregion Constructors
//------------------------------------------------------
//
// Public Methods
//
//-----------------------------------------------------
#region Public Methods
#region Implementation of IList
#region Implementation of ICollection
///
/// CopyTo - to copy the entire collection into an array
///
///
///
void ICollection.CopyTo(System.Array array, int index)
{
if (_innerGestureList != null)
((ICollection)_innerGestureList).CopyTo(array, index);
}
#endregion Implementation of ICollection
///
/// IList.Contains
///
/// key
/// true - if found, false - otherwise
bool IList.Contains(object key)
{
return this.Contains(key as InputGesture) ;
}
///
/// IndexOf
///
///
///
int IList.IndexOf(object value)
{
InputGesture inputGesture = value as InputGesture;
return ((inputGesture != null) ? this.IndexOf(inputGesture) : -1) ;
}
///
/// Insert
///
/// index at which to insert the item
/// item value to insert
void IList.Insert(int index, object value)
{
if (IsReadOnly)
throw new NotSupportedException(SR.Get(SRID.ReadOnlyInputGesturesCollection));
this.Insert(index, value as InputGesture);
}
///
/// Add
///
///
int IList.Add(object inputGesture)
{
if (IsReadOnly)
throw new NotSupportedException(SR.Get(SRID.ReadOnlyInputGesturesCollection));
return this.Add(inputGesture as InputGesture);
}
///
/// Remove
///
///
void IList.Remove(object inputGesture)
{
if (IsReadOnly)
throw new NotSupportedException(SR.Get(SRID.ReadOnlyInputGesturesCollection));
this.Remove(inputGesture as InputGesture);
}
///
/// Indexing operator
///
object IList.this[int index]
{
get
{
return this[index];
}
set
{
InputGesture inputGesture = value as InputGesture;
if (inputGesture == null)
throw new NotSupportedException(SR.Get(SRID.CollectionOnlyAcceptsInputGestures));
this[index] = inputGesture;
}
}
#endregion Implementation of IList
#region Implementation of Enumerable
///
/// IEnumerable.GetEnumerator - For Enumeration purposes
///
///
public IEnumerator GetEnumerator()
{
if (_innerGestureList != null)
return _innerGestureList.GetEnumerator();
List list = new List(0);
return list.GetEnumerator();
}
#endregion Implementation of IEnumberable
///
/// Indexing operator
///
public InputGesture this[int index]
{
get
{
return (_innerGestureList != null ? _innerGestureList[index] : null);
}
set
{
if (IsReadOnly)
throw new NotSupportedException(SR.Get(SRID.ReadOnlyInputGesturesCollection));
EnsureList();
if (_innerGestureList != null)
{
_innerGestureList[index] = value;
}
}
}
///
/// ICollection.IsSynchronized
///
public bool IsSynchronized
{
get
{
if (_innerGestureList != null)
return ((IList)_innerGestureList).IsSynchronized;
return false;
}
}
///
/// ICollection.SyncRoot
///
public object SyncRoot
{
get
{
return _innerGestureList != null ? ((IList)_innerGestureList).SyncRoot : this;
}
}
///
/// IndexOf
///
///
///
public int IndexOf(InputGesture value)
{
return (_innerGestureList != null) ? _innerGestureList.IndexOf(value) : -1;
}
///
/// RemoveAt - Removes the item at given index
///
/// index at which item needs to be removed
public void RemoveAt(int index)
{
if (IsReadOnly)
throw new NotSupportedException(SR.Get(SRID.ReadOnlyInputGesturesCollection));
if (_innerGestureList != null)
_innerGestureList.RemoveAt(index);
}
///
/// IsFixedSize - Fixed Capacity if ReadOnly, else false.
///
public bool IsFixedSize
{
get
{
return IsReadOnly;
}
}
///
/// Add
///
///
public int Add(InputGesture inputGesture)
{
if (IsReadOnly)
{
throw new NotSupportedException(SR.Get(SRID.ReadOnlyInputGesturesCollection));
}
if (inputGesture == null)
{
throw new ArgumentNullException("inputGesture");
}
EnsureList();
_innerGestureList.Add(inputGesture);
return 0; // ICollection.Add no longer returns the indice
}
///
/// Adds the elements of the given collection to the end of this list. If
/// required, the capacity of the list is increased to twice the previous
/// capacity or the new size, whichever is larger.
///
/// collection to append
public void AddRange(ICollection collection)
{
if (IsReadOnly)
{
throw new NotSupportedException(SR.Get(SRID.ReadOnlyInputGesturesCollection));
}
if (collection == null)
throw new ArgumentNullException("collection");
if( collection.Count > 0)
{
if (_innerGestureList == null)
_innerGestureList = new System.Collections.Generic.List(collection.Count);
IEnumerator collectionEnum = collection.GetEnumerator();
while(collectionEnum.MoveNext())
{
InputGesture inputGesture = collectionEnum.Current as InputGesture;
if (inputGesture != null)
{
_innerGestureList.Add(inputGesture);
}
else
{
throw new NotSupportedException(SR.Get(SRID.CollectionOnlyAcceptsInputGestures));
}
}
}
}
///
/// Insert
///
/// index at which to insert the item
/// item value to insert
public void Insert(int index, InputGesture inputGesture)
{
if (IsReadOnly)
throw new NotSupportedException(SR.Get(SRID.ReadOnlyInputGesturesCollection));
if (inputGesture == null)
throw new NotSupportedException(SR.Get(SRID.CollectionOnlyAcceptsInputGestures));
if (_innerGestureList != null)
_innerGestureList.Insert(index, inputGesture);
}
///
/// IsReadOnly - Tells whether this is readonly Collection.
///
public bool IsReadOnly
{
get
{
return (_isReadOnly);
}
}
///
/// Remove
///
///
public void Remove(InputGesture inputGesture)
{
if (IsReadOnly)
{
throw new NotSupportedException(SR.Get(SRID.ReadOnlyInputGesturesCollection));
}
if (inputGesture == null)
{
throw new ArgumentNullException("inputGesture");
}
if (_innerGestureList != null && _innerGestureList.Contains(inputGesture))
{
_innerGestureList.Remove(inputGesture as InputGesture);
}
}
///
/// Count
///
public int Count
{
get
{
return (_innerGestureList != null ? _innerGestureList.Count : 0 );
}
}
///
/// Clears the Entire InputGestureCollection
///
public void Clear()
{
if (IsReadOnly)
{
throw new NotSupportedException(SR.Get(SRID.ReadOnlyInputGesturesCollection));
}
if (_innerGestureList != null)
{
_innerGestureList.Clear();
_innerGestureList = null;
}
}
///
/// Contains
///
/// key
/// true - if found, false - otherwise
public bool Contains(InputGesture key)
{
if (_innerGestureList != null && key != null)
{
return _innerGestureList.Contains(key) ;
}
return false;
}
///
/// CopyTo - to copy the collection starting from given index into an array
///
/// Array of InputGesture
/// start index of items to copy
public void CopyTo(InputGesture[] inputGestures, int index)
{
if (_innerGestureList != null)
_innerGestureList.CopyTo(inputGestures, index);
}
///
/// Seal the Collection by setting it as read-only.
///
public void Seal()
{
_isReadOnly = true;
}
private void EnsureList()
{
if (_innerGestureList == null)
_innerGestureList = new List(1);
}
#endregion Public
//------------------------------------------------------
//
// Protected Methods
//
//------------------------------------------------------
//-----------------------------------------------------
//
// Private Methods
//
//------------------------------------------------------
#region Internal
internal InputGesture FindMatch(object targetElement, InputEventArgs inputEventArgs)
{
for (int i = 0; i < Count; i++)
{
InputGesture inputGesture = this[i];
if (inputGesture.Matches(targetElement, inputEventArgs))
{
return inputGesture;
}
}
return null;
}
#endregion
//-----------------------------------------------------
//
// Private Fields
//
//-----------------------------------------------------
#region Private Fields
private System.Collections.Generic.List _innerGestureList;
private bool _isReadOnly = false;
#endregion Private Fields
}
}
// 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
- ReadContentAsBinaryHelper.cs
- DiagnosticTrace.cs
- dataobject.cs
- MenuItemCollectionEditorDialog.cs
- EntityDataSourceReferenceGroup.cs
- QueryOperationResponseOfT.cs
- URLAttribute.cs
- OLEDB_Util.cs
- Helpers.cs
- SQLByteStorage.cs
- CopyNodeSetAction.cs
- BaseEntityWrapper.cs
- WebSysDescriptionAttribute.cs
- versioninfo.cs
- QueueSurrogate.cs
- ImageConverter.cs
- ToolStripPanelRow.cs
- OdbcConnectionStringbuilder.cs
- DataTemplate.cs
- CaseStatement.cs
- XmlSortKey.cs
- JsonObjectDataContract.cs
- GroupQuery.cs
- TextRangeBase.cs
- WindowsFormsSynchronizationContext.cs
- XmlReflectionMember.cs
- InternalBufferOverflowException.cs
- MessageSmuggler.cs
- DocumentXPathNavigator.cs
- Figure.cs
- AspProxy.cs
- MappedMetaModel.cs
- IProvider.cs
- ExpressionLink.cs
- FunctionCommandText.cs
- SqlClientWrapperSmiStream.cs
- BinaryOperationBinder.cs
- QuerySettings.cs
- PreloadedPackages.cs
- HtmlPhoneCallAdapter.cs
- WindowsSolidBrush.cs
- PointValueSerializer.cs
- UnionCqlBlock.cs
- HttpWebRequest.cs
- DetailsViewRow.cs
- WebScriptEndpoint.cs
- RowVisual.cs
- VirtualDirectoryMappingCollection.cs
- CngAlgorithm.cs
- DbParameterHelper.cs
- MobileControlsSectionHandler.cs
- XmlDataContract.cs
- Delegate.cs
- FileDialogCustomPlacesCollection.cs
- Separator.cs
- Bits.cs
- DataGridViewDataErrorEventArgs.cs
- XmlCustomFormatter.cs
- XmlSerializationGeneratedCode.cs
- InvokeMemberBinder.cs
- _DomainName.cs
- ApplicationProxyInternal.cs
- TdsParserSessionPool.cs
- ToolStripGrip.cs
- HttpConfigurationContext.cs
- AssociationSet.cs
- PersonalizationStateQuery.cs
- QueryConverter.cs
- Bitmap.cs
- GroupDescription.cs
- RepeatBehavior.cs
- SlipBehavior.cs
- ExpressionVisitorHelpers.cs
- MemoryMappedViewAccessor.cs
- ButtonFlatAdapter.cs
- TdsParser.cs
- SelectionRange.cs
- PolicyLevel.cs
- CatalogZone.cs
- MemoryRecordBuffer.cs
- DbDataReader.cs
- ReferenceSchema.cs
- DbConnectionPoolCounters.cs
- SupportingTokenParameters.cs
- CqlIdentifiers.cs
- GridViewSortEventArgs.cs
- DBCommandBuilder.cs
- AutoGeneratedField.cs
- AdapterUtil.cs
- SizeConverter.cs
- EnglishPluralizationService.cs
- CryptoHelper.cs
- ParameterCollection.cs
- DetailsViewCommandEventArgs.cs
- BamlVersionHeader.cs
- OnOperation.cs
- PerformanceCounter.cs
- ClientTargetCollection.cs
- TableItemPattern.cs
- LineUtil.cs