StickyNoteHelper.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / MS / Internal / Controls / StickyNote / StickyNoteHelper.cs / 1305600 / StickyNoteHelper.cs

                            //---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// 
// Description: Implementation of StickyNoteControl's internal helper classes. 
//
//              See spec at http://tabletpc/longhorn/Specs/StickyNoteControlSpec.mht 
//
// History:
//  04/19/2004 - waynezen - Expose more properties and methods
//  02/17/2004 - waynezen - Moved to TabletFramework 
//  10/06/2003 - waynezen - Added Ink and snippet image supports.
//  09/02/2003 - waynezen - Created. 
// 
//---------------------------------------------------------------------------
 
using MS.Internal.Annotations.Component;
using MS.Utility;
using System;
using System.ComponentModel; 
using System.Collections;
using System.Collections.Generic; 
using System.Diagnostics; 
using System.Globalization;
using System.IO; 
using System.Reflection;
using System.Resources;
using System.Runtime.InteropServices;
using System.Runtime.Serialization; 
using System.Security;
using System.Security.Permissions; 
using System.Threading; 
using System.Windows;
using System.Windows.Annotations; 
using System.Windows.Annotations.Storage;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data; 
using System.Windows.Documents;
using System.Windows.Ink; 
using System.Windows.Input; 
using System.Windows.Media;
using System.Windows.Media.Imaging; 
using System.Windows.Resources;
using System.Windows.Markup;
using System.Windows.Shapes;
using System.Xml; 
using System.Xml.XPath;
 
namespace MS.Internal.Controls.StickyNote 
{
    //------------------------------------------------------------------------------- 
    //
    // Internal Classes
    //
    //------------------------------------------------------------------------------- 

    #region Internal Classes 
 

    // This is a helper class which is used as a lock which can lock or unlock a specified flag. The usage looks like: 
    //
    // public class Test
    // {
    //      public void MethodA() 
    //      {
    //          // A lock is needed in a scope which can block MethodB likes a event handler. 
    //          using ( LockHelper.AutoLocker locker = new LockHelper.AutoLocker(InternalLocker, LockHelper.LockFlag.SliderValueChanged) ) 
    //          {
    //              // Do some work. 
    //          }
    //      }
    //
    //      public void MethodB() 
    //      {
    //          // We don't want to handle the below if the locker is locked. 
    //          if ( !InternalLocker.IsLocked() ) 
    //          {
    //              // Do some work. 
    //          }
    //      }
    // }
    internal class LockHelper 
    {
        [Flags] 
        public enum LockFlag 
        {
            AnnotationChanged   =       0x00000001, 
            DataChanged         =       0x00000002,
        }

        public class AutoLocker : IDisposable 
        {
            public AutoLocker(LockHelper helper, LockFlag flag) 
            { 
                if(helper == null)
                { 
                    throw new ArgumentNullException("helper");
                }

                Debug.Assert(!helper.IsLocked(flag)); 
                _helper = helper;
                _flag = flag; 
 
                // Lock the locker at the object's creation time.
                _helper.Lock(_flag); 
            }

            public void Dispose()
            { 
                Debug.Assert(_helper.IsLocked(_flag));
 
                // Unlock the locker when it's being disposed. 
                _helper.Unlock(_flag);
                GC.SuppressFinalize(this); 
            }

            private AutoLocker() { }
 
            private LockHelper      _helper;
            private LockFlag        _flag; 
        } 

        public bool IsLocked(LockFlag flag) 
        {
            return ( _backingStore & flag ) != 0;
        }
 
        private void Lock(LockFlag flag)
        { 
            _backingStore |= flag; 
        }
 
        private void Unlock(LockFlag flag)
        {
            _backingStore &= ( ~flag );
        } 

        private LockFlag _backingStore; 
    } 

    // This class contains all constants which is used by StickyNoteControl component. 
    internal static class SNBConstants
    {
        //--------------------------------------------------------------------------------
        // 
        // Internal Fields
        // 
        //------------------------------------------------------------------------------- 

        #region Internal Fields 
        // The style ID of StickyNote's children
        internal const string c_CloseButtonId = "PART_CloseButton";
        internal const string c_TitleThumbId = "PART_TitleThumb";
        internal const string c_BottomRightResizeThumbId = "PART_ResizeBottomRightThumb"; 
        internal const string c_ContentControlId = "PART_ContentControl";
        internal const string c_IconButtonId = "PART_IconButton"; 
        internal const string c_CopyMenuId = "PART_CopyMenuItem"; 
        internal const string c_PasteMenuId = "PART_PasteMenuItem";
        internal const string c_ClipboardSeparatorId = "PART_ClipboardSeparator"; 
        internal const string c_DeleteMenuId = "PART_DeleteMenuItem";
        internal const string c_InkMenuId = "PART_InkMenuItem";
        internal const string c_SelectMenuId = "PART_SelectMenuItem";
        internal const string c_EraseMenuId = "PART_EraseMenuItem"; 

        // CAF Resouce guids 
        internal const string MetaResourceName  = "Meta Data";         // Snc MetaData 
        internal const string TextResourceName  = "Text Data";         // Text
        internal const string InkResourceName   = "Ink Data";          // Ink 

        #endregion Internal Fields
    }
 
    #endregion Internal Classes
 
} 

 



 


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK