Example #1
0
 public ContextMenuCreator(MenuManager menuManager, FrameworkElement elem, Guid guid, IGuidObjectsCreator creator, IContextMenuInitializer initCtxMenu, Guid? ctxMenuGuid)
 {
     this.menuManager = menuManager;
     this.element = elem;
     this.guid = guid;
     this.creator = creator;
     this.initCtxMenu = initCtxMenu;
     this.ctxMenuGuid = ctxMenuGuid ?? new Guid(MenuConstants.CTX_MENU_GUID);
     elem.ContextMenu = new ContextMenu();
     elem.ContextMenuOpening += FrameworkElement_ContextMenuOpening;
 }
Example #2
0
 public ContextMenuCreator(MenuManager menuManager, FrameworkElement elem, Guid guid, IGuidObjectsCreator creator, IContextMenuInitializer initCtxMenu, Guid?ctxMenuGuid)
 {
     this.menuManager         = menuManager;
     this.element             = elem;
     this.guid                = guid;
     this.creator             = creator;
     this.initCtxMenu         = initCtxMenu;
     this.ctxMenuGuid         = ctxMenuGuid ?? new Guid(MenuConstants.CTX_MENU_GUID);
     elem.ContextMenu         = new ContextMenu();
     elem.ContextMenuOpening += FrameworkElement_ContextMenuOpening;
 }
Example #3
0
        internal bool?ShowContextMenu(object evArgs, FrameworkElement ctxMenuElem, Guid topLevelMenuGuid, Guid ownerMenuGuid, GuidObject creatorObject, IGuidObjectsCreator creator, IContextMenuInitializer initCtxMenu, bool openedFromKeyboard)
        {
            InitializeMenuItemObjects();

            // There could be nested contex menu handler calls, eg. first text editor followed by
            // the TabControl. We don't wan't the TabControl to disable the text editor's ctx menu.
            if (prevEventArgs.Target == evArgs)
            {
                return(null);
            }

            var ctx = new MenuItemContext(topLevelMenuGuid, openedFromKeyboard, creatorObject, creator == null ? null : creator.GetGuidObjects(creatorObject, openedFromKeyboard));

            List <MenuItemGroupMD> groups;
            bool b = guidToGroups.TryGetValue(ownerMenuGuid, out groups);

            if (!b)
            {
                return(false);
            }

            var menu     = new ContextMenu();
            var allItems = CreateMenuItems(ctx, groups, null, null, true);

            if (allItems.Count == 0)
            {
                return(false);
            }
            foreach (var i in allItems)
            {
                menu.Items.Add(i);
            }

            menu.Opened += (s, e) => openedContextMenus.Add(menu);
            menu.Closed += (s, e) => {
                openedContextMenus.Remove(menu);
                ctxMenuElem.ContextMenu = new ContextMenu();
            };
            if (initCtxMenu != null)
            {
                initCtxMenu.Initialize(ctx, menu);
            }
            ctxMenuElem.ContextMenu = menu;
            prevEventArgs.Target    = evArgs;
            return(true);
        }
Example #4
0
 public IContextMenuCreator InitializeContextMenu(FrameworkElement elem, string guid, IGuidObjectsCreator creator, IContextMenuInitializer initCtxMenu, string ctxMenuGuid)
 {
     return(InitializeContextMenu(elem, new Guid(guid), creator, initCtxMenu, ctxMenuGuid == null ? (Guid?)null : new Guid(ctxMenuGuid)));
 }
Example #5
0
 public IContextMenuCreator InitializeContextMenu(FrameworkElement elem, Guid guid, IGuidObjectsCreator creator, IContextMenuInitializer initCtxMenu, Guid?ctxMenuGuid)
 {
     Debug.Assert(guid != Guid.Empty);
     return(new ContextMenuCreator(this, elem, guid, creator, initCtxMenu, ctxMenuGuid));
 }
Example #6
0
        internal bool? ShowContextMenu(object evArgs, FrameworkElement ctxMenuElem, Guid topLevelMenuGuid, Guid ownerMenuGuid, GuidObject creatorObject, IGuidObjectsCreator creator, IContextMenuInitializer initCtxMenu, bool openedFromKeyboard)
        {
            InitializeMenuItemObjects();

            // There could be nested contex menu handler calls, eg. first text editor followed by
            // the TabControl. We don't wan't the TabControl to disable the text editor's ctx menu.
            if (prevEventArgs.Target == evArgs)
                return null;

            var ctx = new MenuItemContext(topLevelMenuGuid, openedFromKeyboard, creatorObject, creator == null ? null : creator.GetGuidObjects(creatorObject, openedFromKeyboard));

            List<MenuItemGroupMD> groups;
            bool b = guidToGroups.TryGetValue(ownerMenuGuid, out groups);
            if (!b)
                return false;

            var menu = new ContextMenu();
            var allItems = CreateMenuItems(ctx, groups, null, null, true);
            if (allItems.Count == 0)
                return false;
            foreach (var i in allItems)
                menu.Items.Add(i);

            menu.Opened += (s, e) => openedContextMenus.Add(menu);
            menu.Closed += (s, e) => {
                openedContextMenus.Remove(menu);
                ctxMenuElem.ContextMenu = new ContextMenu();
            };
            if (initCtxMenu != null)
                initCtxMenu.Initialize(ctx, menu);
            ctxMenuElem.ContextMenu = menu;
            prevEventArgs.Target = evArgs;
            return true;
        }
Example #7
0
 public IContextMenuCreator InitializeContextMenu(FrameworkElement elem, string guid, IGuidObjectsCreator creator, IContextMenuInitializer initCtxMenu, string ctxMenuGuid)
 {
     return InitializeContextMenu(elem, new Guid(guid), creator, initCtxMenu, ctxMenuGuid == null ? (Guid?)null : new Guid(ctxMenuGuid));
 }
Example #8
0
 public IContextMenuCreator InitializeContextMenu(FrameworkElement elem, Guid guid, IGuidObjectsCreator creator, IContextMenuInitializer initCtxMenu, Guid? ctxMenuGuid)
 {
     Debug.Assert(guid != Guid.Empty);
     return new ContextMenuCreator(this, elem, guid, creator, initCtxMenu, ctxMenuGuid);
 }