示例#1
0
        /// <summary>
        /// Display the tooltip.
        /// </summary>
        /// <owner alias="HillaryM" />
        internal bool Display()
        {
            RefreshInternal();

            // Hide tooltip while positioning
            ElementInternal.Style.Visibility = "hidden";
            ElementInternal.Style.Position   = "absolute";
            ElementInternal.Style.Top        = "0px";
            ElementInternal.Style.Left       = "0px";
            Browser.Document.Body.AppendChild(ElementInternal);
            PositionToolTip();

            // For IE, we need a backframe IFrame in order for the tooltip to show up over
            // ActiveX controls
            if (BrowserUtility.InternetExplorer)
            {
                Utility.PositionBackFrame(Root.TooltipBackFrame, ElementInternal);
                Root.TooltipBackFrame.Style.Visibility = "visible";
            }

            // Show menu once it is positioned
            ElementInternal.Style.Visibility = "visible";
            Visible = true;

            // set the aria visibility
            ElementInternal.SetAttribute("aria-hidden", "false");
            return(true);
        }
示例#2
0
        internal override void EnsureDOMElement()
        {
            if (!CUIUtility.IsNullOrUndefined(ElementInternal))
            {
                return;
            }

            base.EnsureDOMElement();

            // aria supoort for tabs
            ElementInternal.SetAttribute("role", "tabpanel");
            ElementInternal.SetAttribute("aria-labelledby", Id + "-title");
        }
示例#3
0
 /// <summary>
 /// Hide the ToolTip.
 /// </summary>
 /// <owner alias="HillaryM" />
 internal void Hide()
 {
     if (!CUIUtility.IsNullOrUndefined(ElementInternal))
     {
         ElementInternal.Style.Visibility = "hidden";
         // set the aria visibility
         ElementInternal.SetAttribute("aria-hidden", "true");
     }
     if (BrowserUtility.InternetExplorer)
     {
         Root.TooltipBackFrame.Style.Visibility = "hidden";
     }
     Visible = false;
 }
示例#4
0
        /// <summary>
        /// Creates the HTML for the ToolTip.
        /// </summary>
        /// <owner alias="HillaryM" />
        internal override void RefreshInternal()
        {
            if (NeedsDelayIniting)
            {
                DoDelayedInit();
            }

            EnsureDOMElementAndEmpty();

            // set the aria role
            ElementInternal.SetAttribute("role", "tooltip");

            // set the aria visibility
            ElementInternal.SetAttribute("aria-hidden", "true");

            if (CUIUtility.IsNullOrUndefined(_elmBody))
            {
                _elmBody           = new Div();
                _elmBody.ClassName = "ms-cui-tooltip-body";
            }
            else
            {
                _elmBody = (Div)Utility.RemoveChildNodes(_elmBody);
            }
            ElementInternal.AppendChild(_elmBody);

            if (CUIUtility.IsNullOrUndefined(_elmInnerDiv))
            {
                _elmInnerDiv           = new Div();
                _elmInnerDiv.ClassName = "ms-cui-tooltip-glow";
                _elmBody.AppendChild(_elmInnerDiv);
            }
            else
            {
                _elmInnerDiv = (Div)Utility.RemoveChildNodes(_elmInnerDiv);
            }

            // set the title and shortcut
            if (CUIUtility.IsNullOrUndefined(_elmTitle))
            {
                _elmTitle = new Heading1();
                if (TitleInternal.Length > _controlTitleLength)
                {
                    UIUtility.SetInnerText(_elmTitle, TitleInternal.Substring(0, _controlTitleLength));
                }
                else
                {
                    UIUtility.SetInnerText(_elmTitle, Title);
                }
                _elmInnerDiv.AppendChild(_elmTitle);
            }

            // set the image if available
            if (CUIUtility.IsNullOrUndefined(_elmDescriptionImage) &&
                !string.IsNullOrEmpty(Properties.ToolTipImage32by32))
            {
                _elmDescriptionImage     = new Image();
                _elmDescriptionImageCont = Utility.CreateClusteredImageContainerNew(
                    ImgContainerSize.Size32by32,
                    Properties.ToolTipImage32by32,
                    Properties.ToolTipImage32by32Class,
                    _elmDescriptionImage,
                    true,
                    false,
                    Properties.ToolTipImage32by32Top,
                    Properties.ToolTipImage32by32Left);
                _elmDescriptionImageCont.ClassName = _elmDescriptionImageCont.ClassName + " ms-cui-tooltip-bitmap ";
                _elmInnerDiv.AppendChild(_elmDescriptionImageCont);
            }

            // set the description
            string selectedItemTitle = Properties.ToolTipSelectedItemTitle;
            string descriptionText   = Description;

            if (CUIUtility.IsNullOrUndefined(_elmDescription) &&
                (!string.IsNullOrEmpty(descriptionText) ||
                 !string.IsNullOrEmpty(selectedItemTitle)))
            {
                _elmDescription           = new Div();
                _elmDescription.ClassName = "ms-cui-tooltip-description";
                if (!string.IsNullOrEmpty(Properties.ToolTipImage32by32))
                {
                    _elmDescription.Style.Width = "80%";
                }
                _elmInnerDiv.AppendChild(_elmDescription);

                string seletedItemTitlePrefix = Root.Properties.ToolTipSelectedItemTitlePrefix;
                if (!string.IsNullOrEmpty(selectedItemTitle) &&
                    !string.IsNullOrEmpty(seletedItemTitlePrefix))
                {
                    string selectedItemText = String.Format(seletedItemTitlePrefix, selectedItemTitle);
                    _elmSelectedItemTitle = new Paragraph();
                    UIUtility.SetInnerText(_elmSelectedItemTitle, selectedItemText);

                    _elmDescription.AppendChild(_elmSelectedItemTitle);
                    _spacerRow3 = new Break();
                    _elmDescription.AppendChild(_spacerRow3);
                }
                if (!string.IsNullOrEmpty(descriptionText))
                {
                    if (descriptionText.Length > _controlDescriptionLength)
                    {
                        _elmDescription.InnerHtml = _elmDescription.InnerHtml + Utility.HtmlEncodeAllowSimpleTextFormatting(descriptionText.Substring(0, _controlDescriptionLength), true);
                    }
                    else
                    {
                        _elmDescription.InnerHtml = _elmDescription.InnerHtml + Utility.HtmlEncodeAllowSimpleTextFormatting(descriptionText, true);
                    }
                }
            }

            // Disabled info explaining why a command is currently disabled
            if (CUIUtility.IsNullOrUndefined(_elmDisabledInfo) &&
                !CUIUtility.IsNullOrUndefined(_disabledInfoProperties) &&
                !string.IsNullOrEmpty(_disabledInfoProperties.Title))
            {
                // provide spacer to distinguish from main description above
                _spacerDiv1           = new Div();
                _spacerDiv1.ClassName = "ms-cui-tooltip-clear";
                _elmInnerDiv.AppendChild(_spacerDiv1);

                _spacerRow1 = new HorizontalRule();
                _elmInnerDiv.AppendChild(_spacerRow1);

                // title for this message
                _elmDisabledInfoTitle           = new Div();
                _elmDisabledInfoTitle.ClassName = "ms-cui-tooltip-footer";
                _elmInnerDiv.AppendChild(_elmDisabledInfoTitle);

                _elmDisabledInfoTitleText = new Div();
                UIUtility.SetInnerText(_elmDisabledInfoTitleText, _disabledInfoProperties.Title);

                // icon for this message
                _elmDisabledInfoIcon     = new Image();
                _elmDisabledInfoIconCont = Utility.CreateClusteredImageContainerNew(
                    ImgContainerSize.Size16by16,
                    _disabledInfoProperties.Icon,
                    _disabledInfoProperties.IconClass,
                    _elmDisabledInfoIcon,
                    true,
                    false,
                    _disabledInfoProperties.IconTop,
                    _disabledInfoProperties.IconLeft);

                _elmDisabledInfoIconCont.Style.VerticalAlign = "top";

                // switch display based on text direction
                // REVIEW(jkern,josefl): I don't think that we need to manually do this.  We should get it for free in
                // the browser with the "dir=rtl" attribute.  Check this when the RTL work is done.
                if (Root.TextDirection == Direction.LTR)
                {
                    _elmDisabledInfoTitle.AppendChild(_elmDisabledInfoIconCont);
                    _elmDisabledInfoTitle.AppendChild(_elmDisabledInfoTitleText);
                }
                else
                {
                    _elmDisabledInfoTitle.AppendChild(_elmDisabledInfoTitleText);
                    _elmDisabledInfoTitle.AppendChild(_elmDisabledInfoIconCont);
                }

                // disabled info text
                if (!string.IsNullOrEmpty(_disabledInfoProperties.Description))
                {
                    _elmDisabledInfo             = new Div();
                    _elmDisabledInfo.ClassName   = "ms-cui-tooltip-description";
                    _elmDisabledInfo.Style.Width = "90%";
                    UIUtility.SetInnerText(_elmDisabledInfo, _disabledInfoProperties.Description);
                    _elmInnerDiv.AppendChild(_elmDisabledInfo);
                }
            }

            // set the footer
            if (!CUIUtility.IsNullOrUndefined(_elmFooter) &&
                !string.IsNullOrEmpty(Root.Properties.ToolTipFooterText) &&
                !string.IsNullOrEmpty(Root.Properties.ToolTipFooterImage16by16) &&
                (((!CUIUtility.IsNullOrUndefined(_disabledInfoProperties)) &&
                  (!string.IsNullOrEmpty(_disabledInfoProperties.HelpKeyWord))) ||
                 (!string.IsNullOrEmpty(Properties.ToolTipHelpKeyWord))))
            {
                _spacerDiv2           = new Div();
                _spacerDiv2.ClassName = "ms-cui-tooltip-clear";
                _elmInnerDiv.AppendChild(_spacerDiv2);

                _spacerRow2 = new HorizontalRule();
                _elmInnerDiv.AppendChild(_spacerRow2);

                _elmFooter           = new Div();
                _elmFooter.ClassName = "ms-cui-tooltip-footer";
                _elmInnerDiv.AppendChild(_elmFooter);

                _elmFooterTitleText = new Div();
                UIUtility.SetInnerText(_elmFooterTitleText, Root.Properties.ToolTipFooterText);

                _elmFooterIcon = new Image();

                _elmFooterIconCont = Utility.CreateClusteredImageContainerNew(
                    ImgContainerSize.Size16by16,
                    Root.Properties.ToolTipFooterImage16by16,
                    Root.Properties.ToolTipFooterImage16by16Class,
                    _elmFooterIcon,
                    true,
                    false,
                    Root.Properties.ToolTipFooterImage16by16Top,
                    Root.Properties.ToolTipFooterImage16by16Left
                    );

                _elmFooterIconCont.Style.VerticalAlign = "top";

                // switch display based on text direction
                // REVIEW(jkern,josefl): I don't think that we need to manually do this.  We should get it for free in
                // the browser with the "dir=rtl" attribute.  Check this when the RTL work is done.
                if (Root.TextDirection == Direction.LTR)
                {
                    _elmFooter.AppendChild(_elmFooterIconCont);
                    _elmFooter.AppendChild(_elmFooterTitleText);
                }
                else
                {
                    _elmFooter.AppendChild(_elmFooterTitleText);
                    _elmFooter.AppendChild(_elmFooterIconCont);
                }
            }

            // build DOM structure
            this.AppendChildrenToElement(_elmBody);
            base.RefreshInternal();
        }
示例#5
0
 internal override void EnsureDOMElement()
 {
     base.EnsureDOMElement();
     ElementInternal.SetAttribute("role", "toolbar");
 }