private Control CreateMenuItem(IMenuItem item)
 {
     #region Pre-conditions
     Debug.Assert(item != null);
     #endregion
     Control menuItem = null;
     if (item is IControlMenuItem)
     {
         menuItem = CreateControlMenuItem(item as IControlMenuItem);
     }
     else if (item is IScreenMenuItem)
     {
         menuItem = CreateViewMenuItem(item as IScreenMenuItem);
     }
     else if (item is ILinkMenuItem)
     {
         menuItem = CreateLinkMenuItem(item as ILinkMenuItem);
     }
     MenuItemBindings.Add(
         menuItem,
         item
         );
     #region Post-conditions
     Debug.Assert(menuItem != null);
     #endregion
     return(menuItem);
 }
        void DrawMenuItem(int index, string text)
        {
            var   size = MeasureSize(text, 3, "Monospace") / PixelsPerMeter;
            float posX = -ScreenSizeMeters * 0.5f + ActionBarMargin + size.X * 0.5f;
            float posY = ScreenSizeMeters * 0.5f - ActionBarMargin * 0.5f - (ActionBarMargin + size.Y) * (0.5f + index);

            var rect = new RectangleF(posX - size.X * 0.5f, posY - size.Y * 0.5f, size.X, size.Y);

            var color = Color.White;

            if (rect.Contains(CursorPos2D))
            {
                color = Color.Teal;
                if (OnRelease && MenuItemBindings.ContainsKey(text))
                {
                    MenuItemBindings[text]();
                    OnRelease = false;
                }
            }

            AddTextSprite(text, new Vector2(posX, posY), 3, "Monospace", color);
        }
        private void TaskItem_Clicked(object sender, EventArgs e)
        {
            if (sender is TaskItem)
            {
                TaskItem taskItem = sender as TaskItem;
                if (MenuItemBindings.ContainsKey(taskItem))
                {
                    IMenuItem menuItem = MenuItemBindings[taskItem];
                    ExecuteMenuItem(menuItem);
                }
                else
                {
#warning TaskItem did not bind to a IMenuItem
                }
            }
        }