InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ILinkManager.h
1 //========================================================================================
2 //
3 // $File$
4 //
5 // Owner: Michael Easter
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 // Description:
24 // This class defines an interface used to manage linked resources and links.
25 //
26 //========================================================================================
27 
28 #ifndef __ILinkManager__
29 #define __ILinkManager__
30 
31 // ----- Includes -----
32 #include "IPMUnknown.h"
33 
34 #include "ILink.h"
35 #include "ILinkResource.h"
36 #include "LinksID.h"
37 #include <vector>
38 
39 class ILinkObject;
40 
41 class LinkResourceQuery;
42 class LinkQuery;
43 class URI;
44 class WideString;
45 
46 
75 class ILinkManager : public IPMUnknown
76 {
77 public:
78  enum { kDefaultIID = IID_ILINKMANAGER };
79 
84  class ChangeData
85  {
86  public:
87  typedef object_type data_type;
88 
92  enum Type {
94  kLink = 0,
99  };
100 
101  ChangeData(Type type, UID uid) : fType(type), fUID(uid) {}
102  ChangeData(const ChangeData& data) : fType(data.fType), fUID(data.fUID) {}
103  ~ChangeData() {}
104 
105  ChangeData& operator=(const ChangeData& rhs)
106  {
107  ChangeData temp(rhs);
108  std::swap(temp.fType, fType);
109  std::swap(temp.fUID, fUID);
110  return *this;
111  }
112 
113  bool operator==(const ChangeData& rhs) const { return (fType == rhs.fType && fUID == rhs.fUID); }
114  bool operator<(const ChangeData& rhs) const
115  {
116  if (fType < rhs.fType) return true;
117  else if (fType == rhs.fType) return (fUID < rhs.fUID);
118  else return false;
119  }
120 
121  Type GetType() { return fType; }
122  UID GetUID() { return fUID; }
123 
124  static ChangeData Make(Type type, UID uid) { return ChangeData(type, uid); }
125 
126  private:
127  Type fType;
128  UID fUID;
129  };
130 
134  typedef std::vector<UID> QueryResult;
135 
145  };
146 
153  virtual bool IsModelChanging() const = 0;
154 
168  virtual UID CreateResource(const URI& uri, LinkClientID clientId, bool bUseExisting) = 0;
169 
179  virtual ErrorCode ReinitResource(UID resourceUID, const URI& uri, bool updateResourceStateSync = true) = 0;
180 
189  virtual ErrorCode DeleteResource(UID resourceUID) = 0;
190 
197  virtual ILinkResource* QueryResourceByUID(UID resourceUID) const = 0;
198 
208  virtual ErrorCode UpdateResourceState(UID resourceUID, OperationType opType) = 0;
209 
214  virtual void CancelUpdateResourceState(UID resourceUID) = 0;
215 
220  virtual void WaitForUpdateResourceStateCompletion(UID resourceUID) = 0;
221 
222 
233  virtual ErrorCode ResolveResource(UID resourceUID, const URI& relativeURI, bool bIgnoreStamp) = 0;
234 
242  virtual uint32 QueryResources(const LinkResourceQuery& query, LinkClientID clientId, QueryResult& result) const = 0;
243  uint32 QueryResources(const LinkResourceQuery& query, QueryResult& result) const
244  { return QueryResources(query, kIDLinkClientID, result); }
245 
246  virtual uint32 QueryResources(const LinkResourceQuery& query, LinkClientID clientId, UIDList& result) const = 0;
247  uint32 QueryResources(const LinkResourceQuery& query, UIDList& result) const
248  { return QueryResources(query, kIDLinkClientID, result); }
249 
256  virtual ClassID GetResourceProviderByScheme(const WideString& scheme) const = 0;
258 
259 
272  virtual UID CreateLink(ILink::LinkType type, LinkClientID clientId, UID resourceUID, UID objectUID) = 0;
273 
284  virtual UID CreateLink(ClassID classID, LinkClientID clientId, UID resourceUID, UID objectUID) = 0;
285 
293  virtual ErrorCode DeleteLink(UID linkUID, bool bDeleteResource) = 0;
294 
301  virtual ILink* QueryLinkByUID(UID linkUID) const = 0;
302 
310  virtual uint32 QueryLinks(const LinkQuery& query, LinkClientID clientId, QueryResult& result) const = 0;
311  uint32 QueryLinks(const LinkQuery& query, QueryResult& result) const
312  { return QueryLinks(query, kIDLinkClientID, result); }
313 
314  virtual uint32 QueryLinks(const LinkQuery& query, LinkClientID clientId, UIDList& result) const = 0;
315  uint32 QueryLinks(const LinkQuery& query, UIDList& result) const
316  { return QueryLinks(query, kIDLinkClientID, result); }
317 
325  virtual uint32 QueryLinksByResourceUID(UID resourceUID, bool bChildLinksOK, QueryResult& result) const = 0;
326  virtual uint32 QueryLinksByResourceUID(UID resourceUID, bool bChildLinksOK, UIDList& result) const = 0;
327 
334  virtual uint32 QueryLinksByObjectUID(UID objectUID, QueryResult& result) const = 0;
335  virtual uint32 QueryLinksByObjectUID(UID objectUID, UIDList& result) const = 0;
337 
338 
347  virtual ILinkObject* QueryObjectByUID(UID objectUID) const = 0;
349 };
350 
351 #endif // __ILinkManager__