public void MergeOnlyOneClickEventSubscribed() { using (MessageTest messageTest = new MessageTest()) { messageTest.m_nFirstOneClicked = 0; messageTest.m_nSecondOneClicked = 0; MenuExtender menuExtender = new MenuExtender(); menuExtender.MessageMediator = new Mediator(); menuExtender.MessageMediator.AddColleague(messageTest); MainMenu first = new MainMenu(); MenuItem firstOne = new MenuItem("FirstOne"); first.MenuItems.Add(new MenuItem(MenuMerge.MergeItems, 0, Shortcut.None, "First", null, null, null, new MenuItem[] { firstOne })); menuExtender.SetCommandId(firstOne, "FirstOne"); MainMenu second = new MainMenu(); MenuItem secondOne = new MenuItem("SecondOne"); second.MenuItems.Add(new MenuItem(MenuMerge.MergeItems, 0, Shortcut.None, "Second", null, null, null, new MenuItem[] { secondOne })); menuExtender.SetCommandId(secondOne, "SecondOne"); MainMenu result = menuExtender.MergeMenus(first, second); result.MenuItems[0].MenuItems[0].PerformClick(); result.MenuItems[0].MenuItems[1].PerformClick(); Assert.AreEqual(1, messageTest.m_nFirstOneClicked); Assert.AreEqual(1, messageTest.m_nSecondOneClicked); // Clean up the mess now. menuExtender.MessageMediator.RemoveColleague(messageTest); menuExtender.MessageMediator.Dispose(); menuExtender.MessageMediator = null; } }
/// ------------------------------------------------------------------------------------ /// <summary> /// Builds a menu collection for the specified sidebar tab. The collection contains a /// menu item for each button plus a configure item at the end. /// </summary> /// <param name="tab">given sidebar tab</param> /// <returns>array of menu items from sidebar tab</returns> /// ------------------------------------------------------------------------------------ public MenuItem[] BuildMenusForSideBarTab(SideBarTab tab) { List <MenuItem> mnuList = new List <MenuItem>(); // Create a menu item for each button on the sidebar tab. foreach (SideBarButton button in tab.Buttons) { MenuItem menuItem = new MenuItem(button.Text); MenuExtender.AddMenuItem(menuItem); MenuExtender.SetTag(menuItem, button); MenuExtender.SetCommandId(menuItem, "SideBarButtonMenu"); mnuList.Add(menuItem); } // Create the separator MenuItem mnuSepr = new MenuItem("-"); MenuExtender.AddMenuItem(mnuSepr); MenuExtender.SetCommandId(mnuSepr, tab.ConfigureMenuCommandId); MenuExtender.SetTag(mnuSepr, tab); mnuList.Add(mnuSepr); // Create the configure menu item. MenuItem cfgMenuItem = new MenuItem(tab.ConfigureMenuText); MenuExtender.AddMenuItem(cfgMenuItem); MenuExtender.SetCommandId(cfgMenuItem, tab.ConfigureMenuCommandId); MenuExtender.SetImageList(cfgMenuItem, tab.ConfigureMenuImageList); MenuExtender.SetImageIndex(cfgMenuItem, tab.ConfigureMenuImageIndex); MenuExtender.SetTag(cfgMenuItem, tab); mnuList.Add(cfgMenuItem); return(mnuList.ToArray()); }
public void Merge2MenusLargerSecondMenu() { MainMenu first = new MainMenu(); first.MenuItems.Add(new MenuItem(MenuMerge.MergeItems, 0, Shortcut.None, "First", null, null, null, new MenuItem[] { new MenuItem("FirstOne") })); MainMenu second = new MainMenu(); second.MenuItems.Add(new MenuItem(MenuMerge.MergeItems, 0, Shortcut.None, "Second", null, null, null, new MenuItem[] { new MenuItem("SecondOne") })); second.MenuItems.Add(new MenuItem(MenuMerge.MergeItems, 1, Shortcut.None, "Second2", null, null, null, new MenuItem[] { new MenuItem("Second2One") })); MenuExtender menuExtender = new MenuExtender(); MainMenu result = menuExtender.MergeMenus(first, second); Assert.AreEqual(2, result.MenuItems.Count); Assert.AreEqual("First", result.MenuItems[0].Text); Assert.AreEqual("Second2", result.MenuItems[1].Text); Assert.AreEqual(2, result.MenuItems[0].MenuItems.Count); Assert.AreEqual("FirstOne", result.MenuItems[0].MenuItems[0].Text); Assert.AreEqual("SecondOne", result.MenuItems[0].MenuItems[1].Text); Assert.AreEqual(1, result.MenuItems[1].MenuItems.Count); Assert.AreEqual("Second2One", result.MenuItems[1].MenuItems[0].Text); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Remove all the items from the view menu that correspond to the sidebar tabs. /// </summary> /// ------------------------------------------------------------------------------------ private void RemoveOurViewMenuItems() { // Iterate through the collection of menu items we've previously added // to the view menu. foreach (MenuItem menuItem in m_mnuViewCollection) { // Find the menu item in the view menu's menu item collection and // remove that menu item from the view menu. foreach (MenuItem mnuTabItem in ViewMenu.MenuItems) { // Have we found one of our items in the view menu? if (menuItem == mnuTabItem) { // Does our view menu item have sub items? if (mnuTabItem.MenuItems.Count > 0) { // Clear the sub items from the menu extender. foreach (MenuItem mnuButtonItem in mnuTabItem.MenuItems) { MenuExtender.ClearMenuItem(mnuButtonItem); } } // Remove our view menu item from the view menu. ViewMenu.MenuItems.Remove(mnuTabItem); break; } } } m_mnuViewCollection = null; }
public void Add2MenuItemsMergeOrderSetOn2ndMenu() { MainMenu first = new MainMenu(); first.MenuItems.Add(new MenuItem(MenuMerge.Add, 1, Shortcut.None, "First", null, null, null, null)); MainMenu second = new MainMenu(); second.MenuItems.Add(new MenuItem(MenuMerge.Add, 0, Shortcut.None, "Second", null, null, null, null)); MenuExtender menuExtender = new MenuExtender(); MainMenu result = menuExtender.MergeMenus(first, second); Assert.AreEqual(2, result.MenuItems.Count); Assert.AreEqual("Second", result.MenuItems[0].Text); Assert.AreEqual("First", result.MenuItems[1].Text); }
/// ------------------------------------------------------------------------------------ /// <summary> /// This will trap clicks on the info. bar buttons and build a context menu containing /// one item for each side bar button in the corresponding sidebar tab. It will also /// add a title item with the corresponding tab's title. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// ------------------------------------------------------------------------------------ private void infoButton_Click(object sender, EventArgs e) { InformationBarButton button = sender as InformationBarButton; if (button == null || button.Tag == null) { return; } SideBarTab tab = button.Tag as SideBarTab; if (tab == null) { return; } if (m_cmnuInfoBarButton == null) { m_cmnuInfoBarButton = new ContextMenu(); } else { // Clear the menus items so that we start fresh the next time the // user clicks on the information bar button. foreach (MenuItem menuItem in m_cmnuInfoBarButton.MenuItems) { MenuExtender.ClearMenuItem(menuItem); } m_cmnuInfoBarButton.MenuItems.Clear(); } // Load the context menu m_cmnuInfoBarButton.MenuItems.Add(new LabelMenuItem(tab.Title)); m_cmnuInfoBarButton.MenuItems.AddRange(BuildMenusForSideBarTab(tab)); MenuExtender.AddContextMenu(m_cmnuInfoBarButton); // Popup the loaded ContextMenu just below the button. m_cmnuInfoBarButton.Show(button, new Point(0, button.Bottom)); }
protected virtual bool CreatePlaceholder(ControlCollection container, string placeholder, string defaultContent, AttributeDictionary attributes) { if (placeholder == "membership-bar") { } if (placeholder == "menu-bar") { var menuDiv = new HtmlGenericControl(); menuDiv.TagName = "div"; menuDiv.ID = "PageMenuBar"; menuDiv.Attributes["class"] = "PageMenuBar"; container.Add(menuDiv); var menu = new MenuExtender(); menu.ID = "Menu1"; menu.DataSourceID = "SiteMapDataSource1"; menu.TargetControlID = menuDiv.ID; menu.HoverStyle = ((MenuHoverStyle)(TypeDescriptor.GetConverter(typeof(MenuHoverStyle)).ConvertFromString(attributes.ValueOf("data-hover-style", "Auto")))); menu.PopupPosition = ((MenuPopupPosition)(TypeDescriptor.GetConverter(typeof(MenuPopupPosition)).ConvertFromString(attributes.ValueOf("data-popup-position", "Left")))); menu.ShowSiteActions = (attributes["data-show-site-actions"] == "true"); menu.PresentationStyle = ((MenuPresentationStyle)(TypeDescriptor.GetConverter(typeof(MenuPresentationStyle)).ConvertFromString(attributes.ValueOf("data-presentation-style", "MultiLevel")))); container.Add(menu); return(true); } if (placeholder == "site-map-path") { var siteMapPath1 = new SiteMapPath(); siteMapPath1.ID = "SiteMapPath1"; siteMapPath1.CssClass = "SiteMapPath"; siteMapPath1.PathSeparatorStyle.CssClass = "PathSeparator"; siteMapPath1.CurrentNodeStyle.CssClass = "CurrentNode"; siteMapPath1.NodeStyle.CssClass = "Node"; siteMapPath1.RootNodeStyle.CssClass = "RootNode"; container.Add(siteMapPath1); return(true); } return(false); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Creates a menu for each tab and adds them to the spcecified view menu. /// </summary> /// ------------------------------------------------------------------------------------ public void BuildViewMenu() { if (ViewMenu == null || sideBarFw == null || sideBarFw.Tabs.Count == 0 || MenuExtender == null) { return; } // If necessary, remove existing sidebar menu items from the view menu. if (m_mnuViewCollection != null) { RemoveOurViewMenuItems(); } List <MenuItem> mnuList = new List <MenuItem>(); // Go through each tab and add a menu with sub menus off the specified view menu. int position = 0; foreach (SideBarTab tab in sideBarFw.Tabs) { MenuItem menuItem = new MenuItem(tab.Title); mnuList.Add(menuItem); menuItem.MenuItems.AddRange(BuildMenusForSideBarTab(tab)); ViewMenu.MenuItems.Add(position, menuItem); MenuExtender.AddMenuItem(menuItem); position++; } // Save the collection of meun items we added to the view menu so we can remove // them later if the number of buttons or tabs in the sidebar changes. if (mnuList.Count > 0) { m_mnuViewCollection = mnuList.ToArray(); } }
protected virtual bool CreatePlaceholder(ControlCollection container, string placeholder, string defaultContent, AttributeDictionary attributes) { if (placeholder == "membership-bar") { MembershipBar mb = new MembershipBar(); mb.ID = "mb"; if (attributes["data-display-remember-me"] == "false") { mb.DisplayRememberMe = false; } if (attributes["data-remember-me-set"] == "true") { mb.RememberMeSet = true; } if (attributes["data-display-password-recovery"] == "false") { mb.DisplayPasswordRecovery = false; } if (attributes["data-display-sign-up"] == "false") { mb.DisplaySignUp = false; } if (attributes["data-display-my-account"] == "false") { mb.DisplayMyAccount = false; } if (attributes["data-display-help"] == "false") { mb.DisplayHelp = false; } if (attributes["data-display-login"] == "false") { mb.DisplayLogin = false; } if (!(String.IsNullOrEmpty(attributes["data-idle-user-timeout"]))) { mb.IdleUserTimeout = Convert.ToInt32(attributes["data-idle-user-timeout"]); } if (attributes["data-enable-history"] == "true") { mb.EnableHistory = true; } if (attributes["data-enable-permalinks"] == "true") { mb.EnablePermalinks = true; } container.Add(mb); return(true); } if (placeholder == "menu-bar") { HtmlGenericControl menuDiv = new HtmlGenericControl(); menuDiv.TagName = "div"; menuDiv.ID = "PageMenuBar"; menuDiv.Attributes["class"] = "PageMenuBar"; container.Add(menuDiv); MenuExtender menu = new MenuExtender(); menu.ID = "Menu1"; menu.DataSourceID = "SiteMapDataSource1"; menu.TargetControlID = menuDiv.ID; menu.HoverStyle = ((MenuHoverStyle)(TypeDescriptor.GetConverter(typeof(MenuHoverStyle)).ConvertFromString(attributes.ValueOf("data-hover-style", "Auto")))); menu.PopupPosition = ((MenuPopupPosition)(TypeDescriptor.GetConverter(typeof(MenuPopupPosition)).ConvertFromString(attributes.ValueOf("data-popup-position", "Left")))); menu.ShowSiteActions = (attributes["data-show-site-actions"] == "true"); menu.PresentationStyle = ((MenuPresentationStyle)(TypeDescriptor.GetConverter(typeof(MenuPresentationStyle)).ConvertFromString(attributes.ValueOf("data-presentation-style", "MultiLevel")))); container.Add(menu); return(true); } if (placeholder == "site-map-path") { SiteMapPath siteMapPath1 = new SiteMapPath(); siteMapPath1.ID = "SiteMapPath1"; siteMapPath1.CssClass = "SiteMapPath"; siteMapPath1.PathSeparatorStyle.CssClass = "PathSeparator"; siteMapPath1.CurrentNodeStyle.CssClass = "CurrentNode"; siteMapPath1.NodeStyle.CssClass = "Node"; siteMapPath1.RootNodeStyle.CssClass = "RootNode"; container.Add(siteMapPath1); return(true); } return(false); }
/// ------------------------------------------------------------------------------------ /// <summary> /// C'tor /// </summary> /// <param name="menuExtender">The menu extender</param> /// ------------------------------------------------------------------------------------ internal MainMenuMerge(MenuExtender menuExtender) { m_menuExtender = menuExtender; }
/// ----------------------------------------------------------------------------------- /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> /// ----------------------------------------------------------------------------------- private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.label1 = new System.Windows.Forms.Label(); this.richTextBox1 = new System.Windows.Forms.RichTextBox(); this.mainMenu1 = new System.Windows.Forms.MainMenu(); this.menuItem1 = new System.Windows.Forms.MenuItem(); this.menuItem2 = new System.Windows.Forms.MenuItem(); this.menuItem3 = new System.Windows.Forms.MenuItem(); this.menuItem4 = new System.Windows.Forms.MenuItem(); this.menuItem11 = new System.Windows.Forms.MenuItem(); this.menuItem12 = new System.Windows.Forms.MenuItem(); this.menuItem13 = new System.Windows.Forms.MenuItem(); this.menuItem14 = new System.Windows.Forms.MenuItem(); this.menuItem6 = new System.Windows.Forms.MenuItem(); this.menuItem5 = new System.Windows.Forms.MenuItem(); this.menuItem7 = new System.Windows.Forms.MenuItem(); this.menuWhatsThisHelp = new System.Windows.Forms.MenuItem(); this.menuItem8 = new System.Windows.Forms.MenuItem(); this.menuItem15 = new System.Windows.Forms.MenuItem(); this.menuItem17 = new System.Windows.Forms.MenuItem(); this.menuItem18 = new System.Windows.Forms.MenuItem(); this.menuItem21 = new System.Windows.Forms.MenuItem(); this.menuItem16 = new System.Windows.Forms.MenuItem(); this.menuItem9 = new System.Windows.Forms.MenuItem(); this.menuItem10 = new System.Windows.Forms.MenuItem(); this.menuItem19 = new System.Windows.Forms.MenuItem(); this.menuItem20 = new System.Windows.Forms.MenuItem(); this.statusBar1 = new System.Windows.Forms.StatusBar(); this.statusBarPanel1 = new System.Windows.Forms.StatusBarPanel(); this.menuExtender1 = new SIL.FieldWorks.Common.Controls.MenuExtender(this.components); ((System.ComponentModel.ISupportInitialize)(this.statusBarPanel1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.menuExtender1)).BeginInit(); this.SuspendLayout(); // // label1 // this.label1.AccessibleName = "informationBar"; this.label1.BackColor = System.Drawing.Color.IndianRed; this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0))); this.label1.ForeColor = System.Drawing.SystemColors.ActiveCaptionText; this.label1.Location = new System.Drawing.Point(8, 8); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(280, 24); this.label1.TabIndex = 0; this.label1.Text = "Information Bar Text"; this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // richTextBox1 // this.richTextBox1.AccessibleName = "draftView"; this.richTextBox1.AccessibleRole = System.Windows.Forms.AccessibleRole.Client; this.richTextBox1.Location = new System.Drawing.Point(8, 40); this.richTextBox1.Name = "richTextBox1"; this.richTextBox1.Size = new System.Drawing.Size(280, 136); this.richTextBox1.TabIndex = 1; this.richTextBox1.Text = ""; // // mainMenu1 // this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.menuItem1, this.menuItem7, this.menuItem15, this.menuItem17, this.menuItem16, this.menuItem9, this.menuItem19, this.menuItem20 }); // // menuItem1 // this.menuItem1.Index = 0; this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.menuItem2, this.menuItem3, this.menuItem4, this.menuItem6, this.menuItem5 }); this.menuItem1.Text = "File"; // // menuItem2 // this.menuExtender1.SetImageIndex(this.menuItem2, -1); this.menuItem2.Index = 0; this.menuItem2.Shortcut = System.Windows.Forms.Shortcut.CtrlN; this.menuExtender1.SetStatusMessage(this.menuItem2, "New project"); this.menuItem2.Text = "New"; this.menuItem2.Click += new System.EventHandler(this.menuItem2_Click); // // menuItem3 // this.menuExtender1.SetImageIndex(this.menuItem3, -1); this.menuItem3.Index = 1; this.menuItem3.Shortcut = System.Windows.Forms.Shortcut.CtrlO; this.menuExtender1.SetStatusMessage(this.menuItem3, "Open project"); this.menuItem3.Text = "open"; // // menuItem4 // this.menuExtender1.SetImageIndex(this.menuItem4, -1); this.menuItem4.Index = 2; this.menuItem4.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.menuItem11, this.menuItem12, this.menuItem13, this.menuItem14 }); this.menuItem4.Text = "Print preview..."; // // menuItem11 // this.menuExtender1.SetImageIndex(this.menuItem11, -1); this.menuItem11.Index = 0; this.menuItem11.Text = "&Fun"; // // menuItem12 // this.menuExtender1.SetImageIndex(this.menuItem12, -1); this.menuItem12.Index = 1; this.menuItem12.Text = "&Not Fun"; // // menuItem13 // this.menuExtender1.SetImageIndex(this.menuItem13, -1); this.menuItem13.Index = 2; this.menuItem13.Text = "-"; // // menuItem14 // this.menuExtender1.SetImageIndex(this.menuItem14, -1); this.menuItem14.Index = 3; this.menuItem14.Text = "&More"; // // menuItem6 // this.menuExtender1.SetImageIndex(this.menuItem6, -1); this.menuItem6.Index = 3; this.menuItem6.Text = "-"; // // menuItem5 // this.menuExtender1.SetImageIndex(this.menuItem5, -1); this.menuItem5.Index = 4; this.menuItem5.Text = "Exit"; // // menuItem7 // this.menuItem7.Index = 1; this.menuItem7.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.menuWhatsThisHelp, this.menuItem8 }); this.menuItem7.Text = "H&elp"; // // menuWhatsThisHelp // this.menuExtender1.SetImageIndex(this.menuWhatsThisHelp, -1); this.menuWhatsThisHelp.Index = 0; this.menuWhatsThisHelp.Shortcut = System.Windows.Forms.Shortcut.ShiftF1; this.menuWhatsThisHelp.Text = "Wh&at\'s This?"; // // menuItem8 // this.menuExtender1.SetImageIndex(this.menuItem8, -1); this.menuItem8.Index = 1; this.menuItem8.Text = "&About"; // // menuItem15 // this.menuItem15.Index = 2; this.menuItem15.Text = "&Empty"; // // menuItem17 // this.menuItem17.Index = 3; this.menuItem17.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.menuItem18, this.menuItem21 }); this.menuItem17.Text = "B&ongo"; // // menuItem18 // this.menuExtender1.SetImageIndex(this.menuItem18, -1); this.menuItem18.Index = 0; this.menuItem18.Text = "&Styles"; // // menuItem21 // this.menuExtender1.SetImageIndex(this.menuItem21, -1); this.menuItem21.Index = 1; this.menuItem21.Shortcut = System.Windows.Forms.Shortcut.F1; this.menuItem21.Text = "&Help..."; // // menuItem16 // this.menuItem16.Index = 4; this.menuItem16.Text = "&Im Empty"; // // menuItem9 // this.menuItem9.Index = 5; this.menuItem9.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.menuItem10 }); this.menuItem9.Text = "Last Menu Item"; // // menuItem10 // this.menuExtender1.SetImageIndex(this.menuItem10, -1); this.menuItem10.Index = 0; this.menuItem10.Shortcut = System.Windows.Forms.Shortcut.CtrlN; this.menuItem10.Text = "Nothing"; // // menuItem19 // this.menuItem19.Index = 6; this.menuItem19.Text = "O&blong"; // // menuItem20 // this.menuItem20.Index = 7; this.menuItem20.Text = "For&mat"; // // statusBar1 // this.statusBar1.Location = new System.Drawing.Point(0, 163); this.statusBar1.Name = "statusBar1"; this.statusBar1.Panels.AddRange(new System.Windows.Forms.StatusBarPanel[] { this.statusBarPanel1 }); this.statusBar1.ShowPanels = true; this.statusBar1.Size = new System.Drawing.Size(392, 22); this.statusBar1.TabIndex = 2; this.statusBar1.Text = "statusBar1"; // // statusBarPanel1 // this.statusBarPanel1.Text = "statusBarPanel1"; // // menuExtender1 // this.menuExtender1.DefaultHelpText = null; this.menuExtender1.Parent = null; this.menuExtender1.StatusBar = this.statusBarPanel1; // // Form1 // this.AccessibleName = "dummyTestForm"; this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(392, 185); this.Controls.Add(this.statusBar1); this.Controls.Add(this.richTextBox1); this.Controls.Add(this.label1); this.Menu = this.mainMenu1; this.Name = "Form1"; this.Text = "Dummy Test Form"; ((System.ComponentModel.ISupportInitialize)(this.statusBarPanel1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.menuExtender1)).EndInit(); this.ResumeLayout(false); }