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