Example #1
0
        /// <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());
        }
Example #2
0
        /// <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;
        }
Example #3
0
 /// <summary>
 /// Raises the BeforeRibbonPanelPopupClose event.
 /// </summary>
 protected virtual void OnBeforeRibbonPanelPopupClose(RibbonPopupCloseEventArgs e)
 {
     if (BeforeRibbonPanelPopupClose != null)
         BeforeRibbonPanelPopupClose(this, e);
 }