Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / MS / Internal / Ink / EditBehavior.cs / 1 / EditBehavior.cs
//---------------------------------------------------------------------------- // // File: EditingBehavior.cs // // Description: // Base EditingBehavior for InkCanvas // Features: // // History: // 4/29/2003 waynezen: Rewrote for mid-stroke support // 3/15/2003 samgeo: Created // // Copyright (C) 2003 by Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Windows.Input; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Interop; using System.Windows.Navigation; using System.Windows.Media; namespace MS.Internal.Ink { ////// Base class for all EditingBehaviors in the InkCanvas /// Please see the design detain at http://tabletpc/longhorn/Specs/Mid-Stroke%20and%20Pen%20Cursor%20Dev%20Design.mht /// internal abstract class EditingBehavior { //------------------------------------------------------------------------------- // // Constructors // //------------------------------------------------------------------------------- #region Constructors ////// Constructor /// /// EditngCoordinator instance /// InkCanvas instance internal EditingBehavior(EditingCoordinator editingCoordinator, InkCanvas inkCanvas) { if (inkCanvas == null) { throw new ArgumentNullException("inkCanvas"); } if (editingCoordinator == null) { throw new ArgumentNullException("editingCoordinator"); } _inkCanvas = inkCanvas; _editingCoordinator = editingCoordinator; } #endregion Constructors //-------------------------------------------------------------------------------- // // Public Methods // //------------------------------------------------------------------------------- #region Public Methods ////// An internal method which should be called from: /// EditingCoordinator.PushEditingBehavior /// EditingCoordinator.PopEditingBehavior /// The mehod's called when the behavior switching occurs. /// public void Activate() { // Debug verification which will never be compiled into release bits. EditingCoordinator.DebugCheckActiveBehavior(this); // Invoke the virtual OnActivate method. OnActivate(); } ////// An internal method which should be called from: /// EditingCoordinator.PushEditingBehavior /// EditingCoordinator.PopEditingBehavior /// The mehod's called when the behavior switching occurs. /// public void Deactivate() { // Debug verification which will never be compiled into release bits. EditingCoordinator.DebugCheckActiveBehavior(this); // Invoke the virtual OnDeactivate method. OnDeactivate(); } ////// An internal method which should be called from: /// EditingCoordinator.OnInkCanvasStylusUp /// EditingCoordinator.OnInkCanvasLostStylusCapture /// EditingCoordinator.UpdateEditingState /// The mehod's called when the current editing state is committed or discarded. /// /// A flag which indicates either editing is committed or discarded public void Commit(bool commit) { // Debug verification which will never be compiled into release bits. EditingCoordinator.DebugCheckActiveBehavior(this); // Invoke the virtual OnCommit method. OnCommit(commit); } ////// UpdateTransform /// Called by: EditingCoordinator.InvalidateBehaviorCursor /// public void UpdateTransform() { if ( !EditingCoordinator.IsTransformValid(this) ) { OnTransformChanged(); } } #endregion Public Methods //-------------------------------------------------------------------------------- // // Public Properties // //-------------------------------------------------------------------------------- #region Public Properties ////// Retrieve the cursor which is associated to this behavior. /// The method which should be called from: /// EditingCoordinator.InvalidateCursor /// EditingCoordinator.PushEditingBehavior /// EditingCoordinator.PopEditingBehavior /// ///The current cursor public Cursor Cursor { get { // If the cursor instance hasn't been created or is dirty, we will create a new instance. if ( _cachedCursor == null || !EditingCoordinator.IsCursorValid(this) ) { // Invoke the virtual method to get cursor. Then cache it. _cachedCursor = GetCurrentCursor(); } return _cachedCursor; } } #endregion Public Properties //------------------------------------------------------------------------------- // // Protected Methods // //-------------------------------------------------------------------------------- #region Protected Methods ////// Called when the EditingBehavior is activated. EditingBehaviors /// should register for event handlers in this call /// Called from: /// EditingBehavior.Activate /// protected abstract void OnActivate(); ////// Called when the EditingBehavior is deactivated. EditingBehaviors /// should unregister from event handlers in this call /// Called from: /// EditingBehavior.Deactivate /// protected abstract void OnDeactivate(); ////// Called when the user editing is committed or discarded. /// Called from: /// EditingBehavior.Commit /// /// A flag which indicates either editing is committed or discarded protected abstract void OnCommit(bool commit); ////// Called when the new cursor instance is required. /// Called from: /// EditingBehavior.GetCursor /// ///protected abstract Cursor GetCurrentCursor(); /// /// Unload the dynamic behavior. The method should be only called from: /// SelectionEditingBehavior /// LassoSelectionBehavior /// protected void SelfDeactivate() { EditingCoordinator.DeactivateDynamicBehavior(); } ////// Calculate the transform which is accumalated with the InkCanvas' XXXTransform properties. /// ///protected Matrix GetElementTransformMatrix() { Transform layoutTransform = this.InkCanvas.LayoutTransform; Transform renderTransform = this.InkCanvas.RenderTransform; Matrix xf = layoutTransform.Value; xf *= renderTransform.Value; return xf; } /// /// OnTransformChanged /// protected virtual void OnTransformChanged() { // Defer to derived. } #endregion Protected Methods //------------------------------------------------------------------------------- // // Protected Properties // //------------------------------------------------------------------------------- #region Protected Properties ////// Provides access to the InkCanvas this EditingBehavior is attached to /// ///protected InkCanvas InkCanvas { get { return _inkCanvas; } } /// /// Provides access to the EditingStack this EditingBehavior is on /// ///protected EditingCoordinator EditingCoordinator { get { return _editingCoordinator; } } #endregion Protected Properties //------------------------------------------------------------------------------- // // Protected Fields // //-------------------------------------------------------------------------------- #region Private Fields /// /// The InkCanvas this EditingBehavior is operating on /// private InkCanvas _inkCanvas; ////// The EditingStack this EditingBehavior is on /// private EditingCoordinator _editingCoordinator; ////// Fields related to the cursor /// private Cursor _cachedCursor; #endregion Private Fields } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // // File: EditingBehavior.cs // // Description: // Base EditingBehavior for InkCanvas // Features: // // History: // 4/29/2003 waynezen: Rewrote for mid-stroke support // 3/15/2003 samgeo: Created // // Copyright (C) 2003 by Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.ComponentModel; using System.ComponentModel.Design; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Windows.Input; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Interop; using System.Windows.Navigation; using System.Windows.Media; namespace MS.Internal.Ink { ////// Base class for all EditingBehaviors in the InkCanvas /// Please see the design detain at http://tabletpc/longhorn/Specs/Mid-Stroke%20and%20Pen%20Cursor%20Dev%20Design.mht /// internal abstract class EditingBehavior { //------------------------------------------------------------------------------- // // Constructors // //------------------------------------------------------------------------------- #region Constructors ////// Constructor /// /// EditngCoordinator instance /// InkCanvas instance internal EditingBehavior(EditingCoordinator editingCoordinator, InkCanvas inkCanvas) { if (inkCanvas == null) { throw new ArgumentNullException("inkCanvas"); } if (editingCoordinator == null) { throw new ArgumentNullException("editingCoordinator"); } _inkCanvas = inkCanvas; _editingCoordinator = editingCoordinator; } #endregion Constructors //-------------------------------------------------------------------------------- // // Public Methods // //------------------------------------------------------------------------------- #region Public Methods ////// An internal method which should be called from: /// EditingCoordinator.PushEditingBehavior /// EditingCoordinator.PopEditingBehavior /// The mehod's called when the behavior switching occurs. /// public void Activate() { // Debug verification which will never be compiled into release bits. EditingCoordinator.DebugCheckActiveBehavior(this); // Invoke the virtual OnActivate method. OnActivate(); } ////// An internal method which should be called from: /// EditingCoordinator.PushEditingBehavior /// EditingCoordinator.PopEditingBehavior /// The mehod's called when the behavior switching occurs. /// public void Deactivate() { // Debug verification which will never be compiled into release bits. EditingCoordinator.DebugCheckActiveBehavior(this); // Invoke the virtual OnDeactivate method. OnDeactivate(); } ////// An internal method which should be called from: /// EditingCoordinator.OnInkCanvasStylusUp /// EditingCoordinator.OnInkCanvasLostStylusCapture /// EditingCoordinator.UpdateEditingState /// The mehod's called when the current editing state is committed or discarded. /// /// A flag which indicates either editing is committed or discarded public void Commit(bool commit) { // Debug verification which will never be compiled into release bits. EditingCoordinator.DebugCheckActiveBehavior(this); // Invoke the virtual OnCommit method. OnCommit(commit); } ////// UpdateTransform /// Called by: EditingCoordinator.InvalidateBehaviorCursor /// public void UpdateTransform() { if ( !EditingCoordinator.IsTransformValid(this) ) { OnTransformChanged(); } } #endregion Public Methods //-------------------------------------------------------------------------------- // // Public Properties // //-------------------------------------------------------------------------------- #region Public Properties ////// Retrieve the cursor which is associated to this behavior. /// The method which should be called from: /// EditingCoordinator.InvalidateCursor /// EditingCoordinator.PushEditingBehavior /// EditingCoordinator.PopEditingBehavior /// ///The current cursor public Cursor Cursor { get { // If the cursor instance hasn't been created or is dirty, we will create a new instance. if ( _cachedCursor == null || !EditingCoordinator.IsCursorValid(this) ) { // Invoke the virtual method to get cursor. Then cache it. _cachedCursor = GetCurrentCursor(); } return _cachedCursor; } } #endregion Public Properties //------------------------------------------------------------------------------- // // Protected Methods // //-------------------------------------------------------------------------------- #region Protected Methods ////// Called when the EditingBehavior is activated. EditingBehaviors /// should register for event handlers in this call /// Called from: /// EditingBehavior.Activate /// protected abstract void OnActivate(); ////// Called when the EditingBehavior is deactivated. EditingBehaviors /// should unregister from event handlers in this call /// Called from: /// EditingBehavior.Deactivate /// protected abstract void OnDeactivate(); ////// Called when the user editing is committed or discarded. /// Called from: /// EditingBehavior.Commit /// /// A flag which indicates either editing is committed or discarded protected abstract void OnCommit(bool commit); ////// Called when the new cursor instance is required. /// Called from: /// EditingBehavior.GetCursor /// ///protected abstract Cursor GetCurrentCursor(); /// /// Unload the dynamic behavior. The method should be only called from: /// SelectionEditingBehavior /// LassoSelectionBehavior /// protected void SelfDeactivate() { EditingCoordinator.DeactivateDynamicBehavior(); } ////// Calculate the transform which is accumalated with the InkCanvas' XXXTransform properties. /// ///protected Matrix GetElementTransformMatrix() { Transform layoutTransform = this.InkCanvas.LayoutTransform; Transform renderTransform = this.InkCanvas.RenderTransform; Matrix xf = layoutTransform.Value; xf *= renderTransform.Value; return xf; } /// /// OnTransformChanged /// protected virtual void OnTransformChanged() { // Defer to derived. } #endregion Protected Methods //------------------------------------------------------------------------------- // // Protected Properties // //------------------------------------------------------------------------------- #region Protected Properties ////// Provides access to the InkCanvas this EditingBehavior is attached to /// ///protected InkCanvas InkCanvas { get { return _inkCanvas; } } /// /// Provides access to the EditingStack this EditingBehavior is on /// ///protected EditingCoordinator EditingCoordinator { get { return _editingCoordinator; } } #endregion Protected Properties //------------------------------------------------------------------------------- // // Protected Fields // //-------------------------------------------------------------------------------- #region Private Fields /// /// The InkCanvas this EditingBehavior is operating on /// private InkCanvas _inkCanvas; ////// The EditingStack this EditingBehavior is on /// private EditingCoordinator _editingCoordinator; ////// Fields related to the cursor /// private Cursor _cachedCursor; #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
- ColorAnimationUsingKeyFrames.cs
- NumericUpDownAccelerationCollection.cs
- UdpRetransmissionSettings.cs
- ModulesEntry.cs
- Literal.cs
- HostingEnvironmentWrapper.cs
- HiddenFieldPageStatePersister.cs
- Utils.cs
- WebPartDescriptionCollection.cs
- AnnotationAdorner.cs
- DesignTimeDataBinding.cs
- TransformedBitmap.cs
- DebuggerAttributes.cs
- ContentPlaceHolder.cs
- AbstractDataSvcMapFileLoader.cs
- TextDpi.cs
- ControlBuilder.cs
- DefaultMemberAttribute.cs
- ErrorItem.cs
- CustomAttributeBuilder.cs
- Propagator.Evaluator.cs
- SafeRegistryHandle.cs
- ObjectView.cs
- DataGridCaption.cs
- DbDeleteCommandTree.cs
- SizeChangedEventArgs.cs
- DataStreamFromComStream.cs
- XamlSerializerUtil.cs
- PrintEvent.cs
- XmlSerializerVersionAttribute.cs
- PasswordBox.cs
- SuppressMergeCheckAttribute.cs
- FormView.cs
- PriorityBindingExpression.cs
- ResourcesBuildProvider.cs
- ReaderWriterLockWrapper.cs
- XsdValidatingReader.cs
- HtmlInputPassword.cs
- DataRelation.cs
- TextEffectResolver.cs
- FixedHighlight.cs
- TypeDescriptionProviderAttribute.cs
- WebPartDescription.cs
- SimpleTypeResolver.cs
- ControllableStoryboardAction.cs
- BaseDataListActionList.cs
- RewritingSimplifier.cs
- SqlNotificationRequest.cs
- FlowLayoutSettings.cs
- ExpressionVisitor.cs
- ObjectDataSourceChooseTypePanel.cs
- GridViewCancelEditEventArgs.cs
- ExpressionBuilderCollection.cs
- SqlXml.cs
- SoapExtensionStream.cs
- XmlProcessingInstruction.cs
- MenuItemCollection.cs
- DesignTimeHTMLTextWriter.cs
- DoubleIndependentAnimationStorage.cs
- TemplateControlBuildProvider.cs
- ExpressionCopier.cs
- SourceItem.cs
- BlurBitmapEffect.cs
- CompilerGeneratedAttribute.cs
- TargetParameterCountException.cs
- AndMessageFilter.cs
- PropertyValueUIItem.cs
- TemplateBindingExpressionConverter.cs
- XmlElementAttributes.cs
- ToReply.cs
- LogicalExpressionEditor.cs
- GrammarBuilderPhrase.cs
- SequentialUshortCollection.cs
- linebase.cs
- StylusTip.cs
- EntityDataSourceUtil.cs
- DynamicEndpointElement.cs
- PageStatePersister.cs
- COM2PropertyDescriptor.cs
- infer.cs
- ImpersonationContext.cs
- ForEachAction.cs
- FlowDocumentReaderAutomationPeer.cs
- ProcessInfo.cs
- _UncName.cs
- PartialTrustHelpers.cs
- UTF7Encoding.cs
- StyleXamlParser.cs
- ComponentChangingEvent.cs
- ResourcePermissionBaseEntry.cs
- _ScatterGatherBuffers.cs
- MessageFilterTable.cs
- ProtocolsConfiguration.cs
- ValuePattern.cs
- HttpFileCollection.cs
- WebContext.cs
- LocalizableAttribute.cs
- CookielessHelper.cs
- SectionXmlInfo.cs
- PointAnimationBase.cs