A class for managing a menu including its list of sub menus (other Habanero Menus). This class is used by a menu builder to build a specific Menu e.g. A main menu e.g. MainMenuWin or an outlook style menu e.g. CollapsibleMenuWin.
With this class you can either AddSubMenu or AddMenuItem. Where adding a sub menu will create another HabaneroMenu and adding a MenuItem will add a leaf item to the menu. Selecting a SubMenu will cause the sub Menu to expand. Selecting the MenuItem(Item) will cause the relevant controller to be executed the order in which this occurs is as follows.
  • Any CustomMenuHandler (set via the Item.CustomHandler will take precidence) i.e. you can make the menu item do anything you want via a custom handler.
  • The FormControl Creator takes precedence next this is typically used by the Form Controller to manage the form (usually in an MDI type environment)
  • The ControlManagerCreator takes Precedence next this is typeically used in an SDI type interface where the menu item swaps out the control. (e.g. in a outlook style menu)
  • Esempio n. 1
    0
     /// <summary>
     /// Constructor for an <see cref="Item"/>
     /// </summary>
     /// <param name="parentMenu"></param>
     /// <param name="name"></param>
     /// <param name="form"></param>
     /// <param name="controlFactory"></param>
     public Item(HabaneroMenu parentMenu, string name, IControlHabanero form, IControlFactory controlFactory)
     {
         _parentMenu     = parentMenu;
         _name           = name;
         _controlFactory = controlFactory;
         _form           = form;
     }
    Esempio n. 2
    0
            ///<summary>
            /// Adds a sub menu to this menu. This method creates a new <see cref="HabaneroMenu"/> with the name
            /// <paramref name="menuName"/> and adds it as a sub menu.
            ///</summary>
            ///<param name="menuName"></param>
            ///<returns></returns>
            public HabaneroMenu AddSubMenu(string menuName)
            {
                HabaneroMenu submenu = new HabaneroMenu(menuName, _form, _controlFactory);
    
                this._submenus.Add(submenu);
                return(submenu);
            }
     public void Test_CreateLeafMenuItems_ShouldCreatePanelWithLeafMenu()
     {
         //---------------Set up test pack-------------------
         HabaneroMenu habaneroMenu = new HabaneroMenu("Main");
         string subMenuName = TestUtil.GetRandomString();
         HabaneroMenu submenu = habaneroMenu.AddSubMenu(subMenuName);
         string menuItemName1 = TestUtil.GetRandomString();
         submenu.AddMenuItem(menuItemName1);
         submenu.AddMenuItem(TestUtil.GetRandomString());
         CollapsibleMenuBuilderWin menuBuilder = (CollapsibleMenuBuilderWin)CreateMenuBuilder();
         IMenuItem menuItem = new CollapsibleSubMenuItemWin(GetControlFactory(), "Some Sub Menu");
         //---------------Assert Precondition----------------
         Assert.AreEqual(0, menuItem.MenuItems.Count);
         ICollapsiblePanel menuItemAsControl = (ICollapsiblePanel)menuItem;
         Assert.AreEqual(1, menuItemAsControl.Controls.Count);
         Assert.AreEqual(2, submenu.MenuItems.Count);
         //---------------Execute Test ----------------------
         menuBuilder.CreateLeafMenuItems(submenu, menuItem);
         //---------------Test Result -----------------------
         Assert.AreEqual(2, menuItem.MenuItems.Count);
         Assert.AreEqual(2, menuItemAsControl.Controls.Count);
         IControlHabanero contentControl = menuItemAsControl.ContentControl;
         Assert.AreEqual(2, contentControl.Controls.Count);
         IControlHabanero firstControl = contentControl.Controls[0];
         IControlHabanero secondControl = contentControl.Controls[1];
         Assert.GreaterOrEqual(secondControl.Top, firstControl.Top + firstControl.Height);
     }
            public void TestCreateMenu()
            {
                //---------------Set up test pack-------------------
    
                //---------------Execute Test ----------------------
                HabaneroMenu menu = new HabaneroMenu("Main");
    
                //---------------Test Result -----------------------
                Assert.AreEqual(0, menu.Submenus.Count);
                //---------------Tear Down -------------------------
            }
     public void Test_ConstructMainMenu_WithHabaneroMenu()
     {
         //---------------Set up test pack-------------------
         HabaneroMenu menu = new HabaneroMenu(TestUtil.GetRandomString());
         //---------------Assert Precondition----------------
         //---------------Execute Test ----------------------
         IMainMenuHabanero collapsibleMenu = CreateControl(menu);
         //---------------Test Result -----------------------
         Assert.IsNotNull(collapsibleMenu);
         Assert.IsNotNull(collapsibleMenu.MenuItems);
         Assert.AreEqual(menu.Name, collapsibleMenu.Name);
     }
     public void TestAddSubMenu()
     {
         //---------------Set up test pack-------------------
         HabaneroMenu menu = new HabaneroMenu("Main");
         string menuName = TestUtil.GetRandomString();
         //---------------Execute Test ----------------------
         HabaneroMenu submenu = menu.AddSubMenu(menuName);
         //---------------Test Result -----------------------
         Assert.AreEqual(1, menu.Submenus.Count);
         Assert.AreSame(submenu, menu.Submenus[0]);
         Assert.AreEqual(menuName, submenu.Name);
         //---------------Tear Down -------------------------          
     }
            public void Test_BuildMainMenu()
            {
                //---------------Set up test pack-------------------
                HabaneroMenu habaneroMenu = new HabaneroMenu("Main");
                IMenuBuilder menuBuilder = CreateMenuBuilder();
                //---------------Assert Precondition----------------
    
                //---------------Execute Test ----------------------
                IMainMenuHabanero menu = menuBuilder.BuildMainMenu(habaneroMenu);
                //---------------Test Result -----------------------
                Assert.IsNotNull(menu);
                Assert.AreEqual(habaneroMenu.Name, menu.Name);
            }
            public void Test_BuildMainMenu_ShouldReturnTypeOf_ContextMenuWin()
            {
                //---------------Set up test pack-------------------
                //---------------Set up test pack-------------------
                IMenuBuilder contextMenuBuilderWin = new ContextMenuBuilderWin(GlobalUIRegistry.ControlFactory);
                HabaneroMenu habaneroMenu = new HabaneroMenu("Main");
                //---------------Assert Precondition----------------
    
                //---------------Execute Test ----------------------
                var menu = contextMenuBuilderWin.BuildMainMenu(habaneroMenu);
    
                //---------------Test Result -----------------------
                Assert.IsInstanceOf<ContextMenuWin>(menu);
            }
            public void TestAddMenuItem()
            {
                //---------------Set up test pack-------------------
                HabaneroMenu submenu = new HabaneroMenu("Main").AddSubMenu("Submenu");
                string menuItemName = TestUtil.GetRandomString();
    
                //---------------Assert PreConditions---------------            
                //---------------Execute Test ----------------------
                HabaneroMenu.Item menuItem = submenu.AddMenuItem(menuItemName);
                //---------------Test Result -----------------------
                Assert.AreEqual(1, submenu.MenuItems.Count);
                Assert.AreSame(menuItem, submenu.MenuItems[0]);
                Assert.AreEqual(menuItemName, menuItem.Name);
                //---------------Tear Down -------------------------          
            }
            public void Test_AddMenuItem_Should_ReturnMenuItemAfterBuildMainMenu()
            {
                //---------------Set up test pack-------------------
                HabaneroMenu habaneroMenu = new HabaneroMenu("Main");
                string menuItemName = TestUtil.GetRandomString();
                habaneroMenu.AddMenuItem(menuItemName);
    
    
                IMenuBuilder menuBuilder = CreateMenuBuilder();
                //---------------Assert Preconditions---------------
                Assert.AreEqual(1, habaneroMenu.MenuItems.Count);
                //---------------Execute Test ----------------------
                IMainMenuHabanero menu = menuBuilder.BuildMainMenu(habaneroMenu);
                //---------------Test Result -----------------------
                Assert.AreEqual(1, menu.MenuItems.Count);
                Assert.AreEqual(menuItemName, menu.MenuItems[0].Text);
            }
    Esempio n. 11
    0
     public void TestSimpleMenuStructure()
     {
         //---------------Set up test pack-------------------
         HabaneroMenu habaneroMenu = new HabaneroMenu("Main");
         string subMenuName = TestUtil.GetRandomString();
         HabaneroMenu submenu = habaneroMenu.AddSubMenu(subMenuName);
         string menuItemName = TestUtil.GetRandomString();
         submenu.AddMenuItem(menuItemName);
         IMenuBuilder menuBuilder = CreateMenuBuilder();
         //---------------Execute Test ----------------------
         IMainMenuHabanero menu = menuBuilder.BuildMainMenu(habaneroMenu);
         //---------------Test Result -----------------------
         Assert.AreEqual(1, menu.MenuItems.Count);
         Assert.AreEqual(subMenuName, menu.MenuItems[0].Text);
         Assert.AreEqual(1, menu.MenuItems[0].MenuItems.Count);
         Assert.AreEqual(menuItemName, menu.MenuItems[0].MenuItems[0].Text);
                   
     }
    Esempio n. 12
    0
     public void TestMultipleSubmenus()
     {
         //---------------Set up test pack-------------------
         HabaneroMenu habaneroMenu = new HabaneroMenu("Main");
         string subMenuName1 = TestUtil.GetRandomString();
         HabaneroMenu submenu1 = habaneroMenu.AddSubMenu(subMenuName1);
         string subMenuName2 = TestUtil.GetRandomString();
         HabaneroMenu submenu2 = habaneroMenu.AddSubMenu(subMenuName2);
         submenu1.AddMenuItem(TestUtil.GetRandomString());
         submenu2.AddMenuItem(TestUtil.GetRandomString());
         submenu2.AddMenuItem(TestUtil.GetRandomString());
         IMenuBuilder menuBuilder = CreateMenuBuilder();
         //---------------Execute Test ----------------------
         IMainMenuHabanero menu = menuBuilder.BuildMainMenu(habaneroMenu);
         //---------------Test Result -----------------------
         Assert.AreEqual(2, menu.MenuItems.Count);
         Assert.AreEqual(subMenuName1, menu.MenuItems[0].Text);
         Assert.AreEqual(1, menu.MenuItems[0].MenuItems.Count);
         Assert.AreEqual(subMenuName2, menu.MenuItems[1].Text);
         Assert.AreEqual(2, menu.MenuItems[1].MenuItems.Count);
                   
     }
            public void TestSimpleMenuStructure_AddsCollapsiblePanels()
            {
                //---------------Set up test pack-------------------
                HabaneroMenu habaneroMenu = new HabaneroMenu("Main");
                string subMenuName = TestUtil.GetRandomString();
                HabaneroMenu submenu = habaneroMenu.AddSubMenu(subMenuName);
                string menuItemName = TestUtil.GetRandomString();
                submenu.AddMenuItem(menuItemName);
    
    
                IMenuBuilder menuBuilder = CreateMenuBuilder();
                //---------------Assert Preconditions---------------
                Assert.AreEqual(1, habaneroMenu.Submenus.Count);
                //---------------Execute Test ----------------------
                IMainMenuHabanero menu = menuBuilder.BuildMainMenu(habaneroMenu);
                //---------------Test Result -----------------------
                Assert.IsInstanceOf(typeof(ICollapsiblePanelGroupControl), menu);
                ICollapsiblePanelGroupControl menuAsCP = (ICollapsiblePanelGroupControl)menu;
                Assert.AreEqual(1, menuAsCP.PanelsList.Count);
                ICollapsiblePanel collapsiblePanel = menuAsCP.PanelsList[0];
                Assert.IsNotNull(collapsiblePanel);
                Assert.IsNotNull(collapsiblePanel.ContentControl);
                Assert.AreEqual(1, collapsiblePanel.ContentControl.Controls.Count);
            }
     protected abstract IMainMenuHabanero CreateControl(HabaneroMenu menu);
     protected abstract IMenuItem CreateControl(HabaneroMenu.Item item);
    Esempio n. 16
    0
     private IMainMenuHabanero CreateControl(HabaneroMenu menu)
     {
         return GetControlledLifetimeFor(GetControlFactory().CreateMainMenu(menu));
     }
     protected override IMenuItem CreateMenuItem(HabaneroMenu.Item habaneroMenuItem)
     {
         return new CollapsibleMenuItemVWG(habaneroMenuItem);
     }
     protected abstract IMenuItem CreateMenuItem(HabaneroMenu.Item habaneroMenuItem);
            public void Test_PerformClick_NoCreatorsCalledWhenMenuFormNotSet()
            {
                //---------------Set up test pack-------------------
                HabaneroMenu habaneroMenu = new HabaneroMenu("Main");
                string menuItemName = TestUtil.GetRandomString();
                var menuItem = habaneroMenu.AddMenuItem(menuItemName);
                //HabaneroMenu submenu = habaneroMenu.AddSubMenu(TestUtil.GetRandomString());
                //HabaneroMenu.Item menuItem = submenu.AddMenuItem(TestUtil.GetRandomString());
                bool called = false;
                menuItem.FormControlCreator = delegate
                {
                    called = true;
                    return CreateFormControlStub();
                };
                menuItem.ControlManagerCreator = delegate
                {
                    called = true;
                    return new ControlManagerStub(GetControlFactory());
                };
                IMenuBuilder menuBuilder = CreateMenuBuilder();
                IMainMenuHabanero menu = menuBuilder.BuildMainMenu(habaneroMenu);
                //---------------Assert Precondition ---------------
                Assert.IsNull(menuItem.Form);
                //---------------Execute Test ----------------------
                IMenuItem formsMenuItem = menu.MenuItems[0];
                formsMenuItem.PerformClick();
    
                //---------------Test Result -----------------------
                Assert.IsFalse(called);
            }
    Esempio n. 20
    0
            public void TestCustomMenuHandlerTakesPrecedence()
            {
                //---------------Set up test pack-------------------
                HabaneroMenu habaneroMenu = new HabaneroMenu("Main");
                HabaneroMenu submenu = habaneroMenu.AddSubMenu(TestUtil.GetRandomString());
                HabaneroMenu.Item menuItem = submenu.AddMenuItem(TestUtil.GetRandomString());
                bool customHandlerCalled = false;
                EventHandler customerHandler = delegate
                {
                    customHandlerCalled = true;
                };
                bool formControlHandlerCalled = false;
                FormControlCreator formControlCreatorDelegate = delegate
                {
                    formControlHandlerCalled = true;
                    return CreateFormControlStub();
                };
                menuItem.CustomHandler += customerHandler;
                menuItem.FormControlCreator += formControlCreatorDelegate;
                IMenuBuilder menuBuilder = CreateMenuBuilder();
                //---------------Execute Test ----------------------
                IMainMenuHabanero menu = menuBuilder.BuildMainMenu(habaneroMenu);
                IMenuItem formsMenuItem = menu.MenuItems[0].MenuItems[0];
                formsMenuItem.PerformClick();
    
                //---------------Test Result -----------------------
                Assert.IsFalse(formControlHandlerCalled);
                Assert.IsTrue(customHandlerCalled);
            }
    Esempio n. 21
    0
     ///<summary>
     /// Adds a <see cref="HabaneroMenu"/>
     ///</summary>
     ///<param name="currentMenu"></param>
     ///<param name="controlFactory"></param>
     public abstract void AddToMenu(HabaneroMenu currentMenu, IControlFactory controlFactory);
     protected abstract IMenuItem CreateControl(IControlFactory controlFactory, HabaneroMenu.Item habaneroMenuItem);
     protected override IMenuItem CreateControl(HabaneroMenu.Item item)
     {
         return new CollapsibleSubMenuItemVWG(GetControlFactory(), item);
     }
    Esempio n. 24
    0
     ///<summary>
     /// Adds a <see cref="HabaneroMenu"/>
     ///</summary>
     ///<param name="currentMenu"></param>
     ///<param name="controlFactory"></param>
     public abstract void AddToMenu(HabaneroMenu currentMenu, IControlFactory controlFactory);
    Esempio n. 25
    0
     ///<summary>
     /// Constructor for an <see cref="Item"/>
     ///</summary>
     ///<param name="parentMenu"></param>
     ///<param name="name"></param>
     public Item(HabaneroMenu parentMenu, string name)
         : this(parentMenu, name, null, null)
     {
     }
    Esempio n. 26
    0
     public void Test_PerformClick_WhenMenuFormHasNoControlSet_ShouldNotCallCreators()
     {
         //---------------Set up test pack-------------------
         HabaneroMenu habaneroMenu = new HabaneroMenu("Main", GetControlFactory().CreateForm(), GetControlFactory());
         HabaneroMenu submenu = habaneroMenu.AddSubMenu(TestUtil.GetRandomString());
         HabaneroMenu.Item menuItem = submenu.AddMenuItem(TestUtil.GetRandomString());
         bool called = false;
         menuItem.FormControlCreator = delegate
         {
             called = true;
             return CreateFormControlStub();
         };
         menuItem.ControlManagerCreator = delegate
         {
             called = true;
             return new ControlManagerStub(GetControlFactory());
         };
         IMenuBuilder menuBuilder = CreateMenuBuilder();
         IMainMenuHabanero menu = menuBuilder.BuildMainMenu(habaneroMenu);
         //---------------Assert Precondition ---------------
         Assert.IsNotNull(menuItem.Form);
         Assert.AreEqual(0, menuItem.Form.Controls.Count);
         //---------------Execute Test ----------------------
         IMenuItem formsMenuItem = menu.MenuItems[0].MenuItems[0];
         formsMenuItem.PerformClick();
         //---------------Test Result -----------------------
         Assert.IsFalse(called);      
     }
            public void Test_BuildMainMenu_WhenAddingHabaneroMenuWithOneMenuItem_ShouldReturnMenuWithOneMenuItem()
            {
                //---------------Set up test pack-------------------
                IMenuBuilder contextMenuBuilderWin = new ContextMenuBuilderWin(GlobalUIRegistry.ControlFactory);
                HabaneroMenu habaneroMenu = new HabaneroMenu("Main");
                string menuNameItem = "test";
                habaneroMenu.AddMenuItem(menuNameItem);
                //---------------Assert Precondition----------------
                Assert.AreEqual(1, habaneroMenu.MenuItems.Count);
    
                //---------------Execute Test ----------------------
                var menu = contextMenuBuilderWin.BuildMainMenu(habaneroMenu);
    
                //---------------Test Result -----------------------
                Assert.AreEqual(1, menu.MenuItems.Count);
    
            }
    Esempio n. 28
    0
     ///<summary>
     /// Constructor for an <see cref="Item"/>
     ///</summary>
     ///<param name="parentMenu"></param>
     ///<param name="name"></param>
     public Item(HabaneroMenu parentMenu, string name)
         : this(parentMenu, name, null, null)
     {
     }
    Esempio n. 29
    0
     ///<summary>
     /// Adds a sub menu to this menu. This method creates a new <see cref="HabaneroMenu"/> with the name
     /// <paramref name="menuName"/> and adds it as a sub menu.
     ///</summary>
     ///<param name="menuName"></param>
     ///<returns></returns>
     public HabaneroMenu AddSubMenu(string menuName)
     {
         HabaneroMenu submenu = new HabaneroMenu(menuName, _form, _controlFactory);
         this._submenus.Add(submenu);
         return submenu;
     }
    Esempio n. 30
    0
            public void TestCustomMenuHandlerCalledIfSet()
            {
                //---------------Set up test pack-------------------
                HabaneroMenu habaneroMenu = new HabaneroMenu("Main");
                HabaneroMenu submenu = habaneroMenu.AddSubMenu(TestUtil.GetRandomString());
                HabaneroMenu.Item menuItem = submenu.AddMenuItem(TestUtil.GetRandomString());
                bool called = false;
                EventHandler customerHandler = delegate
                {
                    called = true;
                };
                menuItem.CustomHandler += customerHandler;
                IMenuBuilder menuBuilder = CreateMenuBuilder();
                //---------------Execute Test ----------------------
                IMainMenuHabanero menu = menuBuilder.BuildMainMenu(habaneroMenu);
                IMenuItem formsMenuItem = menu.MenuItems[0].MenuItems[0];
                formsMenuItem.PerformClick();
    
                //---------------Test Result -----------------------
                Assert.IsTrue(called);
                                
            }
    Esempio n. 31
    0
     /// <summary>
     /// Constructor for an <see cref="Item"/>
     /// </summary>
     /// <param name="parentMenu"></param>
     /// <param name="name"></param>
     /// <param name="form"></param>
     /// <param name="controlFactory"></param>
     public Item(HabaneroMenu parentMenu, string name, IControlHabanero form, IControlFactory controlFactory)
     {
         _parentMenu = parentMenu;
         _name = name;
         _controlFactory = controlFactory;
         _form = form;
     }
     public void Test_CreateSubMenuItems_ShouldCreatePanelWithLeafMenu()
     {
         //---------------Set up test pack-------------------
         HabaneroMenu habaneroMenu = new HabaneroMenu("Main");
         string subMenuName = TestUtil.GetRandomString();
         habaneroMenu.AddSubMenu(subMenuName);
         habaneroMenu.AddSubMenu("SecondSubMenu");
         CollapsibleMenuBuilderWin menuBuilder = (CollapsibleMenuBuilderWin)CreateMenuBuilder();
         IMenuItem menuItem = new CollapsibleSubMenuItemWin(GetControlFactory(), "Some Sub Menu");
         //---------------Assert Precondition----------------
         Assert.AreEqual(0, menuItem.MenuItems.Count);
         ICollapsiblePanel menuItemAsControl = (ICollapsiblePanel)menuItem;
         Assert.AreEqual(1, menuItemAsControl.Controls.Count);
         Assert.AreEqual(2, habaneroMenu.Submenus.Count);
         //---------------Execute Test ----------------------
         menuBuilder.BuildSubMenu(habaneroMenu, menuItem.MenuItems);
         //---------------Test Result -----------------------
         Assert.AreEqual(2, menuItem.MenuItems.Count);
         Assert.AreEqual(1, menuItemAsControl.Controls.Count);
     }
     protected override IMainMenuHabanero CreateControl(HabaneroMenu menu)
     {
         return new CollapsibleMenuWin(menu);
     }
            public void Test_BuildMainMenu_TwoSubMenus_ShouldCreateSubMenusAndLeafMenuItems()
            {
                //---------------Set up test pack-------------------
                HabaneroMenu habaneroMenu = new HabaneroMenu("Main");
                string subMenuName = "sub_" + TestUtil.GetRandomString();
                HabaneroMenu submenu = habaneroMenu.AddSubMenu(subMenuName);
                string menuItemName = "menu_" + TestUtil.GetRandomString();
                submenu.AddMenuItem(menuItemName);
                HabaneroMenu submenu2 = habaneroMenu.AddSubMenu(TestUtil.GetRandomString());
                submenu2.AddMenuItem("subsub_" + TestUtil.GetRandomString());
                submenu2.AddMenuItem("subsub_" + TestUtil.GetRandomString());
    
                IMenuBuilder menuBuilder = CreateMenuBuilder();
                //---------------Assert Preconditions---------------
                Assert.AreEqual(2, habaneroMenu.Submenus.Count);
                //---------------Execute Test ----------------------
                IMainMenuHabanero menu = menuBuilder.BuildMainMenu(habaneroMenu);
                //---------------Test Result -----------------------
                Assert.IsInstanceOf(typeof(ICollapsiblePanelGroupControl), menu);
                ICollapsiblePanelGroupControl menuAsCP = (ICollapsiblePanelGroupControl)menu;
                Assert.AreEqual(2, menuAsCP.PanelsList.Count);
                ICollapsiblePanel collapsiblePanel1 = menuAsCP.PanelsList[0];
                Assert.AreEqual(subMenuName, collapsiblePanel1.CollapseButton.Text);
                Assert.IsNotNull(collapsiblePanel1);
                Assert.IsNotNull(collapsiblePanel1.ContentControl);
                Assert.AreEqual(1, collapsiblePanel1.ContentControl.Controls.Count);
    
                ICollapsiblePanel collapsiblePanel2 = menuAsCP.PanelsList[1];
                Assert.AreEqual(submenu2.Name, collapsiblePanel2.Text);
                Assert.AreEqual(submenu2.Name, collapsiblePanel2.Name);
                Assert.AreEqual(submenu2.Name, collapsiblePanel2.CollapseButton.Text);
    
                Assert.IsNotNull(collapsiblePanel2);
                Assert.IsNotNull(collapsiblePanel2.ContentControl);
                Assert.AreEqual(2, collapsiblePanel2.ContentControl.Controls.Count);
    
                Assert.GreaterOrEqual(collapsiblePanel1.Top, collapsiblePanel2.Top + collapsiblePanel2.Height, "The collapsible panel are put in reverse order.");
            }