InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
CScrapSuite_Extensible.h
1 //========================================================================================
2 //
3 // $File$
4 //
5 // Owner: Dave Burnard
6 //
7 // $Author$
8 //
9 // $DateTime$
10 //
11 // $Revision$
12 //
13 // $Change$
14 //
15 // Copyright 1997-2010 Adobe Systems Incorporated. All rights reserved.
16 //
17 // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance
18 // with the terms of the Adobe license agreement accompanying it. If you have received
19 // this file from a source other than Adobe, then your use, modification, or
20 // distribution of it requires the prior written permission of Adobe.
21 //
22 //========================================================================================
23 
24 #ifndef __CScrapSuite_Extensible__
25 #define __CScrapSuite_Extensible__
26 
27 #include "IK2ServiceProvider.h"
28 #include "IScrapSuite.h"
29 #include "CPMUnknown.h"
30 
32 
33 
39 class CScrapSuite_Extensible : public CPMUnknown<IScrapSuite>
40 {
41  public:
43  virtual ~CScrapSuite_Extensible();
44 
48  enum eActionType {
57  kActionType_Max = kPasteInsideFromScrapAction
58  };
59 
60  // ----- Abilities
61  virtual bool16 CanClear() = 0;
62  virtual bool16 CanCopy(IClipboardController* clipboard) = 0;
63  virtual bool16 CanDuplicate() = 0;
64 
65  virtual bool16 CanSelectionBeCopied() const = 0;
66  virtual bool16 CanSelectionAcceptPaste() const = 0;
67  virtual bool16 CanSelectionAcceptPasteInside() const = 0;
68  virtual bool16 CanPasteInsideAtPoint(IControlView* view, const PBPMPoint& point) const = 0;
69 
76  virtual bool16 CanPaste(IClipboardController* clipboard);
78  virtual bool16 CanPasteInside(IClipboardController* clipboard, IControlView* view = nil, const PBPMPoint& point = kInvalidPoint);
80  virtual bool16 CanCut(IClipboardController* clipboard);
82 
84  virtual ErrorCode Cut(IClipboardController* clipboard);
85 
86  // ----- Manipulators
87  virtual ErrorCode Clear() = 0;
88  virtual ErrorCode Copy(IClipboardController* clipboard) = 0;
89  virtual ErrorCode Duplicate(const PBPMPoint& offset, IControlView* view, bool8 selectDuplicate = kTrue) = 0;
90 
91  virtual ErrorCode CopyToScrap(IDataExchangeController* dataController) = 0;
92 
93  // Get the external flavors that can be Externalized (Copy), or Internalized (Paste)
94  virtual void BuildFlavorListForExternalize(IDataExchangeController* dataController, OrderedFlavorList& flavorList) const = 0;
95 
97  virtual void BuildFlavorListForInternalize(IDataExchangeController* dataController, OrderedFlavorList& flavorList) const;
98 
105  virtual ErrorCode Paste(IClipboardController* clipboard, IControlView* view, bool16 ignoreAttributes);
107  virtual ErrorCode PasteInside(IClipboardController* clipboard, IControlView* view, const PBPMPoint& point = kInvalidPoint);
109  virtual ErrorCode PasteFromScrap(IDataExchangeController* dataController, IControlView* view, bool16 ignoreAttributes);
111  virtual ErrorCode PasteInsideFromScrap(IDataExchangeController* dataController, IControlView* view, const PBPMPoint& point = kInvalidPoint);
113 
114  // ----- Extensibility
117  virtual ServiceID GetScrapSuitePasteHelperServiceID() const = 0;
118 
119  private:
120  IScrapSuitePasteHelper* GetActiveScrapSuitePasteHelper(eActionType action) const;
121  IScrapSuitePasteHelper* QueryHelper_ForAction(eActionType action, IDataExchangeController* dataController, IControlView* view = nil, const PBPMPoint& point = kInvalidPoint) const;
122 
123  IScrapSuitePasteHelper* fActiveScrapSuitePasteHelpers[kActionType_Max];
124  // Lifetime does not extend beyond duration of an atomic CanPaste, Paste or PasteFromScrap call.
125 };
126 
127 #endif //__CDragDropSource__
128