/// <summary> /// Displays the active ribbon panel on the popup if ribbon control is collapsed. /// </summary> /// <param name="source">Reference to the object that was cause of the event. This is provided to the BeforeRibbonPanelPopupClose event if an menu needs to be closed.</param> /// <param name="eventSource">Indicates the event source. This is provided to the BeforeRibbonPanelPopupClose event if an menu needs to be closed.</param> public void PopupRibbon(object source, eEventSource eventSource) { if (this.Expanded || this.SelectedRibbonTabItem == null || this.SelectedRibbonTabItem.Panel == null) return; if (m_PopupRibbonPanel == this.SelectedRibbonTabItem.Panel) return; Control f = this.FindForm(); if (f == null) f = this.Parent; if (f == null) return; // Close any currently open panels. RibbonPanel previousVisiblePanel = m_PopupRibbonPanel; if (previousVisiblePanel != null) { RibbonPopupCloseEventArgs pce = new RibbonPopupCloseEventArgs(source, eventSource); OnBeforeRibbonPanelPopupClose(pce); if (pce.Cancel) return; } //Raise events CancelEventArgs ce = new CancelEventArgs(); OnBeforeRibbonPanelPopup(ce); if (ce.Cancel) return; m_PopupMode = true; RibbonPanel panel = this.SelectedRibbonTabItem.Panel; panel.SuspendLayout(); this.Controls.Remove(panel); panel.Visible = false; panel.Dock = DockStyle.None; f.Controls.Add(panel); Point p = m_RibbonStrip.PointToScreen(new Point(0, m_RibbonStrip.Height)); p = f.PointToClient(p); panel.Font = this.Font; panel.Bounds = new Rectangle(p.X, p.Y - DefaultBottomDockPadding - 1, this.Width, GetPopupRibbonPanelHeight(panel)); panel.SetPopupMode(true, this); panel.ResumeLayout(); panel.Visible = true; panel.BringToFront(); CloseRibbonMenu(previousVisiblePanel); SetupActiveWindowTimer(); m_PopupRibbonPanel = panel; // Raise events... OnAfterRibbonPanelPopup(new EventArgs()); }
/// <summary> /// Closes the Ribbon Menu if one is currently displayed. /// </summary> public void CloseRibbonMenu(object source, eEventSource eventSource) { if (!m_PopupMode || m_PopupRibbonPanel == null) return; RibbonPopupCloseEventArgs pce = new RibbonPopupCloseEventArgs(source, eventSource); OnBeforeRibbonPanelPopupClose(pce); if (pce.Cancel) return; CloseRibbonMenu(m_PopupRibbonPanel); m_PopupRibbonPanel = null; m_PopupMode = false; }
/// <summary> /// Raises the BeforeRibbonPanelPopupClose event. /// </summary> protected virtual void OnBeforeRibbonPanelPopupClose(RibbonPopupCloseEventArgs e) { if (BeforeRibbonPanelPopupClose != null) BeforeRibbonPanelPopupClose(this, e); }