1
2
3
4
5
6 using System;
7
8 namespace System.Windows
9 {
10 public abstract class Component : GraphicsObject
11 {
12 public Component() : base(), container(null), nextSibling(null), prevSibling(null)
13 {
14 }
15 public inline ComponentContainer* GetContainer() const
16 {
17 return container;
18 }
19 internal void SetContainer(ComponentContainer* container_)
20 {
21 container = container_;
22 }
23 public inline Component* NextSibling() const
24 {
25 return nextSibling;
26 }
27 internal void SetNextSibling(Component* nextSibling_)
28 {
29 nextSibling = nextSibling_;
30 }
31 public inline Component* PrevSibling() const
32 {
33 return prevSibling;
34 }
35 internal void SetPrevSibling(Component* prevSibling_)
36 {
37 prevSibling = prevSibling_;
38 }
39 internal void LinkBefore(Component* component)
40 {
41 if (prevSibling != null)
42 {
43 prevSibling->nextSibling = component;
44 }
45 component->prevSibling = prevSibling;
46 component->nextSibling = this;
47 prevSibling = component;
48 }
49 internal void LinkAfter(Component* component)
50 {
51 if (nextSibling != null)
52 {
53 nextSibling->prevSibling = component;
54 }
55 component->prevSibling = this;
56 component->nextSibling = nextSibling;
57 nextSibling = component;
58 }
59 internal void Unlink()
60 {
61 if (prevSibling != null)
62 {
63 prevSibling->nextSibling = nextSibling;
64 }
65 if (nextSibling != null)
66 {
67 nextSibling->prevSibling = prevSibling;
68 }
69 }
70 private ComponentContainer* container;
71 private Component* nextSibling;
72 private Component* prevSibling;
73 }