tabitem.cs

来自「浏览器端看到树型目录结构,用户可以完整地看到像windows资源管理器一样的效果」· CS 代码 · 共 811 行 · 第 1/2 页

CS
811
字号
                if (isTab)
                {
                    builtinDefault = new CssCollection();
                    builtinDefault["background-color"] = "#D0D0D0";
                    if ((parent != null) && (parent.Style["color"] != null))
                    {
                        builtinDefault["color"] = parent.Style["color"];
                    }
                    else if ((parent != null) && (parent.ForeColor != Color.Empty))
                    {
                        builtinDefault["color"] = ColorTranslator.ToHtml(parent.ForeColor);
                    }
                    else
                    {
                        builtinDefault["color"] = "#000000";
                    }

                    builtinSelected = new CssCollection();
                    builtinSelected["background-color"] = "#FFFFFF";

                }

                if (parent != null)
                {
                    if (isTab)
                    {
                        globalDefault = parent.TabDefaultStyle;
                        globalSelected = parent.TabSelectedStyle;
                    }
                    else if (isSep)
                    {
                        globalDefault = parent.SepDefaultStyle;
                        globalSelected = parent.SepSelectedStyle;
                    }
                }

                if (builtinDefault != null)
                {
                    style.Merge(builtinDefault, true);
                }
                if (globalDefault != null)
                {
                    style.Merge(globalDefault, true);
                }
                style.Merge(DefaultStyle, true);

                if (Active)
                {
                    if (builtinSelected != null)
                    {
                        style.Merge(builtinSelected, true);
                    }
                    if (globalSelected != null)
                    {
                        style.Merge(globalSelected, true);
                    }
                    style.Merge(SelectedStyle, true);
                }

                return style;
            }
        }

        /// <summary>
        /// true if the tab item is in an active state.
        /// </summary>
        internal virtual bool Active
        {
            get { return false; }
        }

        /// <summary>
        /// The uplevel tag name for the tab item.
        /// </summary>
        protected abstract string UpLevelTag
        {
            get;
        }

        /// <summary>
        /// Adds attributes to the HtmlTextWriter.
        /// </summary>
        /// <param name="writer">The HtmlTextWriter object that receives the content.</param>
        protected override void AddAttributesToRender(HtmlTextWriter writer)
        {
            base.AddAttributesToRender(writer);

            if (AccessKey != String.Empty)
            {
                writer.AddAttribute("accesskey", AccessKey);
            }

            if (!Enabled)
            {
                writer.AddAttribute("disabled", "true");
            }

            if (TabIndex != 0)
            {
                writer.AddAttribute("tabindex", TabIndex.ToString());
            }

            if (ToolTip != String.Empty)
            {
                writer.AddAttribute("title", ToolTip);
            }
        }

        /// <summary>
        /// Writes attributes to the HtmlTextWriter.
        /// </summary>
        /// <param name="writer">The HtmlTextWriter object that receives the content.</param>
        protected override void WriteAttributes(HtmlTextWriter writer)
        {
            base.WriteAttributes(writer);

            if (AccessKey != String.Empty)
            {
                writer.WriteAttribute("accesskey", AccessKey);
            }

            if (!Enabled)
            {
                writer.WriteAttribute("disabled", "true");
            }

            if (TabIndex != 0)
            {
                writer.WriteAttribute("tabindex", TabIndex.ToString());
            }

            if (ToolTip != String.Empty)
            {
                writer.WriteAttribute("title", ToolTip);
            }
        }

        /// <summary>
        /// Writes out TabItem attributes.
        /// </summary>
        /// <param name="writer">The HtmlTextWriter that receives the markup.</param>
        protected virtual void WriteItemAttributes(HtmlTextWriter writer)
        {
            if (DefaultImageUrl != String.Empty)
                writer.WriteAttribute("defaultImageUrl", DefaultImageUrl);
            if (HoverImageUrl != String.Empty)
                writer.WriteAttribute("hoverImageUrl", HoverImageUrl);
            if (SelectedImageUrl != String.Empty)
                writer.WriteAttribute("selectedImageUrl", SelectedImageUrl);

            string style = DefaultStyle.CssText;
            if (style != String.Empty)
                writer.WriteAttribute("defaultStyle", style);
            style = HoverStyle.CssText;
            if (style != String.Empty)
                writer.WriteAttribute("hoverStyle", style);
            style = SelectedStyle.CssText;
            if (style != String.Empty)
                writer.WriteAttribute("selectedStyle", style);
        }

        /// <summary>
        /// Renders the item for uplevel browsers.
        /// </summary>
        /// <param name="writer">The HtmlTextWriter object that receives the content.</param>
        protected override void RenderUpLevelPath(HtmlTextWriter writer)
        {
            writer.WriteBeginTag(TabStrip.TagNamespace + ":" + UpLevelTag);

            WriteAttributes(writer);
            WriteItemAttributes(writer);

            if (Text != String.Empty)
            {
                writer.Write(HtmlTextWriter.TagRightChar);
                writer.Write(Text);
                writer.WriteEndTag(TabStrip.TagNamespace + ":" + UpLevelTag);
            }
            else
            {
                writer.Write(HtmlTextWriter.SelfClosingChars + HtmlTextWriter.TagRightChar);
            }
            writer.WriteLine();
        }

        /// <summary>
        /// Renders the image tag.
        /// </summary>
        /// <param name="writer">The HtmlTextWriter object that receives the content.</param>
        /// <param name="imageUrl">The url of the image.</param>
        protected virtual void RenderImage(HtmlTextWriter writer, string imageUrl)
        {
            writer.AddAttribute(HtmlTextWriterAttribute.Src, imageUrl);
            writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
            writer.AddAttribute(HtmlTextWriterAttribute.Align, "absmiddle");
            writer.RenderBeginTag(HtmlTextWriterTag.Img);
            writer.RenderEndTag();
        }

        /// <summary>
        /// Renders the text property.
        /// </summary>
        /// <param name="writer">The HtmlTextWriter object that receives the content.</param>
        /// <param name="text">The text to render.</param>
        protected virtual void RenderText(HtmlTextWriter writer, string text)
        {
            writer.Write(text);
        }

        /// <summary>
        /// Renders contents for downlevel and visual designers.
        /// </summary>
        /// <param name="writer">The HtmlTextWriter object that receives the content.</param>
        private void RenderContents(HtmlTextWriter writer)
        {
            string imageUrl = CurrentImageUrl;
            bool renderTable = ((imageUrl != String.Empty) && (Text != String.Empty));

            if (renderTable)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
                writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
                writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
                writer.RenderBeginTag(HtmlTextWriterTag.Table);
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                writer.AddAttribute(HtmlTextWriterAttribute.Nowrap, null);
                writer.RenderBeginTag(HtmlTextWriterTag.Td);
            }

            if (imageUrl != String.Empty)
            {
                RenderImage(writer, imageUrl);
            }

            if (renderTable)
            {
                writer.RenderEndTag();
                writer.AddAttribute(HtmlTextWriterAttribute.Nowrap, null);
                writer.RenderBeginTag(HtmlTextWriterTag.Td);
            }

            if (Text != String.Empty)
            {
                RenderText(writer, Text);
            }

            if (renderTable)
            {
                writer.RenderEndTag();
                writer.RenderEndTag();
                writer.RenderEndTag();
            }

            if ((imageUrl == String.Empty) && (Text == String.Empty))
            {
                // Neither text nor image was rendered, so render a blank
                RenderText(writer, "&nbsp;");
            }
        }

        /// <summary>
        /// Renders content for downlevel browsers.
        /// </summary>
        /// <param name="writer">The HtmlTextWriter object that receives the content.</param>
        protected virtual void DownLevelContent(HtmlTextWriter writer)
        {
            RenderContents(writer);
        }

        /// <summary>
        /// Renders the item for downlevel browsers.
        /// </summary>
        /// <param name="htmlWriter">The HtmlTextWriter object that receives the content.</param>
        protected override void RenderDownLevelPath(HtmlTextWriter htmlWriter)
        {
            HtmlInlineWriter writer = new HtmlInlineWriter(htmlWriter);
            if (Orientation == Orientation.Vertical)
            {
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            }

            CurrentStyle.AddAttributesToRender(writer);
            writer.AddAttribute(HtmlTextWriterAttribute.Nowrap, null);

            if (!Enabled)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Disabled, "true");
            }

            if (ToolTip != String.Empty)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Title, ToolTip);
            }

            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            DownLevelContent(writer);

            writer.RenderEndTag();

            writer.AllowNewLine = true;
            writer.WriteLine();

            if (Orientation == Orientation.Vertical)
            {
                writer.RenderEndTag();
            }
        }

        /// <summary>
        /// Renders content for visual designers.
        /// </summary>
        /// <param name="writer">The HtmlTextWriter object that receives the content.</param>
        protected virtual void DesignerContent(HtmlTextWriter writer)
        {
            RenderContents(writer);
        }

        /// <summary>
        /// Renders the item for visual designers.
        /// </summary>
        /// <param name="htmlWriter">The HtmlTextWriter object that receives the content.</param>
        protected override void RenderDesignerPath(HtmlTextWriter htmlWriter)
        {
            HtmlInlineWriter writer = new HtmlInlineWriter(htmlWriter);
            if (Orientation == Orientation.Vertical)
            {
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);
            }

            CurrentStyle.AddAttributesToRender(writer);
            writer.AddAttribute(HtmlTextWriterAttribute.Nowrap, null);

            writer.RenderBeginTag(HtmlTextWriterTag.Td);

            DesignerContent(writer);

            writer.RenderEndTag();

            writer.AllowNewLine = true;
            writer.WriteLine();

            if (Orientation == Orientation.Vertical)
            {
                writer.RenderEndTag();
            }
        }

        /// <summary>
        /// Loads the item's previously saved view state.
        /// </summary>
        /// <param name="savedState">An Object that contains the saved view state values for the item.</param>
        protected override void LoadViewState(object savedState)
        {
            if (savedState != null)
            {
                object[] state = (object[])savedState;

                base.LoadViewState(state[0]);
                ((IStateManager)DefaultStyle).LoadViewState(state[1]);
                ((IStateManager)HoverStyle).LoadViewState(state[2]);
                ((IStateManager)SelectedStyle).LoadViewState(state[3]);
            }
        }

        /// <summary>
        /// Saves the changes to the item's view state to an object.
        /// </summary>
        /// <returns>The object that contains the view state changes.</returns>
        protected override object SaveViewState()
        {
            object[] state = new object[]
            {
                base.SaveViewState(),
                ((IStateManager)DefaultStyle).SaveViewState(),
                ((IStateManager)HoverStyle).SaveViewState(),
                ((IStateManager)SelectedStyle).SaveViewState(),
            };

            // Check to see if we're really saving anything
            foreach (object obj in state)
            {
                if (obj != null)
                {
                    return state;
                }
            }

            return null;
        }

        /// <summary>
        /// Instructs the item to track changes to its view state.
        /// </summary>
        protected override void TrackViewState()
        {
            base.TrackViewState();

            ((IStateManager)DefaultStyle).TrackViewState();
            ((IStateManager)HoverStyle).TrackViewState();
            ((IStateManager)SelectedStyle).TrackViewState();
        }
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?