File: MS\Internal\Ink\ClipboardData.cs
Web Access
Project: src\src\Microsoft.DotNet.Wpf\src\PresentationFramework\PresentationFramework.csproj (PresentationFramework)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
//
//
// Description:
//      An abstract clipboard data class
//
// Features:
//
 
 
using System;
using System.Windows;
using System.Security;
 
namespace MS.Internal.Ink
{
    internal abstract class ClipboardData
    {
        //-------------------------------------------------------------------------------
        //
        // Constructors
        //
        //-------------------------------------------------------------------------------
 
        //-------------------------------------------------------------------------------
        //
        // Internal Methods
        //
        //-------------------------------------------------------------------------------
 
        #region Internal Methods
 
        /// <summary>
        /// Copy the data to the IDataObject
        /// </summary>
        /// <param name="dataObject">The IDataObject instance</param>
        /// <returns>Returns true if the data is copied. Otherwise, returns false</returns>
        internal bool CopyToDataObject(IDataObject dataObject)
        {
            // Check if the data can be copied
            if ( CanCopy() )
            {
                // Do copy.
                DoCopy(dataObject);
                return true;
            }
 
            return false;
        }
 
        /// <summary>
        /// Paste the data from the IDataObject
        /// </summary>
        /// <param name="dataObject">The IDataObject instance</param>
        internal void PasteFromDataObject(IDataObject dataObject) 
        {
            // Check if we can paste.
            if ( CanPaste(dataObject) )
            {
                // Do Paste.
                DoPaste(dataObject);
            }
        }
 
        internal abstract bool CanPaste(IDataObject dataObject);
        
        #endregion Internal Methods
 
        //-------------------------------------------------------------------------------
        //
        // Protected Methods
        //
        //-------------------------------------------------------------------------------
 
        #region Protected Methods
 
        // Those are the abstract methods which need to be implemented in the derived classes.
        protected abstract bool CanCopy();
        protected abstract void DoCopy(IDataObject dataObject);
        protected abstract void DoPaste(IDataObject dataObject);
 
        #endregion Protected Methods
    }
}