ComponentFactory.Krypton.Ribbon.ViewDrawRibbonTab.CheckPaletteState C# (CSharp) Method

CheckPaletteState() private method

private CheckPaletteState ( ViewContext context ) : void
context ComponentFactory.Krypton.Toolkit.ViewContext
return void
        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);
            }
        }