wtpstandardtoolbar.cs

来自「C#编写的在线用户统计、在线编辑器、验证码图片」· CS 代码 · 共 293 行

CS
293
字号
/*
 * WtpStandardToolbar.cs @Microsoft Visual Studio 2008 <.NET Framework 2.0 (or Higher)>
 * AfritXia
 * 2008/3/17
 *
 * Copyright(c) http://www.AfritXia.NET/
 *
 */

using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Net.AfritXia.Web.UI
{
	/// <summary>
	/// 控件工具条2
	/// </summary>
    [ParseChildren(false)]
	public class WtpStandardToolbar : WtpToolbarBase
	{
		#region 类构造器
		/// <summary>
		/// 类默认构造器
		/// </summary>
		public WtpStandardToolbar()
			: base()
		{
		}

        /// <summary>
        /// 类参数构造器
        /// </summary>
        /// <param name="cmdLayout">命令布局</param>
        public WtpStandardToolbar(string cmdLayout)
            : this()
        {
            this.CommandLayout = cmdLayout;
        }
		#endregion

        /// <summary>
        /// 设置或获取命令布局
        /// </summary>
        public string CommandLayout
        {
            set
            {
                this.Attributes.Add("CommandLayout", value);
            }

            get
            {
                return this.Attributes["CommandLayout"];
            }
        }

        /// <summary>
        /// 转换为控件集合
        /// </summary>
        /// <param name="cmdLayout">命令布局字符串</param>
        /// <returns></returns>
        private IList<Control> ParseControlList(string cmdLayout)
        {
            if (String.IsNullOrEmpty(cmdLayout) == true)
                return null;

            // 获取命令字符串列表
            string[] cmdstrList = cmdLayout.Split(',');
            // 控件集合
            IList<Control> ctrlList = new List<Control>();

            foreach (string cmdstr in cmdstrList)
            {
                switch (cmdstr.Trim().ToLower())
                {
                    case "setfontname":
                        // 字体名称下拉框
                        WtpDropDownList setFontNameDDL = null;
                        // 命令对象
                        WtpSetFontNameCmd setFontNameCmd = null;
                        
                        setFontNameDDL = new WtpDropDownList();
                        setFontNameDDL.Command = (setFontNameCmd = new WtpSetFontNameCmd(setFontNameDDL));

                        // 加入首选项
                        setFontNameDDL.Items.Add(new ListItem("Font -"));

                        // 加入字体名称
                        foreach (string fontName in g_fontNameList)
                            setFontNameDDL.Items.Add(new ListItem(fontName, fontName));

                        ctrlList.Add(setFontNameDDL);
                        ctrlList.Add(new WtpCmdButton("Apply_Small", setFontNameCmd));
                        break;

                    case "setfontsize":
                        // 字体大小下拉框
                        WtpDropDownList setFontSizeDDL = null;
                        // 命令对象
                        WtpSetFontSizeCmd setFontSizeCmd = null;

                        setFontSizeDDL = new WtpDropDownList();
                        setFontSizeDDL.Command = (setFontSizeCmd = new WtpSetFontSizeCmd(setFontSizeDDL));

                        // 加入首选项
                        setFontSizeDDL.Items.Add(new ListItem("Size -"));

                        // 加入字体大小选项
                        for (int i = 1; i <= 7; i++)
                            setFontSizeDDL.Items.Add(new ListItem(i.ToString(), i.ToString()));

                        ctrlList.Add(setFontSizeDDL);
                        ctrlList.Add(new WtpCmdButton("Apply_Small", setFontSizeCmd));
                        break;

                    case "setforecolor":
                        // 前景色下拉列表框
                        WtpColorDropDownList setForeColorDDL = null;
                        // 命令对象
                        WtpSetForeColorCmd setForeColorCmd = null;
                        
                        setForeColorDDL = new WtpColorDropDownList("ForeColor -");
                        setForeColorDDL.Command = (setForeColorCmd = new WtpSetForeColorCmd(setForeColorDDL));

                        ctrlList.Add(new WtpCmdButton("ForeColor", setForeColorCmd));
                        ctrlList.Add(setForeColorDDL);
                        break;

                    case "setbackcolor":
                        // 背景色下拉列表框
                        WtpColorDropDownList setBackColorDDL = null;
                        // 命令对象
                        WtpSetBackColorCmd setBackColorCmd = null;

                        setBackColorDDL = new WtpColorDropDownList("BackColor -");
                        setBackColorDDL.Command = (setBackColorCmd = new WtpSetBackColorCmd(setBackColorDDL));

                        ctrlList.Add(new WtpCmdButton("BackColor", setBackColorCmd));
                        ctrlList.Add(setBackColorDDL);
                        break;

                    case "bold":
                        ctrlList.Add(new WtpCmdButton("Bold", new WtpBoldCmd()));
                        break;

                    case "italic":
                        ctrlList.Add(new WtpCmdButton("Italic", new WtpItalicCmd()));
                        break;

                    case "underline":
                        ctrlList.Add(new WtpCmdButton("UnderLine", new WtpUnderLineCmd()));
                        break;

                    case "strikethrough":
                        ctrlList.Add(new WtpCmdButton("StrikeThrough", new WtpStrikeThroughCmd()));
                        break;

                    case "superscript":
                        ctrlList.Add(new WtpCmdButton("SuperScript", new WtpSuperScriptCmd()));
                        break;

                    case "subscript":
                        ctrlList.Add(new WtpCmdButton("SubScript", new WtpSubScriptCmd()));
                        break;

                    case "indent":
                        ctrlList.Add(new WtpCmdButton("Indent", new WtpIndentCmd()));
                        break;

                    case "outdent":
                        ctrlList.Add(new WtpCmdButton("Outdent", new WtpOutdentCmd()));
                        break;

                    case "bulletedlist":
                        ctrlList.Add(new WtpCmdButton("BulletedList", new WtpBulletedListCmd()));
                        break;

                    case "numberedlist":
                        ctrlList.Add(new WtpCmdButton("NumberedList", new WtpNumberedListCmd()));
                        break;

                    case "justifyleft":
                        ctrlList.Add(new WtpCmdButton("JustifyLeft", new WtpJustifyLeftCmd()));
                        break;

                    case "justifycenter":
                        ctrlList.Add(new WtpCmdButton("JustifyCenter", new WtpJustifyCenterCmd()));
                        break;

                    case "justifyright":
                        ctrlList.Add(new WtpCmdButton("JustifyRight", new WtpJustifyRightCmd()));
                        break;

                    case "cut":
                        ctrlList.Add(new WtpCmdButton("Cut", new WtpCutCmd()));
                        break;

                    case "copy":
                        ctrlList.Add(new WtpCmdButton("Copy", new WtpCopyCmd()));
                        break;

                    case "paste":
                        ctrlList.Add(new WtpCmdButton("Paste", new WtpPasteCmd()));
                        break;

                    case "undo":
                        ctrlList.Add(new WtpCmdButton("Undo", new WtpUndoCmd()));
                        break;

                    case "redo":
                        ctrlList.Add(new WtpCmdButton("Redo", new WtpRedoCmd()));
                        break;

                    case "insertanchor":
                        ctrlList.Add(new WtpCmdButton("Anchor", new WtpInsertAnchorCmd()));
                        break;

                    case "cancelanchor":
                        ctrlList.Add(new WtpCmdButton("CancelAnchor", new WtpCancelAnchorCmd()));
                        break;

                    case "insertimage":
                        ctrlList.Add(new WtpCmdButton("Image", new WtpInsertImageCmd()));
                        break;

                    case "insertdatetime":
                        ctrlList.Add(new WtpCmdButton("DateTime", new WtpInsertDateTimeCmd()));
                        break;

                    case "inserthrule":
                        ctrlList.Add(new WtpCmdButton("HRule", new WtpInsertHRuleCmd()));
                        break;

                    case "removeformat":
                        ctrlList.Add(new WtpCmdButton("Eraser", new WtpRemoveFormatCmd()));
                        break;

                    case "|":
                        ctrlList.Add(base.CreateSeparator());
                        break;

                    default:
                        break;
                }
            }

            return ctrlList;
        }

		/// <summary>
		/// 创建控件的子控件
		/// </summary>
		protected override void CreateChildControls()
		{
			base.CreateChildControls();

            // 获取命令布局
            string cmdLayout = this.CommandLayout;

            if (String.Compare(cmdLayout, "_default", true) == 0)
                cmdLayout = @"SetFontName, SetFontSize, |, Bold, Italic, UnderLine";

            // 获取子控件
            IList<Control> childControlList = this.ParseControlList(cmdLayout);

            if (childControlList != null)
            {
                foreach (Control c in childControlList)
                    this.AddControl(c);
            }
        }

        #region 字体名称
        private static readonly string[] g_fontNameList = new string[] {
			"Arial",
			"Bookman Old Style",
			"Courier", "Courier New",
			"Fixedsys",
			"Verdana",
			"仿宋_GB2312",
			"宋体",
			"幼圆",
			"新宋体",
			"方正姚体", "方正舒体",
			"楷体_GB2312",
			"隶书",
			"黑体"
		};
        #endregion
    }
}

⌨️ 快捷键说明

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