Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Core / CSharp / System / Windows / Input / TextComposition.cs / 1 / TextComposition.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: TextComposition class is the object that contains // the input text. The text from keyboard input // is packed in this class when TextInput event is generated. // And this class also packs the state of the composition text when // the input text is being composed (for EA input, Speech). // // History: // 11/18/2003 : yutakas created // //--------------------------------------------------------------------------- using System; using System.ComponentModel; using System.Diagnostics; using System.Text; using System.Windows.Threading; using System.Windows; using System.Security; using System.Security.Permissions; using MS.Win32; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; namespace System.Windows.Input { //----------------------------------------------------- // // TextCompositionAutoComplete enum // //----------------------------------------------------- ////// The switch for automatic termination of the text composition /// public enum TextCompositionAutoComplete { ////// AutomaticComplete is off. /// Off = 0, ////// AutomaticComplete is on. /// TextInput event will be generated automatically by TextCompositionManager after /// TextInputStart event is processed. /// On = 1, } internal enum TextCompositionStage { ////// The composition is not started yet. /// None = 0, ////// The composition has started. /// Started = 1, ////// The composition has completed or canceled. /// Done = 2, } ////// Text Composition class contains the result text of the text input and the state of the composition text. /// public class TextComposition : DispatcherObject { //------------------------------------------------------ // // Constructors // //----------------------------------------------------- #region Constructors ////// The constrcutor of TextComposition class. /// public TextComposition(InputManager inputManager, IInputElement source, string resultText) : this(inputManager, source, resultText, TextCompositionAutoComplete.On) { } ////// The constrcutor of TextComposition class. /// ////// Critical: This code peeks Into InputManager.Current /// PublicOK: It does not expose the InputManager and keyboard device is safe to expose /// [SecurityCritical] public TextComposition(InputManager inputManager, IInputElement source, string resultText, TextCompositionAutoComplete autoComplete) : this(inputManager, source, resultText, autoComplete, InputManager.Current.PrimaryKeyboardDevice) { // We should avoid using Enum.IsDefined for performance and correct versioning. if ((autoComplete != TextCompositionAutoComplete.Off) && (autoComplete != TextCompositionAutoComplete.On)) { throw new InvalidEnumArgumentException("TextCompositionAutoComplete", (int)autoComplete, typeof(TextCompositionAutoComplete)); } } // // An internal constructore to specify InputDevice directly. // ////// Critical - stores critical data ( _inputManager). /// TreatAsSafe - inputmanager is stored in a non-public critical member. Usage of InputManager is tracked. /// [SecurityCritical, SecurityTreatAsSafe ] internal TextComposition(InputManager inputManager, IInputElement source, string resultText, TextCompositionAutoComplete autoComplete, InputDevice inputDevice) { _inputManager = inputManager; _inputDevice = inputDevice; if (resultText == null) { throw new ArgumentException(SR.Get(SRID.TextComposition_NullResultText)); } _resultText = resultText; _compositionText = ""; _systemText = ""; _systemCompositionText = ""; _controlText = ""; _autoComplete = autoComplete; _stage = TextCompositionStage.None; // source of this text composition. _source = source; } #endregion Constructors //------------------------------------------------------ // // Public Methods // //------------------------------------------------------ ////// Finalize the composition. /// ////// Callers must have UIPermission(PermissionState.Unrestricted) to call this API. /// ////// Critical: Calls into CompleteComposition /// PublicOk: This operation is blocked from external consumers via a link demand /// [SecurityCritical] [UIPermissionAttribute(SecurityAction.LinkDemand,Unrestricted=true)] public virtual void Complete() { // VerifyAccess(); TextCompositionManager.CompleteComposition(this); } //----------------------------------------------------- // // Public Properties // //------------------------------------------------------ ////// The result text of the text input. /// [CLSCompliant(false)] public string Text { get { // VerifyAccess(); return _resultText; } protected set { // VerifyAccess(); _resultText = value; } } ////// The current composition text. /// [CLSCompliant(false)] public string CompositionText { get { // VerifyAccess(); return _compositionText; } protected set { // VerifyAccess(); _compositionText = value; } } ////// The current system text. /// [CLSCompliant(false)] public string SystemText { get { // VerifyAccess(); return _systemText; } protected set { // VerifyAccess(); _systemText = value; } } ////// The current system text. /// [CLSCompliant(false)] public string ControlText { get { // VerifyAccess(); return _controlText; } protected set { // VerifyAccess(); _controlText = value; } } ////// The current system text. /// [CLSCompliant(false)] public string SystemCompositionText { get { // VerifyAccess(); return _systemCompositionText; } protected set { // VerifyAccess(); _systemCompositionText = value; } } ////// The switch for automatic termination. /// public TextCompositionAutoComplete AutoComplete { get { // VerifyAccess(); return _autoComplete; } } //----------------------------------------------------- // // Public Events // //----------------------------------------------------- //----------------------------------------------------- // // Protected Methods // //------------------------------------------------------ //----------------------------------------------------- // // Internal Methods // //------------------------------------------------------ ////// The current composition text. /// internal void SetText(string resultText) { _resultText = resultText; } ////// The current composition text. /// internal void SetCompositionText(string compositionText) { _compositionText = compositionText; } ////// Convert this composition to system composition. /// internal void MakeSystem() { _systemText = _resultText; _systemCompositionText = _compositionText; _resultText = ""; _compositionText = ""; _controlText = ""; } ////// Convert this composition to system composition. /// internal void MakeControl() { // Onlt control char should be in _controlText. Debug.Assert((_resultText.Length == 1) && Char.IsControl(_resultText[0])); _controlText = _resultText; _resultText = ""; _systemText = ""; _compositionText = ""; _systemCompositionText = ""; } ////// Clear all the current texts. /// internal void ClearTexts() { _resultText = ""; _compositionText = ""; _systemText = ""; _systemCompositionText = ""; _controlText = ""; } //------------------------------------------------------ // // Internal Properties // //----------------------------------------------------- ////// The source of this text composition. /// internal IInputElement Source { get { return _source; } } // return the input device for this text composition. internal InputDevice _InputDevice { get {return _inputDevice;} } // return the input manager for this text composition. ////// Gives out critical data. /// internal InputManager _InputManager { [SecurityCritical] get { return _inputManager; } } // the stage of this text composition internal TextCompositionStage Stage { get {return _stage;} set {_stage = value;} } //------------------------------------------------------ // // Internal Events // //----------------------------------------------------- //----------------------------------------------------- // // Private Methods // //----------------------------------------------------- //------------------------------------------------------ // // Private Properties // //----------------------------------------------------- //------------------------------------------------------ // // Private Fields // //------------------------------------------------------ // InputManager for this TextComposition. ////// Critical data. InputManager ctor is critical. /// [SecurityCritical] private readonly InputManager _inputManager; // InputDevice for this TextComposition. private readonly InputDevice _inputDevice; // The finalized and result string. private string _resultText; // The composition string. private string _compositionText; // The system string. private string _systemText; // The control string. private string _controlText; // The system composition string. private string _systemCompositionText; // If this is true, TextComposition Manager will terminate the compositon automatically. private readonly TextCompositionAutoComplete _autoComplete; // TextComposition stage. private TextCompositionStage _stage; // source of this text composition. private IInputElement _source; } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: TextComposition class is the object that contains // the input text. The text from keyboard input // is packed in this class when TextInput event is generated. // And this class also packs the state of the composition text when // the input text is being composed (for EA input, Speech). // // History: // 11/18/2003 : yutakas created // //--------------------------------------------------------------------------- using System; using System.ComponentModel; using System.Diagnostics; using System.Text; using System.Windows.Threading; using System.Windows; using System.Security; using System.Security.Permissions; using MS.Win32; using SR=MS.Internal.PresentationCore.SR; using SRID=MS.Internal.PresentationCore.SRID; namespace System.Windows.Input { //----------------------------------------------------- // // TextCompositionAutoComplete enum // //----------------------------------------------------- ////// The switch for automatic termination of the text composition /// public enum TextCompositionAutoComplete { ////// AutomaticComplete is off. /// Off = 0, ////// AutomaticComplete is on. /// TextInput event will be generated automatically by TextCompositionManager after /// TextInputStart event is processed. /// On = 1, } internal enum TextCompositionStage { ////// The composition is not started yet. /// None = 0, ////// The composition has started. /// Started = 1, ////// The composition has completed or canceled. /// Done = 2, } ////// Text Composition class contains the result text of the text input and the state of the composition text. /// public class TextComposition : DispatcherObject { //------------------------------------------------------ // // Constructors // //----------------------------------------------------- #region Constructors ////// The constrcutor of TextComposition class. /// public TextComposition(InputManager inputManager, IInputElement source, string resultText) : this(inputManager, source, resultText, TextCompositionAutoComplete.On) { } ////// The constrcutor of TextComposition class. /// ////// Critical: This code peeks Into InputManager.Current /// PublicOK: It does not expose the InputManager and keyboard device is safe to expose /// [SecurityCritical] public TextComposition(InputManager inputManager, IInputElement source, string resultText, TextCompositionAutoComplete autoComplete) : this(inputManager, source, resultText, autoComplete, InputManager.Current.PrimaryKeyboardDevice) { // We should avoid using Enum.IsDefined for performance and correct versioning. if ((autoComplete != TextCompositionAutoComplete.Off) && (autoComplete != TextCompositionAutoComplete.On)) { throw new InvalidEnumArgumentException("TextCompositionAutoComplete", (int)autoComplete, typeof(TextCompositionAutoComplete)); } } // // An internal constructore to specify InputDevice directly. // ////// Critical - stores critical data ( _inputManager). /// TreatAsSafe - inputmanager is stored in a non-public critical member. Usage of InputManager is tracked. /// [SecurityCritical, SecurityTreatAsSafe ] internal TextComposition(InputManager inputManager, IInputElement source, string resultText, TextCompositionAutoComplete autoComplete, InputDevice inputDevice) { _inputManager = inputManager; _inputDevice = inputDevice; if (resultText == null) { throw new ArgumentException(SR.Get(SRID.TextComposition_NullResultText)); } _resultText = resultText; _compositionText = ""; _systemText = ""; _systemCompositionText = ""; _controlText = ""; _autoComplete = autoComplete; _stage = TextCompositionStage.None; // source of this text composition. _source = source; } #endregion Constructors //------------------------------------------------------ // // Public Methods // //------------------------------------------------------ ////// Finalize the composition. /// ////// Callers must have UIPermission(PermissionState.Unrestricted) to call this API. /// ////// Critical: Calls into CompleteComposition /// PublicOk: This operation is blocked from external consumers via a link demand /// [SecurityCritical] [UIPermissionAttribute(SecurityAction.LinkDemand,Unrestricted=true)] public virtual void Complete() { // VerifyAccess(); TextCompositionManager.CompleteComposition(this); } //----------------------------------------------------- // // Public Properties // //------------------------------------------------------ ////// The result text of the text input. /// [CLSCompliant(false)] public string Text { get { // VerifyAccess(); return _resultText; } protected set { // VerifyAccess(); _resultText = value; } } ////// The current composition text. /// [CLSCompliant(false)] public string CompositionText { get { // VerifyAccess(); return _compositionText; } protected set { // VerifyAccess(); _compositionText = value; } } ////// The current system text. /// [CLSCompliant(false)] public string SystemText { get { // VerifyAccess(); return _systemText; } protected set { // VerifyAccess(); _systemText = value; } } ////// The current system text. /// [CLSCompliant(false)] public string ControlText { get { // VerifyAccess(); return _controlText; } protected set { // VerifyAccess(); _controlText = value; } } ////// The current system text. /// [CLSCompliant(false)] public string SystemCompositionText { get { // VerifyAccess(); return _systemCompositionText; } protected set { // VerifyAccess(); _systemCompositionText = value; } } ////// The switch for automatic termination. /// public TextCompositionAutoComplete AutoComplete { get { // VerifyAccess(); return _autoComplete; } } //----------------------------------------------------- // // Public Events // //----------------------------------------------------- //----------------------------------------------------- // // Protected Methods // //------------------------------------------------------ //----------------------------------------------------- // // Internal Methods // //------------------------------------------------------ ////// The current composition text. /// internal void SetText(string resultText) { _resultText = resultText; } ////// The current composition text. /// internal void SetCompositionText(string compositionText) { _compositionText = compositionText; } ////// Convert this composition to system composition. /// internal void MakeSystem() { _systemText = _resultText; _systemCompositionText = _compositionText; _resultText = ""; _compositionText = ""; _controlText = ""; } ////// Convert this composition to system composition. /// internal void MakeControl() { // Onlt control char should be in _controlText. Debug.Assert((_resultText.Length == 1) && Char.IsControl(_resultText[0])); _controlText = _resultText; _resultText = ""; _systemText = ""; _compositionText = ""; _systemCompositionText = ""; } ////// Clear all the current texts. /// internal void ClearTexts() { _resultText = ""; _compositionText = ""; _systemText = ""; _systemCompositionText = ""; _controlText = ""; } //------------------------------------------------------ // // Internal Properties // //----------------------------------------------------- ////// The source of this text composition. /// internal IInputElement Source { get { return _source; } } // return the input device for this text composition. internal InputDevice _InputDevice { get {return _inputDevice;} } // return the input manager for this text composition. ////// Gives out critical data. /// internal InputManager _InputManager { [SecurityCritical] get { return _inputManager; } } // the stage of this text composition internal TextCompositionStage Stage { get {return _stage;} set {_stage = value;} } //------------------------------------------------------ // // Internal Events // //----------------------------------------------------- //----------------------------------------------------- // // Private Methods // //----------------------------------------------------- //------------------------------------------------------ // // Private Properties // //----------------------------------------------------- //------------------------------------------------------ // // Private Fields // //------------------------------------------------------ // InputManager for this TextComposition. ////// Critical data. InputManager ctor is critical. /// [SecurityCritical] private readonly InputManager _inputManager; // InputDevice for this TextComposition. private readonly InputDevice _inputDevice; // The finalized and result string. private string _resultText; // The composition string. private string _compositionText; // The system string. private string _systemText; // The control string. private string _controlText; // The system composition string. private string _systemCompositionText; // If this is true, TextComposition Manager will terminate the compositon automatically. private readonly TextCompositionAutoComplete _autoComplete; // TextComposition stage. private TextCompositionStage _stage; // source of this text composition. private IInputElement _source; } } // 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
- InsufficientMemoryException.cs
- DrawingDrawingContext.cs
- NameHandler.cs
- TypefaceCollection.cs
- ApplicationSecurityManager.cs
- DataGridSortCommandEventArgs.cs
- WebPartEventArgs.cs
- TextFormatter.cs
- CodeTypeReferenceSerializer.cs
- SmtpAuthenticationManager.cs
- VirtualPathProvider.cs
- PnrpPermission.cs
- UniqueConstraint.cs
- dataprotectionpermissionattribute.cs
- DynamicUpdateCommand.cs
- FtpWebRequest.cs
- CustomErrorCollection.cs
- TreeViewHitTestInfo.cs
- SqlFacetAttribute.cs
- InternalControlCollection.cs
- HttpFileCollection.cs
- BamlWriter.cs
- AnnotationService.cs
- ApplicationSettingsBase.cs
- WebPartRestoreVerb.cs
- SqlProvider.cs
- InitializationEventAttribute.cs
- ImageInfo.cs
- ObjectItemCollection.cs
- AutomationIdentifier.cs
- AstNode.cs
- TextPatternIdentifiers.cs
- DiscriminatorMap.cs
- DataGridViewToolTip.cs
- DataListItem.cs
- CommandValueSerializer.cs
- RuleAction.cs
- SelectionManager.cs
- DataGridColumnHeader.cs
- Mapping.cs
- TreeViewEvent.cs
- AttributeProviderAttribute.cs
- SystemGatewayIPAddressInformation.cs
- ServicesExceptionNotHandledEventArgs.cs
- PositiveTimeSpanValidator.cs
- LogicalMethodInfo.cs
- CommentEmitter.cs
- FilterEventArgs.cs
- ApplyHostConfigurationBehavior.cs
- XmlSerializerVersionAttribute.cs
- formatter.cs
- GatewayDefinition.cs
- ProfessionalColors.cs
- SurrogateEncoder.cs
- PartialCachingControl.cs
- StructuredTypeEmitter.cs
- SafeNativeMethodsOther.cs
- DataGridColumnFloatingHeader.cs
- IncrementalHitTester.cs
- SafeFindHandle.cs
- StartUpEventArgs.cs
- PrintingPermissionAttribute.cs
- ValueQuery.cs
- PeerApplicationLaunchInfo.cs
- TerminatorSinks.cs
- MethodCallConverter.cs
- SmtpReplyReader.cs
- ConnectionPointCookie.cs
- XmlQueryCardinality.cs
- ProfileService.cs
- ApplicationDirectoryMembershipCondition.cs
- SafeCryptContextHandle.cs
- DesignerEditorPartChrome.cs
- FileAuthorizationModule.cs
- ListViewCommandEventArgs.cs
- Speller.cs
- AuthenticationService.cs
- WinFormsSecurity.cs
- PeerNameRegistration.cs
- CachedPathData.cs
- BamlCollectionHolder.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- DataGridViewRowConverter.cs
- MessageQueueEnumerator.cs
- XmlTextReaderImplHelpers.cs
- WindowShowOrOpenTracker.cs
- ToolStripProgressBar.cs
- TextSelectionHelper.cs
- IgnoreDeviceFilterElementCollection.cs
- DataList.cs
- XXXOnTypeBuilderInstantiation.cs
- AsymmetricCryptoHandle.cs
- EntityDataSourceView.cs
- QilStrConcat.cs
- TypedRowGenerator.cs
- BufferedGenericXmlSecurityToken.cs
- BrowserCapabilitiesFactory.cs
- BezierSegment.cs
- XmlNodeChangedEventManager.cs
- Environment.cs