//--------------------------------------------------------------------------
        // Private Methods
        //--------------------------------------------------------------------------

        /// <summary>
        /// Get the DrawingBrush icon for the status.
        /// </summary>
        /// <param name="status">Requested status</param>
        /// <returns>A DrawingBrush on success (valid status, DrawingBrush found), null otherwise.</returns>
        private static DrawingBrush GetDrawingBrushFromStatus(RightsManagementStatus status)
        {
            if (_brushResources == null)
            {
                // Get the entire list of RightsManagementStatus values.
                Array statusList = Enum.GetValues(typeof(RightsManagementStatus));

                // Construct the array to hold brush references.
                _brushResources = new DrawingBrush[statusList.Length];

                // To find the DrawingBrushes in the theme resources we need a FrameworkElement.
                // TextBlock was used as it appears to have a very small footprint, and won't
                // take long to construct.  The actual FrameworkElement doesn't matter as long
                // as we have an instance to one
                _frameworkElement = new TextBlock();
            }

            if ((_brushResources != null) && (_frameworkElement != null))
            {
                int index = (int)status;

                // If there is no cached value of the requested DrawingBrush, then find
                // it in the Resources.
                if (_brushResources[index] == null)
                {
                    // Determine resource name.
                    string resourceName = "PUIRMStatus"
                                          + Enum.GetName(typeof(RightsManagementStatus), status)
                                          + "BrushKey";

                    // Acquire reference to the brush.
                    object resource = _frameworkElement.FindResource(
                        new ComponentResourceKey(typeof(PresentationUIStyleResources), resourceName));

                    // Set cache value for the brush.
                    _brushResources[index] = resource as DrawingBrush;
                }
                return(_brushResources[index]);
            }

            return(null);
        }
        //------------------------------------------------------
        // Internal Methods
        //------------------------------------------------------

        /// <summary>
        /// GetDocumentLevelResources.
        /// </summary>
        internal static DocumentStatusResources GetDocumentLevelResources(RightsManagementStatus status)
        {
            DocumentStatusResources docStatusResources = new DocumentStatusResources();

            // Set appropriate Text and ToolTip values.
            switch (status)
            {
            case (RightsManagementStatus.Protected):
                docStatusResources.Text    = SR.Get(SRID.RMProtected);
                docStatusResources.ToolTip = SR.Get(SRID.RMAppliedToolTip);
                break;

            default:     // RightsManagementStatus.Unknown or RightsManagementStatus.Unprotected
                docStatusResources.Text    = String.Empty;
                docStatusResources.ToolTip = SR.Get(SRID.RMDefaultToolTip);
                break;
            }

            docStatusResources.Image = GetDrawingBrushFromStatus(status);

            return(docStatusResources);
        }