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
- SqlTypeSystemProvider.cs
- AddValidationError.cs
- ImageAutomationPeer.cs
- _IPv6Address.cs
- UITypeEditors.cs
- DbProviderConfigurationHandler.cs
- MimeTypeMapper.cs
- FormatConvertedBitmap.cs
- RelationshipConstraintValidator.cs
- DataStreams.cs
- SmiEventSink_Default.cs
- Formatter.cs
- PassportIdentity.cs
- DataGridViewCellStyle.cs
- StickyNoteHelper.cs
- BindingExpression.cs
- PopOutPanel.cs
- IriParsingElement.cs
- ProxySimple.cs
- ErrorTableItemStyle.cs
- InheritanceService.cs
- FileEnumerator.cs
- basevalidator.cs
- ConnectivityStatus.cs
- Types.cs
- Style.cs
- KeyGesture.cs
- ActivityDesignerHighlighter.cs
- ToolStripPanelCell.cs
- StringPropertyBuilder.cs
- ServiceX509SecurityTokenProvider.cs
- PersistChildrenAttribute.cs
- EventProviderTraceListener.cs
- PeerEndPoint.cs
- DnsPermission.cs
- _CookieModule.cs
- GridViewRowCollection.cs
- CodeRegionDirective.cs
- AttributeCollection.cs
- BufferAllocator.cs
- ProtectedConfiguration.cs
- DbConnectionOptions.cs
- ZipIOBlockManager.cs
- OutputScope.cs
- CapacityStreamGeometryContext.cs
- BamlRecordWriter.cs
- SafeNativeMethodsOther.cs
- XmlBinaryWriterSession.cs
- EventProperty.cs
- ExpressionBuilder.cs
- GenericPrincipal.cs
- RegistryDataKey.cs
- PopupRoot.cs
- ChannelPool.cs
- AmbientLight.cs
- UseLicense.cs
- Axis.cs
- DataGridViewRowsAddedEventArgs.cs
- MultipartContentParser.cs
- TripleDESCryptoServiceProvider.cs
- ImportContext.cs
- Manipulation.cs
- PropertyPath.cs
- BlockExpression.cs
- CommentEmitter.cs
- SelectionItemPattern.cs
- XPathDescendantIterator.cs
- XmlComplianceUtil.cs
- ApplicationBuildProvider.cs
- DecoderFallback.cs
- ClientRuntimeConfig.cs
- RegexGroupCollection.cs
- BitmapEffect.cs
- NativeCompoundFileAPIs.cs
- GroupItemAutomationPeer.cs
- DefaultHttpHandler.cs
- BuildProviderAppliesToAttribute.cs
- ServiceOperationParameter.cs
- ObjectDataSourceDesigner.cs
- EventProviderWriter.cs
- ContentIterators.cs
- PropertyTab.cs
- EncryptedData.cs
- TransformGroup.cs
- exports.cs
- ComponentRenameEvent.cs
- XmlAttributeAttribute.cs
- InvalidPipelineStoreException.cs
- ChangesetResponse.cs
- WebBrowserPermission.cs
- HttpVersion.cs
- ImportContext.cs
- DataBindingHandlerAttribute.cs
- UIAgentMonitor.cs
- HWStack.cs
- ScrollBarRenderer.cs
- RequestSecurityToken.cs
- Comparer.cs
- DatatypeImplementation.cs
- ToolStripContentPanel.cs