/* @(#)Z 1.20 com/src/storage/idl/Clipbd.idl, oddataxfer, od96nt, odnt9712d 97/03/21 16:48:46 (96/10/29 09:32:09) */


#ifndef _CLIPBD_
#define _CLIPBD_

#ifndef _ODOBJECT_
#include "ODObject.idl"
#endif

//=====================================================================================
// Classes defined in this interface
//=====================================================================================
interface  ODClipboard;

//=====================================================================================
// Classes used by this interface
//=====================================================================================
interface  ODStorageUnit;
interface  ODDraft;
interface  ODPlatformTypeList;
#if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_AIX_)
interface  ODFacet;
interface  ODTypeList;
#endif 
#ifdef _PLATFORM_OS2_
interface  ODTypeList;
interface  ODPart;
interface OrderedCollection;
#endif

//=====================================================================================
// Implementation Types
//=====================================================================================
#define PROMISEKEEPER
#ifdef _PLATFORM_WIN32_
#ifdef PROMISEKEEPER
typedef somToken OLEPromiseKeeper;
#endif
typedef somToken DWORD;
//typedef somToken HWND;
typedef somToken LPVOID;
typedef somToken POINTL;
typedef somToken Handle;
typedef somToken ODOLEManager;
#endif 
#ifdef _PLATFORM_OS2_
#endif

//=====================================================================================
// ODClipboard
//=====================================================================================

interface ODClipboard :  ODObject
{
	ODUpdateID GetUpdateID();

	void Clear();

	ODStorageUnit GetContentStorageUnit();

	ODUpdateID ActionDone(in ODCloneKind cloneKind);

	void ActionUndone(in ODUpdateID update, in ODCloneKind originalCloneKind);

	void ActionRedone(in ODUpdateID update, in ODCloneKind originalCloneKind);

	void SetPlatformClipboard(in ODPlatformTypeList typeList);

	void ExportClipboard();

	void DraftSaved(in ODDraft draft);

	void DraftClosing(in ODDraft draft);
#if defined(_PLATFORM_WIN32_) || defined(_PLATFORM_AIX_)
	ODBoolean CanEmbed();
#endif

#if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)

	ODBoolean ShowPasteAsDialog(
					in		ODBoolean				canPasteLink,
					in		ODPasteAsMergeSetting	mergeSetting,
					in		ODFacet					facet,
					in		ODTypeToken				viewType,
					out		ODPasteAsResult			theResult);

#endif 

#ifdef _PLATFORM_OS2_
        ODBoolean RegisterClipboardFormat(in ODType odType,
                                    in ODPlatformType odPlatformType,
                                    in ODULong formatInfo );

        ODBoolean DeregisterClipboardFormat(in ODType odType );
        ODBoolean CanEmbed();                         // [140007]
        ODBoolean CanIncorporate(in ODType kind);     // [140007]
#endif

#ifdef __SOMIDL__
#if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_WIN32_) || defined(_PLATFORM_OS2_) || defined(_PLATFORM_AIX_)
	implementation
	{
		majorversion = 1; minorversion = 0;

		functionprefix = ODClipboard;

		override:
			somUninit,
			Purge;

		releaseorder:
			GetUpdateID,
			Clear,
			GetContentStorageUnit,
			ActionDone,
			ActionUndone,         
			ActionRedone,
			SetPlatformClipboard,
			ExportClipboard,
			DraftSaved,
			DraftClosing,
			ShowPasteAsDialog,
                #ifdef _PLATFORM_WIN32_
                        PlatformClipboardHasType,
                        ClipboardChanged,
			CanEmbed,
                        ReservedA,
                        ReservedB,
                #endif // _PLATFORM_WIN32_
                #ifdef _PLATFORM_OS2_
                        RegisterClipboardFormat,
                        DeregisterClipboardFormat,
                        CanEmbed,
                        CanIncorporate,
                        PutContentOnPlatformClipboard,
                #endif // _PLATFORM_OS2_
                #if defined(_PLATFORM_MACINTOSH_) || defined(_PLATFORM_AIX_)
                        PutContentOnPlatformClipboard,
                        CanEmbed,
                        ReservedA,
                        ReservedB,
                        ReservedC,
                #endif // MAC or AIX
			reserved1,
			reserved2,
			reserved3,
			reserved4,
			reserved5,
			reserved6,
			reserved7,
			reserved8,
			reserved9,
			reserved10;


  };
#endif 
#endif 
};

#endif // _CLIPBD_
