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 } } }