public override void Draw(SpriteBatch b, Point o)
 {
     if (!Visible)
     {
         return;
     }
     // Draw chrome
     FrameworkMenu.DrawMenuRect(b, o.X + Area.X - zoom2, o.Y + Area.Y + zoom15, Area.Width, Area.Height - zoom15);
     // Draw tabs
     for (var c = 0; c < Tabs.Count; c++)
     {
         b.Draw(Game1.mouseCursors, new Rectangle(o.X + Area.X + zoom4 + c * zoom16, o.Y + Area.Y + (c == Current ? zoom2 : 0), zoom16, zoom16), Tab, Color.White);
         b.Draw(Game1.objectSpriteSheet, new Rectangle(o.X + Area.X + zoom8 + c * zoom16, o.Y + Area.Y + zoom5 + (c == Current ? zoom2 : 0), zoom8, zoom8), Game1.getSourceRectForStandardTileSheet(Game1.objectSpriteSheet, Tabs[c].Icon, 16, 16), Color.White);
     }
     // Draw body
     CurrentTab?.Draw(b, new Point(o.X + Area.X + zoom5, o.Y + Area.Y + zoom22));
 }
        // IComponentCollection
        protected virtual void UpdateDrawOrder()
        {
            KeyValuePair <List <IInteractiveMenuComponent>, List <IMenuComponent> > sorted = FrameworkMenu.GetOrderedLists(_StaticComponents, _InteractiveComponents);

            DrawOrder  = sorted.Value;
            EventOrder = sorted.Key;
        }