InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
CDataExchangeController Class Referenceabstract

#include <CDataExchangeController.h>

Inheritance diagram for CDataExchangeController:
IDataExchangeControllerIPMUnknownIClipboardControllerIDragDropControllerILibraryScrapController

Public Member Functions

 CDataExchangeController (IPMUnknown *boss)
 
virtual void ReadWrite (IPMStream *s, ImplementationID prop)
 
virtual void RegisterAllHandlers ()
 
virtual bool16 RegisterDataHandler (ClassID dataClass)
 
virtual IDataExchangeHandlerNewDataHandler (ClassID dataClass) const
 
virtual IDataExchangeHandlerQueryHandler (const PMFlavor &scrapFlavor) const
 
virtual IDataExchangeHandlerQueryHandler (const ExternalPMFlavor &fromFlavor, const PMFlavor &toFlavor) const
 
virtual IDataExchangeHandlerQueryHandlerForInternalize (DataExchangeResponse &response, const PMFlavor &internalizeToThisFlavor=kNoFlavor) const =0
 
virtual void GetInternalizeableFlavors (OrderedFlavorList &flavorList) const
 
virtual IDataExchangeHandlerQueryActiveHandler () const
 
virtual void SetActiveHandler (IDataExchangeHandler *activeHandler)
 
virtual bool16 NeedsToInternalize () const =0
 
virtual IDataBaseGetScrapDataBase () const
 
virtual ErrorCode Initialize ()
 
virtual bool16 IsValid () const
 
virtual void Cleanup ()
 
virtual void Purge (int32 level)
 
void AllowPurge ()
 
void DisallowPurge ()
 
bool PurgeIsAllowed () const
 
- Public Member Functions inherited from IDataExchangeController
virtual ErrorCode FulfillPromise (IPMDataObject *whichItem, const ExternalPMFlavor &whichFlavor) const =0
 
- Public Member Functions inherited from IPMUnknown
virtual IPMUnknownQueryInterface (PMIID interfaceID) const =0
 
virtual void AddRef () const =0
 
virtual void Release () const =0
 

Static Public Member Functions

static void Purge (int32 level, void *refPtr)
 

Protected Member Functions

virtual IDataExchangeHandlerQueryHandlerToInternalizeData (IPMDataObject *whichItem, DataExchangeResponse &response, const PMFlavor &toFlavor) const
 
virtual IDataExchangeHandlerQueryHandlerToInternalizeData (DataObjectIterator &dataIter, DataExchangeResponse &response, const PMFlavor &toFlavor) const
 
virtual ClassID GetScrapDocBossID () const
 
virtual PMString GetScrapDBFileName () const =0
 
virtual IDataBaseCreateDataBase () const =0
 
virtual void ResetMagicBytes () const =0
 
virtual ErrorCode InitializeScrap ()
 
virtual ErrorCode RevertScrap ()
 
virtual void RunNewScrapResponders ()
 
virtual bool16 IsClipboardExternal () const
 
IDataExchangeHandlerGetActiveHandler () const
 
virtual IDataExchangeHandlerQueryCachedHandler () const
 
virtual void SetCachedHandler (IDataExchangeHandler *handlerToCache)
 

Protected Attributes

bool16 fInitialized
 
ErrorCode fInitializationErrorCode
 
IDataBasefScrapDB
 
UID fScrapDocID
 
bool16 fScrapDBFailed
 
IPMUnknownfRoot
 
int32 fAllowPurge
 
bool16 fDataHandlersRegistered
 
K2Vector
< DataExchangeHandlerEntry
fDataHandlers
 
IDataExchangeHandlerfActiveHandler
 
IDataExchangeHandlerfCachedHandler
 

Friends

class DataExchangeTest
 

Additional Inherited Members

- Public Types inherited from IDataExchangeController
enum  { kDefaultIID = IID_IDATAEXCHANGECONTROLLER }
 

Detailed Description

CDataExchangeController Shared implementation for Clipboard, DragDrop, Mac OSX Services and LibraryScrap controllers. Should also serve as the base class for all custom data exchange controller implementations

See Also
IDataExchangeController

Member Function Documentation

virtual void CDataExchangeController::Cleanup ()
virtual

Release referenced objects and destroy database, or return it to a known empty state

Implements IDataExchangeController.

Reimplemented in ILibraryScrapController.

virtual IDataBase* CDataExchangeController::CreateDataBase () const
protectedpure virtual

Create the actual database. This solves a link circularity. Subclasses must set magic bytes to something appropriate!

virtual void CDataExchangeController::GetInternalizeableFlavors (OrderedFlavorListflavorList) const
virtual

Iterate over all IDataExchangeHandlers in the object model and return the collection of internalizeable flavors.

Implements IDataExchangeController.

virtual IDataBase* CDataExchangeController::GetScrapDataBase () const
virtual

Return the scrap database managed by this controller instance.

Implements IDataExchangeController.

virtual PMString CDataExchangeController::GetScrapDBFileName () const
protectedpure virtual

Return name to use for this scrap db file - must be unique to each controller implementation

virtual ClassID CDataExchangeController::GetScrapDocBossID () const
protectedvirtual

Return the bossID of the doc boss to use, default is kScrapDocBoss

virtual ErrorCode CDataExchangeController::Initialize ()
virtual

Initialize the controller (includes creation of the scrap database, and handler registration).

Implements IDataExchangeController.

virtual ErrorCode CDataExchangeController::InitializeScrap ()
protectedvirtual

Initialize scrap to a standard state. Similar to document initialization, uses document signal responders and sends kDuringNewScrapDocSignalResponderService signal

virtual bool16 CDataExchangeController::IsClipboardExternal () const
inlineprotectedvirtual

Get is the data on clipboard from external source or and internal copy from InDesign

Returns
kTrue if external content

Implements IDataExchangeController.

Reimplemented in IClipboardController.

virtual bool16 CDataExchangeController::IsValid () const
virtual

Is this controller instance in a valid state.

Implements IDataExchangeController.

virtual bool16 CDataExchangeController::NeedsToInternalize () const
pure virtual

Is external data waiting to be internalized? This method is useful for clients that would like to peek at the actual data to be pasted/dropped/whatever if it has already been internalized, or is internal data. Internalizing can be expensive and should not be called to give user feedback (i.e. menu enabling, drag feedbacck)

Returns
kTrue if external data is awaiting internalization

Implements IDataExchangeController.

Implemented in IDragDropController, IClipboardController, and ILibraryScrapController.

virtual IDataExchangeHandler* CDataExchangeController::NewDataHandler (ClassID dataClass) const
virtual

Create an instance of a specific IDataExchangeHandler boss, in this controllers managed scrap database.

virtual void CDataExchangeController::Purge (int32 level)
virtual

Purge handler

static void CDataExchangeController::Purge (int32 level,
void * refPtr 
)
static

static purge handler

virtual IDataExchangeHandler* CDataExchangeController::QueryActiveHandler () const
virtual

Query for the current active handler.

Implements IDataExchangeController.

virtual IDataExchangeHandler* CDataExchangeController::QueryHandler (const PMFlavor & scrapFlavor) const
virtual

Query for the handler representing a particular flavor.

Implements IDataExchangeController.

virtual IDataExchangeHandler* CDataExchangeController::QueryHandler (const ExternalPMFlavor & fromFlavor,
const PMFlavor & toFlavor 
) const
virtual

Query for a handler capable of performing a specific conversion for internalizing external scrap data.

Implements IDataExchangeController.

virtual IDataExchangeHandler* CDataExchangeController::QueryHandlerForInternalize (DataExchangeResponseresponse,
const PMFlavor & internalizeToThisFlavor = kNoFlavor 
) const
pure virtual

Query for the handler best suited to internalize data. Since no context is specified to identify the data to be internalized - this method is overridden in the controller subclasses to apply to the data in the current drag, or clipboard operation.

Parameters
responseOUT the response from the handler best suited to internalize the data
internalizeToThisFlavorIN the desired destination flavor for the data, or kNoFlavor to let the framework choose the best one.
Returns
a handler (if any) capable of performing the internalization.

Implements IDataExchangeController.

Implemented in IDragDropController, IClipboardController, and ILibraryScrapController.

virtual IDataExchangeHandler* CDataExchangeController::QueryHandlerToInternalizeData (IPMDataObjectwhichItem,
DataExchangeResponseresponse,
const PMFlavor & toFlavor 
) const
protectedvirtual

Given a dataobject with external data and a desired internal flavor, query for a handler that can perform this operation

Parameters
whichItemIN data object representing the external data
responseOUT response from the returned handler
toFlavorIN desired flavor for the data to be converted to
Returns
the handler best suited to perform the internalization
virtual IDataExchangeHandler* CDataExchangeController::QueryHandlerToInternalizeData (DataObjectIteratordataIter,
DataExchangeResponseresponse,
const PMFlavor & toFlavor 
) const
protectedvirtual

Given a dataobject with external data and a desired internal flavor, query for a handler that can perform this operation

Parameters
dataIterIN iterator over the data objects representing the external data
responseOUT response from the returned handler
toFlavorIN desired flavor for the data to be converted to
Returns
the handler best suited to perform the internalization
virtual void CDataExchangeController::RegisterAllHandlers ()
virtual

Iterate over all bosses implementing IDataExchangeHandler in the object model and register them.

Implements IDataExchangeController.

virtual bool16 CDataExchangeController::RegisterDataHandler (ClassID dataClass)
virtual

Register a specific IDataExchangeHandler boss.

virtual void CDataExchangeController::ResetMagicBytes () const
protectedpure virtual

Set the database's magic bytes. This solves a link circularity. Subclasses must set magic bytes to something appropriate!

virtual ErrorCode CDataExchangeController::RevertScrap ()
protectedvirtual

Revert scrap database back to the standard state.

virtual void CDataExchangeController::RunNewScrapResponders ()
protectedvirtual

Add standard colors, styles etc. to scrap.

virtual void CDataExchangeController::SetActiveHandler (IDataExchangeHandleractiveHandler)
virtual

Set the active handler.

Implements IDataExchangeController.