InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
CHierarchyNode.h
1 //========================================================================================
2 //
3 // $File$
4 //
5 // Owner: Lonnie Millett
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 __CHIERARCHYNODE__
25 #define __CHIERARCHYNODE__
26 
27 #include "IHierarchy.h"
28 
29 #ifndef __PTRCOLLECTION__
30 #include "K2Vector.h"
31 #endif
32 
33 #include "HelperInterface.h"
34 
35 //----------------------------------------------------------------------------------------
36 // Forward declarations
37 //----------------------------------------------------------------------------------------
38 class PersistUIDList;
39 
40 //----------------------------------------------------------------------------------------
41 // Class Info
42 //----------------------------------------------------------------------------------------
43 
44 class CHierarchyNode : public IHierarchy
45 {
46 public:
48  virtual ~CHierarchyNode();
49 
50  virtual IHierarchy *QueryChild(int32 n) const;
51  virtual UID GetChildUID(int32 n) const;
52  virtual int32 GetChildIndex(const IHierarchy * p) const;
53  virtual int32 GetChildCount() const;
54  virtual IHierarchy *QueryParent() const;
55  virtual void SetParent(IHierarchy *newParent);
56  virtual UID GetParentUID() const;
57  virtual IHierarchy *QueryRoot() const;
58  virtual UID GetRootUID() const;
59  virtual void SetRootUID(UID newRoot);
60  virtual void Add(IHierarchy *newChild, int32 pos);
61  virtual void Move(IHierarchy *childToMove, int32 to);
62  virtual void Remove(IHierarchy *childToRemove);
63  virtual void Remove(UID childToRemove);
64 
65  virtual bool16 IsLessThan(IHierarchy * item);
66  virtual void GetDescendents(UIDList *resultList, const PMIID& interfaceID, int32 flags = 0) const;
67  virtual void GetAncestors(UIDList *resultList, const PMIID& interfaceID) const;
68  virtual UID GetLayerUID() const;
69  virtual UID GetSpreadUID() const;
70 
71  void ReadWrite(IPMStream *s, ImplementationID prop);
72 
73 #ifdef DEBUG
74  virtual bool16 IsValid();
75  // Checks that all internally held pointers and UIDs are reasonable
76  // AND calls IsValid() for all children.
77 #endif
78 
79 protected:
80  void AttachToRoot();
81  void DetachFromRoot();
82 
83  virtual void PreDirtySetParent(IHierarchy*)
84  { PreDirtyNoMessage(); }
85  virtual void PreDirtySetRootUID(UID)
86  { PreDirtyNoMessage(); }
87  virtual void PreDirtyAddingChild(IHierarchy* child, int32 pos);
88  virtual void PreDirtyMovingChild(IHierarchy* child, int32 from, int32 to);
89  virtual void PreDirtyRemovingChild(IHierarchy* child, int32 pos);
90 
91  UID fRootUID;
92  UID fParentUID;
93  PersistUIDList* fChildrenUIDs;
94 
95 
96 };
97 
98 
99 #endif