Example #1
0
        /// <summary>
        /// Initialize a new instance of the ViewDrawRibbonTab class.
        /// </summary>
        /// <param name="ribbon">Reference to owning ribbon control.</param>
        /// <param name="layoutTabs">Reference to view used for layout out tabs.</param>
        /// <param name="needPaint">Delegate for notifying paint requests.</param>
        public ViewDrawRibbonTab(KryptonRibbon ribbon,
                                 ViewLayoutRibbonTabs layoutTabs,
                                 NeedPaintHandler needPaint)
        {
            Debug.Assert(ribbon != null);
            Debug.Assert(layoutTabs != null);
            Debug.Assert(needPaint != null);

            // Cache incoming values
            Ribbon = ribbon;
            ViewLayoutRibbonTabs = layoutTabs;
            _needPaint           = needPaint;

            // Create overrides for handling a focus state
            _paletteGeneral                      = ribbon.StateCommon.RibbonGeneral;
            _overrideStateNormal                 = new PaletteRibbonDoubleInheritOverride(Ribbon.OverrideFocus.RibbonTab, Ribbon.OverrideFocus.RibbonTab, Ribbon.StateNormal.RibbonTab, Ribbon.StateNormal.RibbonTab, PaletteState.FocusOverride);
            _overrideStateTracking               = new PaletteRibbonDoubleInheritOverride(Ribbon.OverrideFocus.RibbonTab, Ribbon.OverrideFocus.RibbonTab, Ribbon.StateTracking.RibbonTab, Ribbon.StateTracking.RibbonTab, PaletteState.FocusOverride);
            _overrideStateCheckedNormal          = new PaletteRibbonDoubleInheritOverride(Ribbon.OverrideFocus.RibbonTab, Ribbon.OverrideFocus.RibbonTab, Ribbon.StateCheckedNormal.RibbonTab, Ribbon.StateCheckedNormal.RibbonTab, PaletteState.FocusOverride);
            _overrideStateCheckedTracking        = new PaletteRibbonDoubleInheritOverride(Ribbon.OverrideFocus.RibbonTab, Ribbon.OverrideFocus.RibbonTab, Ribbon.StateCheckedTracking.RibbonTab, Ribbon.StateCheckedTracking.RibbonTab, PaletteState.FocusOverride);
            _overrideStateContextTracking        = new PaletteRibbonDoubleInheritOverride(Ribbon.OverrideFocus.RibbonTab, Ribbon.OverrideFocus.RibbonTab, Ribbon.StateContextTracking.RibbonTab, Ribbon.StateContextTracking.RibbonTab, PaletteState.FocusOverride);
            _overrideStateContextCheckedNormal   = new PaletteRibbonDoubleInheritOverride(Ribbon.OverrideFocus.RibbonTab, Ribbon.OverrideFocus.RibbonTab, Ribbon.StateContextCheckedNormal.RibbonTab, Ribbon.StateContextCheckedNormal.RibbonTab, PaletteState.FocusOverride);
            _overrideStateContextCheckedTracking = new PaletteRibbonDoubleInheritOverride(Ribbon.OverrideFocus.RibbonTab, Ribbon.OverrideFocus.RibbonTab, Ribbon.StateContextCheckedTracking.RibbonTab, Ribbon.StateContextCheckedTracking.RibbonTab, PaletteState.FocusOverride);
            _overrideCurrent                     = _overrideStateNormal;

            // Create and default the setup of the context colors provider
            _paletteContextCurrent = new PaletteRibbonContextDouble(Ribbon);
            _paletteContextCurrent.SetInherit(_overrideCurrent);

            // Use a class to convert from ribbon tab to content interface
            _contentProvider = new RibbonTabToContent(_paletteGeneral, _paletteContextCurrent);

            // Use a controller to change state because of mouse movement
            RibbonTabController controller = new(Ribbon, this, _needPaint);

            controller.Click        += OnTabClicked;
            controller.ContextClick += OnTabContextClicked;
            MouseController          = controller;
            SourceController         = controller;
            KeyController            = controller;

            // Associate this view with the source component (required for design time selection)
            Component = _ribbonTab;

            // Create and add the draw content for display inside the tab
            Add(new ViewDrawContent(_contentProvider, this, VisualOrientation.Top, true, false));

            // Create the state specific memento array
            _mementos = new IDisposable[Enum.GetValues(typeof(PaletteState)).Length];

            _preferredBorder2007 = new Padding((int)(12 * FactorDpiX), (int)(3 * FactorDpiY), (int)(12 * FactorDpiX), (int)(1 * FactorDpiY));
            _preferredBorder2010 = new Padding((int)(8 * FactorDpiX), (int)(4 * FactorDpiY), (int)(8 * FactorDpiX), (int)(3 * FactorDpiY));
            _layoutBorder2007    = new Padding((int)(4 * FactorDpiX), (int)(3 * FactorDpiY), (int)(4 * FactorDpiX), (int)(1 * FactorDpiY));
            _layoutBorder2010    = new Padding((int)(1 * FactorDpiX), (int)(4 * FactorDpiY), (int)(0 * FactorDpiX), (int)(3 * FactorDpiY));
        }
Example #2
0
        private void CheckPaletteState(ViewContext context)
        {
            // Should control be enabled or disabled
            bool enabled = IsFixed || context.Control.Enabled;

            // Ensure we and child and in correct enabled state
            Enabled = enabled;

            // Better check we have a child!
            if (Count > 0)
            {
                this[0].Enabled = enabled;
            }

            // If disabled...
            if (!enabled)
            {
                //...must always be using the normal overrides
                _paletteContextCurrent.SetInherit(_overrideStateNormal);
            }
            else
            {
                // Default to using this element calculated state
                PaletteState buttonState = State;

                // Update the checked state
                Checked = (_ribbon.SelectedTab == RibbonTab);

                // Is this tab a context tab?
                bool contextTab = !string.IsNullOrEmpty(RibbonTab.ContextName);

                // Apply the checked state if not fixed
                if (!IsFixed)
                {
                    if (Checked)
                    {
                        switch (buttonState)
                        {
                        case PaletteState.Normal:
                        case PaletteState.CheckedNormal:
                        case PaletteState.ContextCheckedNormal:
                            if (contextTab)
                            {
                                buttonState = PaletteState.ContextCheckedNormal;
                            }
                            else
                            {
                                buttonState = PaletteState.CheckedNormal;
                            }
                            break;

                        case PaletteState.Tracking:
                        case PaletteState.CheckedTracking:
                        case PaletteState.ContextCheckedTracking:
                            if (contextTab)
                            {
                                buttonState = PaletteState.ContextCheckedTracking;
                            }
                            else
                            {
                                buttonState = PaletteState.CheckedTracking;
                            }
                            break;
                        }
                    }
                    else
                    {
                        switch (buttonState)
                        {
                        case PaletteState.CheckedNormal:
                        case PaletteState.ContextCheckedNormal:
                            buttonState = PaletteState.Normal;
                            break;

                        case PaletteState.Tracking:
                        case PaletteState.CheckedTracking:
                        case PaletteState.ContextCheckedTracking:
                            if (contextTab)
                            {
                                buttonState = PaletteState.ContextTracking;
                            }
                            else
                            {
                                buttonState = PaletteState.Tracking;
                            }
                            break;
                        }
                    }
                }

                // Set the correct palette based on state
                switch (buttonState)
                {
                case PaletteState.Disabled:
                case PaletteState.Normal:
                    _overrideCurrent = _overrideStateNormal;
                    break;

                case PaletteState.Tracking:
                    _overrideCurrent = _overrideStateTracking;
                    break;

                case PaletteState.CheckedNormal:
                    _overrideCurrent = _overrideStateCheckedNormal;
                    break;

                case PaletteState.CheckedTracking:
                    _overrideCurrent = _overrideStateCheckedTracking;
                    break;

                case PaletteState.ContextTracking:
                    _overrideCurrent = _overrideStateContextTracking;
                    break;

                case PaletteState.ContextCheckedNormal:
                    _overrideCurrent = _overrideStateContextCheckedNormal;
                    break;

                case PaletteState.ContextCheckedTracking:
                    _overrideCurrent = _overrideStateContextCheckedTracking;
                    break;

                default:
                    // Should never happen!
                    Debug.Assert(false);
                    break;
                }

                // Switch the child elements over to correct state
                ElementState = buttonState;

                // Better check we have a child!
                if (Count > 0)
                {
                    this[0].ElementState = buttonState;
                }

                // Update the actual source palette
                _paletteContextCurrent.SetInherit(_overrideCurrent);
            }
        }
 /// <summary>
 /// Sets the inheritence parent.
 /// </summary>
 public void SetInherit(PaletteRibbonDoubleInheritOverride inherit)
 {
     _inherit = inherit;
 }