#region
|
|
using System;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Windows.Forms;
|
using CSFrameworkV5.Common;
|
using CSFrameworkV5.Core;
|
|
#endregion
|
|
namespace CSFrameworkV5.Library.CommonClass
|
{
|
/// <summary>
|
/// 快速命令处理程序
|
/// </summary>
|
public class CommandHandler
|
{
|
private static List<QuickCommand> _AllCommands = null;
|
|
/// <summary>
|
/// 系统定义的所有命令
|
/// </summary>
|
private static List<QuickCommand> AllCommands
|
{
|
get
|
{
|
if (_AllCommands == null)
|
{
|
//模拟命令表(从数据库获取)
|
var dt = new DataTable("sys_Commands");
|
dt.Columns.Add("CommandCode",
|
typeof(string)); //命令,如:PO,PO1,PO2,SO,HELP,LK
|
dt.Columns.Add("CommandName",
|
typeof(string)); //命令名称,PO-打开采购订单
|
dt.Columns.Add("CommandType",
|
typeof(string)); //命令类型:OpenForm-打开窗体,Add,Search,Other
|
dt.Columns.Add("FormNamespace", typeof(string)); //窗体的命名空间
|
dt.Columns.Add("MenuName",
|
typeof(string)); //打开此窗体关联的菜单名称(模块主窗体内定义)
|
|
dt.Rows.Add("PO", "打开采购订单", "OpenForm",
|
"CSFrameworkV5.DemoPurchaseModule.frmPO", "menuItemPO");
|
dt.Rows.Add("PO1", "采购订单-新增", "Add",
|
"CSFrameworkV5.DemoPurchaseModule.frmPO", "menuItemPO");
|
dt.Rows.Add("PO2", "采购订单-搜索", "Search",
|
"CSFrameworkV5.DemoPurchaseModule.frmPO", "menuItemPO");
|
dt.Rows.Add("SO", "打开销售订单", "OpenForm",
|
"CSFrameworkV5.DemoSalesModule.frmSO",
|
"menuSalesOrder");
|
dt.Rows.Add("HELP", "打开帮助文档", "Other", "", "");
|
dt.Rows.Add("LK", "锁定主界面", "Other", "", "");
|
|
dt.AcceptChanges();
|
|
//将DataTable转换为对象列表
|
var list = new ModelConverter<QuickCommand>().FillModel(dt);
|
return list;
|
}
|
|
return _AllCommands;
|
}
|
}
|
|
/// <summary>
|
/// 执行命令
|
/// </summary>
|
/// <param name="instance">主窗体实例</param>
|
/// <param name="cmdText">命令文本</param>
|
/// <returns></returns>
|
public static object Execute(IMdiForm instance, string cmdText)
|
{
|
//匹配命令字符,返回对象实例
|
var cmd = AllCommands.Find(delegate(QuickCommand p)
|
{
|
return p.Match(cmdText);
|
});
|
|
if (cmd == null)
|
throw new Exception("无效的命令!参考:PO,PO1,PO2,SO,LK,HELP");
|
|
//界面操作通用处理方法
|
if (cmd.IsFormAction) return instance.OpenModuleForm(cmd);
|
|
//锁定用户界面命令
|
if (cmd.CommandCode == "LK")
|
return frmLock.ExecuteLock(instance as Form);
|
|
//打开帮助文档
|
if (cmd.CommandCode == "HELP") HelpDoc.HelpAllFile(HelpDoc.CSHelp);
|
|
//
|
//其它命令
|
//
|
return null;
|
}
|
}
|
|
/// <summary>
|
/// 命令类型
|
/// </summary>
|
public enum QuickCommandType
|
{
|
OpenForm,
|
Add,
|
Search,
|
Other
|
}
|
|
/// <summary>
|
/// 命令对象
|
/// </summary>
|
public class QuickCommand
|
{
|
public string Action { get; set; }
|
public string CommandCode { get; set; }
|
|
public string CommandName { get; set; }
|
|
public string CommandType { get; set; }
|
|
public string FormNamespace { get; set; }
|
|
public bool IsFormAction =>
|
CommandType == QuickCommandType.OpenForm.ToStringEx()
|
|| CommandType == QuickCommandType.Search.ToStringEx()
|
|| CommandType == QuickCommandType.Add.ToStringEx();
|
|
public string MenuName { get; set; }
|
|
public virtual object Execute(object sender)
|
{
|
return null;
|
}
|
|
public bool Match(string cmdText)
|
{
|
return CommandCode.ToLower() == cmdText.ToLower();
|
}
|
}
|
}
|