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     }