using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.IO; using System.Windows.Forms; using Mesnac.Gui.Workbench; using Mesnac.PlugIn.View; using ICSharpCode.Core; using Mesnac.Basic; using Mesnac.Gui.Run.Global; using Mesnac.Gui.Run.Dialog; using Mesnac.PlugIn; namespace Mesnac.Gui.Run.ViewContent { public partial class FrmSysConfig : DefaultViewContent { private DataTable _localeTable = null; //当前资源项的区域语言数据表 private string _projectPath = Path.Combine(Application.StartupPath, AppConfigHandler.Instance.MCProjectPath); //组态工程路径 private string caption = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_Caption")); //提示 保存消息框的标题 private string lblCurrentNodeText = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_lblCurrentNode_Text")); // "未选择"; public FrmSysConfig() { InitializeComponent(); this.InitUI(); } #region 窗体初始化 /// /// 初始化界面 /// private void InitUI() { this.Text = StringParser.Parse(ResourceService.GetString("Mesnac_MainMenu_SysConfig")); //系统工程配置 this.TitleName = this.Text; this.btnScan.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnScan_Text")); //扫描工程 this.label1.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_label1_Text")); //当前节点: this.btnAddTop.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnAddTop_Text")); //添加顶级 this.btnAdd.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnAdd_Text")); //添加子节点 this.btnModify.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnModify_Text")); //修改 this.btnDelete.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnDelete_Text")); //删除 this.btnMoveUp.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnMoveUp_Text")); //平级上移 this.btnMoveDown.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnMoveDown_Text")); //平级下移 this.btnMoveParent.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnMoveParent_Text")); //上移一级 this.btnMoveChild.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnMoveChild_Text")); //下移一级 this.btnExpandAll.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnExpandAll_Text")); //展开所有 this.btnMoveUpTool.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnMoveUpTool_Text")); //上移 this.btnMoveDownTool.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnMoveDownTool_Text")); //下移 this.btnDeleteTool.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnDeleteTool_Text")); //删除 this.btnAddSepTool.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnAddSepTool_Text")); //添加分隔符 this.btnSetOrginal.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnSetOrginal_Text")); //重置原始菜单 this.btnLoadConfig.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnLoadConfig_Text")); //读取菜单配置 this.btnSave.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnSave_Text")); //保存菜单配置 this.btnApply.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnApply_Text")); //应用菜单配置 this.btnSetOrginalTool.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnSetOrginalTool_Text")); //重置原始工具栏 this.btnLoadConfigTool.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnLoadConfigTool_Text")); //读取工具栏配置 this.btnSaveTool.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnSaveTool_Text")); //保存工具栏配置 this.btnApplyTool.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnApplyTool_Text")); //应用工具栏配置 this.gbProject.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_gbProject_Text")); //工程项 this.gbMenuStrip.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_gbMenuStrip_Text")); //目标菜单项 this.gbToolStrip.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_gbToolStrip_Text")); //目标工具栏 this.btnI18N.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_btnI18N_Text")); //国际化面板 this.gbI18N.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_gbI18N_Text")); //国际化设置 this.tsbAddMessage.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_tsbAddMessage_Text")); //添加 this.tsbDeleteMessage.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_tsbDeletedMessage_Text")); //删除 this.tsbSetLocale.Text = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_tsbSetLocale_Text")); //设置 this.dgvLocale.Columns["colLanguage"].HeaderText = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_dgvLocale_colLanguage_HeaderText")); //区域 this.dgvLocale.Columns["colValue"].HeaderText = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_dgvLocale_colValue_HeaderText")); //值 this.dgvLocale.Columns["colCode"].HeaderText = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_colCode_HeaderText")); //区域代码 this.dgvLocale.Columns["colCountry"].HeaderText = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_colCountry_HeaderText")); //国家 } /// /// 加载国际化资源项 /// private void LoadSysMessage() { this.lstMessages.Items.Clear(); this.lstMessages.Items.AddRange(AppConfigHandler.Instance.SysMessages.Messages.Keys.ToArray()); } /// /// 加载系统原始菜单 /// private void LoadSystemOriginalMenu() { (WorkbenchSingleton.Workbench as DefaultWorkbench).CreateMainMenu(); if (WorkbenchSingleton.Workbench.TopMenu != null) { this.tvMenuList.Nodes.Clear(); foreach (ToolStripMenuItem menuItem in WorkbenchSingleton.Workbench.TopMenu.Items) { this.tvMenuList.Nodes.Add(AppConfigHandler.Instance.ConvertToolStripItemToTreeNode(menuItem)); } this.tvMenuList.ExpandAll(); } } /// /// 加载系统原始工具栏按钮 /// private void LoadSystemOriginalToolStrip() { (WorkbenchSingleton.Workbench as DefaultWorkbench).CreateMainToolStrip(); if (WorkbenchSingleton.Workbench.ToolStrip != null) { this.lbToolStrip.Items.Clear(); foreach (ToolStripItem item in WorkbenchSingleton.Workbench.ToolStrip.Items) { this.lbToolStrip.Items.Add(AppConfigHandler.Instance.ConvertToolStripItemToTreeNode(item).Tag); } } } /// /// 加载系统菜单 /// private void LoadSystemMenu() { this.lblCurrentNode.Text = this.lblCurrentNodeText; //未选择 this.tvMenuList.Nodes.Clear(); if (File.Exists(AppConfigHandler.Instance.MenuConfig)) { TreeNode root = AppConfigHandler.Instance.DeserializeObject(AppConfigHandler.Instance.MenuConfig) as TreeNode; if (root != null) { foreach (TreeNode tn in root.Nodes) { this.tvMenuList.Nodes.Add(tn); } } } else { this.LoadSystemOriginalMenu(); } this.tvMenuList.ExpandAll(); } /// /// 载入系统工具栏 /// private void LoadSystemToolStrip() { this.lbToolStrip.Items.Clear(); if (File.Exists(AppConfigHandler.Instance.ToolStripConfig)) { object obj = AppConfigHandler.Instance.DeserializeObject(AppConfigHandler.Instance.ToolStripConfig); if (obj != null) { List lst = obj as List; foreach (RunConfigMenuItem item in lst) { this.lbToolStrip.Items.Add(item); } } } else { this.LoadSystemOriginalToolStrip(); } } private void FrmSysConfig_Load(object sender, EventArgs e) { this.LoadSysMessage(); //载入国际化资源项 this.LoadSystemMenu(); //载入系统菜单 this.LoadSystemToolStrip(); //载入系统工具栏 } private void FrmSysConfig_Activated(object sender, EventArgs e) { this.tvMenuList.ExpandAll(); } #endregion #region 扫描工程 private void btnScan_Click(object sender, EventArgs e) { ICSharpCode.Core.LoggingService.Debug(System.Threading.Thread.CurrentThread.CurrentUICulture.Name); //扫描工程 List formMenuItems = XmlHandler.GetProjectFormMenus(this._projectPath); this.lbFormList.Items.Clear(); foreach (RunConfigMenuItem menuItem in formMenuItems) { this.lbFormList.Items.Add(menuItem); } } #endregion #region 把扫描的所有菜单列表添加至当前节点的下面 private void btnMoveAll_Click(object sender, EventArgs e) { object[] items = new object[this.lbFormList.Items.Count]; this.lbFormList.Items.CopyTo(items, 0); this.MoveMenuToTree(items); } #endregion #region 把指定的扫描菜单项添加至当前节点 private void btnMoveSelect_Click(object sender, EventArgs e) { object[] items = new object[this.lbFormList.SelectedItems.Count]; this.lbFormList.SelectedItems.CopyTo(items, 0); this.MoveMenuToTree(items); } private void MoveMenuToTree(object[] items) { StringBuilder sb = new StringBuilder(); TreeNode tnCurrent = this.tvMenuList.SelectedNode; TreeNode tn = null; foreach (RunConfigMenuItem menuItem in items) { if (this.tvMenuList.GetFirstNodeByNodeName(menuItem.ID) == null) { tn = new TreeNode(); tn.Name = menuItem.ID; tn.Text = menuItem.Text; tn.Tag = menuItem; tn.ToolTipText = menuItem.FormText; if (tnCurrent == null) { this.tvMenuList.Nodes.Add(tn); } else { tnCurrent.Nodes.Add(tn); } } else { if (String.IsNullOrEmpty(sb.ToString())) { sb.Append(menuItem.Text); } else { sb.Append(","); sb.Append(menuItem.Text); } } } this.tvMenuList.ExpandAll(); if (!String.IsNullOrEmpty(sb.ToString())) { string msg = String.Format(StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_MoveMenuToTree")), sb.ToString()); //"目标菜单树中已经包含了此项\r\n{0}!" MessageBox.Show(msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information); } } #endregion #region 添加顶级节点 private void btnAddTop_Click(object sender, EventArgs e) { FrmRunConfigMenuItem frmRunConfigMenuItem = new FrmRunConfigMenuItem(); DialogResult result = frmRunConfigMenuItem.ShowDialog(this); if (result == System.Windows.Forms.DialogResult.OK) { RunConfigMenuItem menuItem = new RunConfigMenuItem(); menuItem.ID = Guid.NewGuid().ToString(); menuItem.MsgId = frmRunConfigMenuItem.MsgId; menuItem.Text = frmRunConfigMenuItem.NodeText; menuItem.ICON = frmRunConfigMenuItem.NodeImg; menuItem.IsSystem = false; TreeNode tn = new TreeNode(); tn.Text = menuItem.Text; tn.Tag = menuItem; this.tvMenuList.Nodes.Add(tn); this.tvMenuList.ExpandAll(); } } #endregion #region 添加子级节点 private void btnAdd_Click(object sender, EventArgs e) { TreeNode tn = this.tvMenuList.SelectedNode; if (tn == null) { string msg = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_btnAdd")); //请选择一个父级项! MessageBox.Show(msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } else { FrmRunConfigMenuItem frmRunConfigMenuItem = new FrmRunConfigMenuItem(0, tn.Text, String.Empty); DialogResult result = frmRunConfigMenuItem.ShowDialog(this); if (result == System.Windows.Forms.DialogResult.OK) { RunConfigMenuItem menuItem = new RunConfigMenuItem(); menuItem.ID = Guid.NewGuid().ToString(); menuItem.Text = frmRunConfigMenuItem.NodeText; menuItem.ICON = frmRunConfigMenuItem.NodeImg; menuItem.IsSystem = false; TreeNode newNode = new TreeNode(); newNode.Text = menuItem.Text; newNode.Tag = menuItem; tn.Nodes.Add(newNode); tn.ExpandAll(); } } } #endregion #region 修改节点 private void btnModify_Click(object sender, EventArgs e) { TreeNode tn = this.tvMenuList.SelectedNode; if (tn == null) { string msg = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_btnModify")); //"请选择一个要修改的项!" MessageBox.Show(msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } string parentText; if (tn.Parent != null) { parentText = tn.Parent.Text; } else { parentText = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_parentText")); //"顶级"; } FrmRunConfigMenuItem frmRunConfigMenuItem = new FrmRunConfigMenuItem(1, parentText, (tn.Tag as RunConfigMenuItem).MsgId, tn.Text, (tn.Tag as RunConfigMenuItem).ShortCut, (tn.Tag as RunConfigMenuItem).ShowType, (tn.Tag as RunConfigMenuItem).FormFile, (tn.Tag as RunConfigMenuItem).IsAutoLoad); DialogResult result = frmRunConfigMenuItem.ShowDialog(this); if (result == System.Windows.Forms.DialogResult.OK) { tn.Text = frmRunConfigMenuItem.NodeText; RunConfigMenuItem menuItem = tn.Tag as RunConfigMenuItem; if (menuItem != null) { menuItem.MsgId = frmRunConfigMenuItem.MsgId; menuItem.Text = tn.Text; if (!String.IsNullOrEmpty(frmRunConfigMenuItem.NodeImg) && File.Exists(frmRunConfigMenuItem.NodeImg)) { menuItem.Img = Image.FromFile(frmRunConfigMenuItem.NodeImg); } menuItem.ShowType = (FormShowType)frmRunConfigMenuItem.ShowType; menuItem.ShortCut = frmRunConfigMenuItem.ShortCut; menuItem.IsAutoLoad = frmRunConfigMenuItem.IsAutoLoad; tn.Tag = menuItem; } this.lblCurrentNode.Text = tn.Text; } } #endregion #region 删除节点 private void btnDelete_Click(object sender, EventArgs e) { TreeNode tn = this.tvMenuList.SelectedNode; if (tn == null) { string msg1 = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_btnDelete1")); //请选择一个要删除的项! MessageBox.Show(msg1, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } RunConfigMenuItem menuItem = tn.Tag as RunConfigMenuItem; if (menuItem != null) { if (menuItem.IsSystem) { string msg2 = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_btnDelete2")); //系统原始数据项不能删除! MessageBox.Show(msg2, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } else { string msg3 = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_Delete")); //确定要删除吗? DialogResult result = MessageBox.Show(msg3, this.caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == System.Windows.Forms.DialogResult.Yes) { if (tn.Parent != null) { tn.Parent.Nodes.Remove(tn); } else { this.tvMenuList.Nodes.Remove(tn); } } } } } #endregion #region 平级上移 private void btnMoveUp_Click(object sender, EventArgs e) { TreeNode tn = this.tvMenuList.SelectedNode; if (tn == null) { string msgMove = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_Move")); //请选择一个要移动的项 MessageBox.Show(msgMove, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } TreeNode prevNode = tn.PrevNode; if (prevNode == null) { string msg = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_btnMoveUp")); //此项已经是当前级别的最顶项! MessageBox.Show(msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (tn.Parent != null) { tn.Parent.Nodes.Remove(tn); prevNode.Parent.Nodes.Insert(prevNode.Index, tn); } else { this.tvMenuList.Nodes.Remove(tn); this.tvMenuList.Nodes.Insert(prevNode.Index, tn); } this.tvMenuList.ExpandAll(); this.tvMenuList.SelectedNode = tn; this.tvMenuList.Focus(); } #endregion #region 平级下移 private void btnMoveDown_Click(object sender, EventArgs e) { TreeNode tn = this.tvMenuList.SelectedNode; if (tn == null) { string msgMove = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_Move")); //请选择一个要移动的项 MessageBox.Show(msgMove, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } TreeNode prevNode = tn.NextNode; if (prevNode == null) { string msg = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_btnMoveDown")); //此项已经是当前级别的最后项! MessageBox.Show(msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (tn.Parent != null) { TreeNode parent = tn.Parent; parent.Nodes.Remove(prevNode); parent.Nodes.Insert(tn.Index, prevNode); } else { this.tvMenuList.Nodes.Remove(prevNode); this.tvMenuList.Nodes.Insert(tn.Index, prevNode); } this.tvMenuList.ExpandAll(); this.tvMenuList.SelectedNode = tn; this.tvMenuList.Focus(); } #endregion #region 上移一级 private void btnMoveParent_Click(object sender, EventArgs e) { string msg = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_btnMoveParent")); //此项已是第一级! TreeNode tn = this.tvMenuList.SelectedNode; if (tn == null) { string msgMove = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_Move")); //请选择一个要移动的项 MessageBox.Show(msgMove, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (tn.Parent == null) { MessageBox.Show(msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } TreeNode parent = tn.Parent; parent.Nodes.Remove(tn); if (parent.Parent != null) { parent.Parent.Nodes.Add(tn); } else { this.tvMenuList.Nodes.Add(tn); } } #endregion #region 下移一级 private void btnMoveChild_Click(object sender, EventArgs e) { string msg = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_btnMoveChild")); //此项已是最末级! TreeNode tn = this.tvMenuList.SelectedNode; if (tn == null) { string msgMove = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_Move")); //请选择一个要移动的项 MessageBox.Show(msgMove, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } TreeNode[] nodes = null; if (tn.Parent != null) { TreeNode parent = tn.Parent; nodes = new TreeNode[parent.Nodes.Count - 1]; int i = 0; foreach (TreeNode n in parent.Nodes) { if (n != tn) { nodes[i++] = n; } } if (nodes.Length == 0) { MessageBox.Show(msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } FrmMoveChild frmMoveChild = new FrmMoveChild(nodes); DialogResult result = frmMoveChild.ShowDialog(this); if (result == System.Windows.Forms.DialogResult.OK) { parent.Nodes.Remove(tn); TreeNode newParent = frmMoveChild.CurrentNode; newParent.Nodes.Add(tn); } } else { nodes = new TreeNode[this.tvMenuList.Nodes.Count - 1]; int i = 0; foreach (TreeNode n in this.tvMenuList.Nodes) { if (n != tn) { nodes[i++] = n; } } if (nodes.Length == 0) { MessageBox.Show(msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } FrmMoveChild frmMoveChild = new FrmMoveChild(nodes); DialogResult result = frmMoveChild.ShowDialog(this); if (result == System.Windows.Forms.DialogResult.OK) { this.tvMenuList.Nodes.Remove(tn); TreeNode newParent = frmMoveChild.CurrentNode; newParent.Nodes.Add(tn); } } } #endregion #region 展开所有 private void btnExpandAll_Click(object sender, EventArgs e) { this.tvMenuList.ExpandAll(); } #endregion #region 设置当前节点 private void tvMenuList_AfterSelect(object sender, TreeViewEventArgs e) { if (e.Node != null) { this.lblCurrentNode.Text = e.Node.Text; } else { this.lblCurrentNode.Text = this.lblCurrentNodeText; //未选择 } } private void tvMenuList_Leave(object sender, EventArgs e) { TreeNode tn = this.tvMenuList.SelectedNode; if (tn != null) { this.lblCurrentNode.Text = tn.Text; } else { this.lblCurrentNode.Text = this.lblCurrentNodeText; //未选择 } } #endregion #region 国际化面板 private void btnI18N_Click(object sender, EventArgs e) { this.gbI18N.Visible = !this.gbI18N.Visible; } #endregion #region 读取原始菜单 private void btnSetOrginal_Click(object sender, EventArgs e) { this.LoadSystemOriginalMenu(); } #endregion #region 读取菜单配置 private void btnLoadConfig_Click(object sender, EventArgs e) { if (File.Exists(AppConfigHandler.Instance.MenuConfig)) { this.tvMenuList.Nodes.Clear(); TreeNode root = AppConfigHandler.Instance.DeserializeObject(AppConfigHandler.Instance.MenuConfig) as TreeNode; if (root != null) { foreach (TreeNode tn in root.Nodes) { this.tvMenuList.Nodes.Add(tn); } } } else { string msg = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_btnLoadConfig")); //还未保存过配置! MessageBox.Show(msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information); } } #endregion #region 保存菜单配置 private void btnSave_Click(object sender, EventArgs e) { DirectoryInfo dir = new DirectoryInfo(Path.GetDirectoryName(AppConfigHandler.Instance.MenuConfig)); if (!dir.Exists) { dir.Create(); } TreeNode root = new TreeNode(); foreach (TreeNode tn in this.tvMenuList.Nodes) { root.Nodes.Add(tn.Clone() as TreeNode); } AppConfigHandler.Instance.SerializeObject(root, AppConfigHandler.Instance.MenuConfig); } #endregion #region 应用菜单配置 private void btnApply_Click(object sender, EventArgs e) { WorkbenchSingleton.Workbench.CloseAllKeysView(); TreeNode root = new TreeNode(); foreach (TreeNode node in this.tvMenuList.Nodes) { root.Nodes.Add(node.Clone() as TreeNode); } (WorkbenchSingleton.Workbench as DefaultWorkbench).CreateMainMenu(); AppConfigHandler.Instance.ReBuilderMenu(WorkbenchSingleton.Workbench.TopMenu, root, root); } #endregion #region 拖拽处理 private void tvMenuList_ItemDrag(object sender, ItemDragEventArgs e) { if (e.Item != null) { this.DoDragDrop(e.Item, DragDropEffects.Copy); } } private void tvMenuList_DragEnter(object sender, DragEventArgs e) { if (e.Data != null) { e.Effect = DragDropEffects.Copy; } } private void lbToolStrip_DragEnter(object sender, DragEventArgs e) { if (e.Data != null) { e.Effect = DragDropEffects.Copy; } } private void lbToolStrip_DragDrop(object sender, DragEventArgs e) { TreeNode node = e.Data.GetData(typeof(System.Windows.Forms.TreeNode)) as TreeNode; if (node != null) { foreach (object item in this.lbToolStrip.Items) { RunConfigMenuItem rcmi = item as RunConfigMenuItem; RunConfigMenuItem rcmiTemp = node.Tag as RunConfigMenuItem; if (rcmi != null && rcmi.ID == rcmiTemp.ID) { string msgExists = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_ToolItemExists")); //工具栏中已存在此项! MessageBox.Show(msgExists, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } this.lbToolStrip.Items.Add(node.Tag); } } #endregion #region 工具栏项上移 private void btnMoveUpTool_Click(object sender, EventArgs e) { if (this.lbToolStrip.SelectedIndex == -1) { string msgMove = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_Move")); //请选择一个要移动的项 MessageBox.Show(msgMove, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (this.lbToolStrip.SelectedIndex == 0) { string msg = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_btnMoveUp")); //此项已经是当前级别的最顶项! MessageBox.Show(msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } int index = this.lbToolStrip.SelectedIndex - 1; object item = this.lbToolStrip.SelectedItem; this.lbToolStrip.Items.Remove(item); this.lbToolStrip.Items.Insert(index, item); this.lbToolStrip.SelectedIndex = index; } #endregion #region 工具栏项下移 private void btnMoveDownTool_Click(object sender, EventArgs e) { if (this.lbToolStrip.SelectedIndex == -1) { string msgMove = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_Move")); //请选择一个要移动的项 MessageBox.Show(msgMove, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (this.lbToolStrip.SelectedIndex == this.lbToolStrip.Items.Count - 1) { string msg = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_btnMoveDown")); //此项已经是当前级别的最后项! MessageBox.Show(msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } int index = this.lbToolStrip.SelectedIndex + 1; object item = this.lbToolStrip.SelectedItem; this.lbToolStrip.Items.Remove(item); this.lbToolStrip.Items.Insert(index, item); this.lbToolStrip.SelectedIndex = index; } #endregion #region 工具栏项删除 private void btnDeleteTool_Click(object sender, EventArgs e) { if (this.lbToolStrip.SelectedIndex == -1) { string msg1 = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_btnDelete1")); //请选择一个要删除的项! MessageBox.Show(msg1, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } string msg3 = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_Delete")); //确定要删除吗? DialogResult result = MessageBox.Show(msg3, this.caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question); { object item = this.lbToolStrip.SelectedItem; this.lbToolStrip.Items.Remove(item); } } #endregion #region 添加工具栏分隔符 private void btnAddSepTool_Click(object sender, EventArgs e) { RunConfigMenuItem toolSeparator = new RunConfigMenuItem(); toolSeparator.ID = Guid.NewGuid().ToString(); toolSeparator.Text = "-"; this.lbToolStrip.Items.Add(toolSeparator); } #endregion #region 重置原始工具栏 private void btnSetOrginalTool_Click(object sender, EventArgs e) { this.LoadSystemOriginalToolStrip(); } #endregion #region 读取工具栏配置 private void btnLoadConfigTool_Click(object sender, EventArgs e) { if (File.Exists(AppConfigHandler.Instance.ToolStripConfig)) { this.lbToolStrip.Items.Clear(); Object obj = AppConfigHandler.Instance.DeserializeObject(AppConfigHandler.Instance.ToolStripConfig); if (obj != null) { List lst = obj as List; foreach (RunConfigMenuItem item in lst) { this.lbToolStrip.Items.Add(item); } } } else { string msg = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_btnLoadConfig")); //还未保存过配置! MessageBox.Show(msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information); } } #endregion #region 保存工具栏配置 private void btnSaveTool_Click(object sender, EventArgs e) { DirectoryInfo dir = new DirectoryInfo(Path.GetDirectoryName(AppConfigHandler.Instance.ToolStripConfig)); if (!dir.Exists) { dir.Create(); } List toolButtons = new List(); foreach (object item in this.lbToolStrip.Items) { toolButtons.Add(item as RunConfigMenuItem); } AppConfigHandler.Instance.SerializeObject(toolButtons, AppConfigHandler.Instance.ToolStripConfig); } #endregion #region 应用工具栏配置 private void btnApplyTool_Click(object sender, EventArgs e) { WorkbenchSingleton.Workbench.CloseAllKeysView(); List toolButtons = new List(); foreach (object item in this.lbToolStrip.Items) { toolButtons.Add(item as RunConfigMenuItem); } AppConfigHandler.Instance.ReBuilderToolStrip(WorkbenchSingleton.Workbench.ToolStrip, WorkbenchSingleton.Workbench.TopMenu, toolButtons); } #endregion #region 国际化面板-工具栏1-添加资源ID private void tsbAddMessage_Click(object sender, EventArgs e) { FrmNewMessage frmNewMessage = new FrmNewMessage(); DialogResult result = frmNewMessage.ShowDialog(this); if (result == System.Windows.Forms.DialogResult.OK) { if (this.lstMessages.Items.Contains(frmNewMessage.MsgId)) { string msg = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_tsbAddMessage")); //列表中已包含此资源ID! MessageBox.Show(msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } else { this.lstMessages.Items.Add(frmNewMessage.MsgId); Dictionary values = new Dictionary(); foreach(string code in AppConfigHandler.Instance.SysMessages.LocaleCodes) { values.Add(code, LocaleHelper.AllLocales[code]); } AppConfigHandler.Instance.SysMessages.Messages.Add(frmNewMessage.MsgId, values); AppConfigHandler.Instance.SaveSysMessage(AppConfigHandler.Instance.SysMessages); //保存 } } } #endregion #region 国际化面板-工具栏1-删除资源ID private void tsbDeleteMessage_Click(object sender, EventArgs e) { if (this.lstMessages.SelectedIndex == -1) { string msg = StringParser.Parse(ResourceService.GetString("ViewContent_FrmSysConfig_Msg_tsbDeleteMessage")); //未选择要删除的资源项! MessageBox.Show(msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } else { string msgId = this.lstMessages.Items[this.lstMessages.SelectedIndex] as string; this.lstMessages.Items.RemoveAt(this.lstMessages.SelectedIndex); AppConfigHandler.Instance.SysMessages.Messages.Remove(msgId); AppConfigHandler.Instance.SaveSysMessage(AppConfigHandler.Instance.SysMessages); //保存 } } #endregion #region 国际化面板-资源列表项选择事件处理 private void lstMessages_SelectedIndexChanged(object sender, EventArgs e) { RefreshDataGridView(); } /// /// 刷新DataGridView /// private void RefreshDataGridView() { this._localeTable = new DataTable(); this._localeTable.Columns.Add("code"); this._localeTable.Columns.Add("country"); this._localeTable.Columns.Add("language"); this._localeTable.Columns.Add("value"); if (this.lstMessages.SelectedIndex != -1) { string msgId = this.lstMessages.Items[this.lstMessages.SelectedIndex] as string; Dictionary dic = AppConfigHandler.Instance.SysMessages.Messages[msgId]; foreach (LocaleItem item in dic.Values) { DataRow row = this._localeTable.NewRow(); row["code"] = item.Code; row["country"] = item.Country; row["language"] = item.Language; row["value"] = item.Value; this._localeTable.Rows.Add(row); } } this.dgvLocale.Columns["colLanguage"].DataPropertyName = "language"; this.dgvLocale.Columns["colValue"].DataPropertyName = "value"; this.dgvLocale.Columns["colCode"].DataPropertyName = "code"; this.dgvLocale.Columns["colCountry"].DataPropertyName = "country"; this.dgvLocale.DataSource = this._localeTable; } #endregion #region 国际化面板-工具栏2-设置区域 private void tsbSetLocale_Click(object sender, EventArgs e) { FrmSetLocale frmSetLocale = new FrmSetLocale(); DialogResult result = frmSetLocale.ShowDialog(this); if (result == System.Windows.Forms.DialogResult.OK) { List selectedLocales = frmSetLocale.SelectedLocales; foreach(LocaleItem item in selectedLocales) { if (!AppConfigHandler.Instance.SysMessages.LocaleCodes.Contains(item.Code)) { AppConfigHandler.Instance.SysMessages.LocaleCodes.Add(item.Code); foreach (string msgId in AppConfigHandler.Instance.SysMessages.Messages.Keys) { if (AppConfigHandler.Instance.SysMessages.Messages[msgId] == null) { AppConfigHandler.Instance.SysMessages.Messages[msgId] = new Dictionary(); } AppConfigHandler.Instance.SysMessages.Messages[msgId].Add(item.Code, item); } } } List removeLst = new List(); foreach(string code in AppConfigHandler.Instance.SysMessages.LocaleCodes) { bool isExists = false; foreach(LocaleItem item in selectedLocales) { if (item.Code == code) { isExists = true; break; } } if (isExists == false) { removeLst.Add(code); } } foreach (string code in removeLst) { foreach (string msgId in AppConfigHandler.Instance.SysMessages.Messages.Keys) { if (AppConfigHandler.Instance.SysMessages.Messages[msgId] == null) { AppConfigHandler.Instance.SysMessages.Messages[msgId] = new Dictionary(); } AppConfigHandler.Instance.SysMessages.Messages[msgId].Remove(code); } AppConfigHandler.Instance.SysMessages.LocaleCodes.Remove(code); } AppConfigHandler.Instance.SaveSysMessage(AppConfigHandler.Instance.SysMessages); //保存 this.RefreshDataGridView(); } } #endregion #region 资源项-区域语言值设置完毕(单元格编辑完毕) private void dgvLocale_CellEndEdit(object sender, DataGridViewCellEventArgs e) { if (this._localeTable != null) { if (this.lstMessages.SelectedIndex != -1) { string msgId = this.lstMessages.SelectedItem as string; foreach(DataRow row in this._localeTable.Rows) { string code = DataProcessor.RowValue(row, "code", String.Empty); if (!String.IsNullOrEmpty(code)) { AppConfigHandler.Instance.SysMessages.Messages[msgId][code].Value = DataProcessor.RowValue(row, "value", String.Empty); } } AppConfigHandler.Instance.SaveSysMessage(AppConfigHandler.Instance.SysMessages); //保存 } } } #endregion } }