STDRuleslist.cs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782
  1. using OTS.WinFormsUI.Docking;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Drawing;
  5. using System.Drawing.Imaging;
  6. using System.Linq;
  7. using System.Runtime.InteropServices;
  8. using System.Windows.Forms;
  9. namespace OTSPartA_STDEditor
  10. {
  11. public partial class STDRuleslist : DockContent
  12. {
  13. public STDdata Predata = null;//之前选中的位置
  14. public Form_Main m_MainForm = null;
  15. ValueChangedEvent m_ValueChangedEvent = null;//单元格内容改变事件
  16. public Dictionary<int,STDGroups> GroupViewDic=null;
  17. System.Collections.Hashtable table_STDRuleslist;
  18. bool RenFlag = false;
  19. public STDRuleslist(Form_Main mainForm)
  20. {
  21. InitializeComponent();
  22. m_MainForm = mainForm;
  23. m_ValueChangedEvent = new ValueChangedEvent(this);
  24. }
  25. private void STDRuleslist_Load(object sender, EventArgs e)
  26. {
  27. m_MainForm.lan = new Language(this);
  28. table_STDRuleslist = m_MainForm.lan.GetNameTable("Attributes");
  29. InitGroupEditorView();
  30. }
  31. /// <summary>
  32. /// [颜色:16进制转成RGB]
  33. /// </summary>
  34. /// <param name="strColor">设置16进制颜色 [返回RGB]</param>
  35. /// <returns></returns>
  36. public static System.Drawing.Color colorHx16toRGB(string strHxColor)
  37. {
  38. try
  39. {
  40. if (strHxColor.Length == 0)
  41. {//如果为空
  42. return System.Drawing.Color.FromArgb(255, 255, 204);//设为白色
  43. }
  44. else
  45. {//转换颜色
  46. return System.Drawing.Color.FromArgb(System.Int32.Parse(strHxColor.Substring(1, 2), System.Globalization.NumberStyles.AllowHexSpecifier), System.Int32.Parse(strHxColor.Substring(3, 2), System.Globalization.NumberStyles.AllowHexSpecifier), System.Int32.Parse(strHxColor.Substring(5, 2), System.Globalization.NumberStyles.AllowHexSpecifier));
  47. }
  48. }
  49. catch
  50. {//设为白色
  51. return System.Drawing.Color.FromArgb(255, 255, 204);
  52. }
  53. }
  54. public class ValueChangedEvent : SourceGrid.Cells.Controllers.ControllerBase
  55. {
  56. protected STDRuleslist m_parentWnd = null;
  57. public ValueChangedEvent(STDRuleslist parentWnd)
  58. {
  59. m_parentWnd = parentWnd;
  60. }
  61. public override void OnValueChanged(SourceGrid.CellContext sender, EventArgs e)
  62. {
  63. base.OnValueChanged(sender, e);
  64. if (sender.Value != null&& sender.Value.ToString().Replace(" ", "").Trim() != "")
  65. {
  66. m_parentWnd.ChangeStrName(sender.Position.Row, sender.Value.ToString());
  67. }
  68. else
  69. {
  70. m_parentWnd.ChangeStrName(sender.Position.Row, "NewRuleName");
  71. }
  72. }
  73. }
  74. public void ChangeStrName(int RowNum, string NewStrName)
  75. {
  76. m_MainForm.ChangeStrName(RowNum, NewStrName);
  77. }
  78. private void Grid_Minerals_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
  79. {
  80. if (e.KeyCode == Keys.Delete)
  81. {
  82. ToolStripMenuItem_Del_Click(null, null);
  83. }
  84. }
  85. public int ChangeSTDRulesLISTBackColor()
  86. {
  87. if (treeView_G.SelectedNode.Level == 0)
  88. {
  89. return -1;
  90. }
  91. STDdata ddata = (STDdata)treeView_G.SelectedNode.Tag;
  92. int id = ddata.STDId;
  93. foreach(STDdata ddata1 in ((STDGroups)treeView_G.SelectedNode.Parent.Tag).ContainSTD)
  94. {
  95. if(ddata1.STDId== ddata.STDId)
  96. {
  97. ddata1.Color = Attributes.colorRGBtoHx16(m_MainForm.m_Attributes.Grid_Attributes[3, 1].View.BackColor.R, m_MainForm.m_Attributes.Grid_Attributes[3, 1].View.BackColor.G, m_MainForm.m_Attributes.Grid_Attributes[3, 1].View.BackColor.B);
  98. break;
  99. }
  100. }
  101. InitGroupView();
  102. foreach (TreeNode treeNode in treeView_G.Nodes)
  103. {
  104. if (((STDGroups)treeNode.Tag).id == ddata.GroupId)
  105. {
  106. foreach (TreeNode node in treeNode.Nodes)
  107. {
  108. if (((STDdata)node.Tag).STDId == id)
  109. {
  110. treeView_G.SelectedNode = node;
  111. Predata = (STDdata)node.Tag;
  112. break;
  113. }
  114. }
  115. }
  116. }
  117. return id;
  118. }
  119. public void InitGroupEditorView()
  120. {
  121. GroupViewDic = ConvertToGroupViewDic();
  122. InitGroupView();
  123. }
  124. Dictionary<int, STDGroups> ConvertToGroupViewDic()
  125. {
  126. Dictionary<int, STDGroups> keyValuePairs = new Dictionary<int, STDGroups>();
  127. keyValuePairs = m_MainForm._sTDEditor.GroupDictionary;
  128. foreach (STDGroups group in keyValuePairs.Values)
  129. {
  130. group.ContainSTD.Clear();
  131. }
  132. foreach (STDdata Ddata in m_MainForm._sTDEditor.STDDictionary.Values)
  133. {
  134. keyValuePairs[Ddata.GroupId].ContainSTD.Add(Ddata);
  135. }
  136. return keyValuePairs;
  137. }
  138. public void ConvertToRuleViewDic()
  139. {
  140. m_MainForm._sTDEditor.GroupIdDictionaryFromId.Clear();
  141. m_MainForm._sTDEditor.GroupIdDictionaryFromName.Clear();
  142. m_MainForm._sTDEditor.STDDictionary.Clear();
  143. foreach (TreeNode treeNode in treeView_G.Nodes)
  144. {
  145. STDGroups tDGroups = (STDGroups)treeNode.Tag;
  146. GroupViewDic[tDGroups.id].iorder = treeNode.Index;
  147. foreach (TreeNode treeNode1 in treeNode.Nodes)
  148. {
  149. STDdata Ddata = (STDdata)treeNode1.Tag;
  150. Ddata.ListNum = treeNode1.Index.ToString();
  151. m_MainForm._sTDEditor.STDDictionary.Add(Ddata.STDId, Ddata);
  152. }
  153. m_MainForm._sTDEditor.GroupIdDictionaryFromName.Add(tDGroups.name.ToString(), int.Parse(tDGroups.id.ToString()));
  154. m_MainForm._sTDEditor.GroupIdDictionaryFromId.Add(int.Parse(tDGroups.id.ToString()), tDGroups.name.ToString());
  155. }
  156. if (treeView_G.SelectedNode == null){return;}
  157. if (treeView_G.SelectedNode.Level == 1)
  158. {
  159. m_MainForm.SaveDataOfSelRule(((STDdata)treeView_G.SelectedNode.Tag).STDId);
  160. }
  161. }
  162. private void ToolStripMenuItem_NewGroup_Click(object sender, EventArgs e)
  163. {
  164. STDGroups group = new STDGroups();
  165. int id = 0;
  166. foreach(STDGroups grp in GroupViewDic.Values)
  167. {
  168. if(grp.id>id)
  169. {
  170. id= grp.id;
  171. }
  172. }
  173. id++;
  174. group.id = id;
  175. group.name = "Group" + id.ToString();
  176. group.color = Attributes.colorRGBtoHx16(Color.WhiteSmoke.R, Color.WhiteSmoke.G, Color.WhiteSmoke.B);
  177. group.iorder = GroupViewDic.Count-1;
  178. GroupViewDic.Add(group.id, group);
  179. m_MainForm.m_Attributes.AddSTDGroupsToAttribute();
  180. m_MainForm._sTDEditor.GroupIdDictionaryFromId.Add(id, group.name);
  181. m_MainForm._sTDEditor.GroupIdDictionaryFromName.Add(group.name, group.id);
  182. InitGroupView();
  183. foreach (TreeNode treeNode in treeView_G.Nodes)
  184. {
  185. if (((STDGroups)treeNode.Tag).id == id)
  186. {
  187. treeView_G.SelectedNode = treeNode;
  188. break;
  189. }
  190. }
  191. m_MainForm.SetNull();
  192. Predata = null;
  193. this.Refresh();
  194. }
  195. private void ToolStripMenuItem_Del_Click(object sender, EventArgs e)
  196. {
  197. if (treeView_G.SelectedNode == null)
  198. {
  199. MessageBox.Show("Please select a node!", "Tip");
  200. return;
  201. }
  202. if (treeView_G.SelectedNode.Level == 0)
  203. {
  204. int id = ((STDGroups)treeView_G.SelectedNode.Tag).id;
  205. if (((STDGroups)treeView_G.SelectedNode.Tag).id == 0)
  206. {
  207. MessageBox.Show("Can not delete the group which named default!", "Tip");
  208. return;
  209. }
  210. m_MainForm._sTDEditor.GroupIdDictionaryFromId.Remove(id);
  211. m_MainForm._sTDEditor.GroupIdDictionaryFromName.Remove(GroupViewDic[id].name);
  212. foreach (TreeNode treeNode1 in treeView_G.Nodes)
  213. {
  214. if (((STDGroups)treeNode1.Tag).name == "Default")
  215. {
  216. if (Predata != null)
  217. {
  218. m_MainForm.SaveDataOfSelRule(Predata.STDId);
  219. }
  220. foreach (STDdata ddata in GroupViewDic[((STDGroups)treeView_G.SelectedNode.Tag).id].ContainSTD)
  221. {
  222. ddata.GroupId = ((STDGroups)treeNode1.Tag).id;
  223. ddata.ListNum = "1000";
  224. }
  225. GroupViewDic[((STDGroups)treeNode1.Tag).id].ContainSTD.AddRange(GroupViewDic[((STDGroups)treeView_G.SelectedNode.Tag).id].ContainSTD);
  226. GroupViewDic.Remove(id);
  227. InitGroupView();
  228. break;
  229. }
  230. }
  231. foreach (TreeNode treeNode1 in treeView_G.Nodes)
  232. {
  233. if (((STDGroups)treeNode1.Tag).name == "Default")
  234. {
  235. treeView_G.SelectedNode = treeNode1;
  236. m_MainForm.SetNull();
  237. Predata = null;
  238. break;
  239. }
  240. }
  241. }
  242. else
  243. {
  244. foreach (int grpid in GroupViewDic.Keys)
  245. {
  246. foreach (STDdata ddata in GroupViewDic[grpid].ContainSTD)
  247. {
  248. if (ddata.STDId == ((STDdata)treeView_G.SelectedNode.Tag).STDId)
  249. {
  250. GroupViewDic[grpid].ContainSTD.Remove(ddata);
  251. break;
  252. }
  253. }
  254. }
  255. treeView_G.SelectedNode.Remove();
  256. if (treeView_G.SelectedNode != null&& treeView_G.SelectedNode.Level !=0)
  257. {
  258. m_MainForm.ChangeSTDEditorAndGrid_Attributes((STDdata)treeView_G.SelectedNode.Tag);
  259. Predata = (STDdata)treeView_G.SelectedNode.Tag;
  260. }
  261. else
  262. {
  263. m_MainForm.SetNull();
  264. Predata = null;
  265. }
  266. this.Refresh();
  267. }
  268. }
  269. private void ToolStripMenuItem_EdGroupColor_Click(object sender, EventArgs e)
  270. {
  271. if(treeView_G.SelectedNode==null)
  272. {
  273. MessageBox.Show("Please select a group!", "Tip");
  274. return;
  275. }
  276. if (treeView_G.SelectedNode.Level == 0)
  277. {
  278. if (treeView_G.SelectedNode.Text == "Default")
  279. {
  280. MessageBox.Show("The default group cannot be changed!", "Tip");
  281. treeView_G.SelectedNode.EndEdit(true);
  282. return;
  283. }
  284. ColorDialog cd = new ColorDialog();
  285. cd.FullOpen = true;//自定义颜色界面打开
  286. DialogResult result = cd.ShowDialog();
  287. if (result == DialogResult.OK)
  288. {
  289. GroupViewDic[((STDGroups)treeView_G.SelectedNode.Tag).id].color = Attributes.colorRGBtoHx16(cd.Color.R, cd.Color.G, cd.Color.B);
  290. InitGroupView();
  291. }
  292. }
  293. else
  294. {
  295. MessageBox.Show("Please select a group!", "Tip");
  296. }
  297. }
  298. public void InitGroupView()
  299. {
  300. treeView_G.ImageList=new ImageList();
  301. treeView_G.Nodes.Clear();
  302. treeView_G.ImageList.ColorDepth = ColorDepth.Depth32Bit;
  303. List<STDGroups> groups = new List<STDGroups>();
  304. foreach (STDGroups group in GroupViewDic.Values)
  305. {
  306. if (group.name == "Default")
  307. {
  308. group.iorder = 10000;
  309. }
  310. groups.Add(group);
  311. }
  312. groups=groups.OrderBy(s => s.iorder).ToList();
  313. for (int i=0;i< groups.Count;i++)
  314. {
  315. TreeNode treeNode = new TreeNode();
  316. treeNode.Tag = groups[i];
  317. treeNode.Text = groups[i].name;
  318. Color color = Attributes.colorHx16toRGB(groups[i].color);
  319. Bitmap bitmap = new Bitmap(100, 100, PixelFormat.Format32bppArgb);
  320. Graphics graphics = Graphics.FromImage(bitmap);
  321. SolidBrush b1 = new SolidBrush(color);
  322. graphics.FillEllipse(b1, new Rectangle(0, 0, 100, 100));
  323. treeView_G.ImageList.Images.Add(groups[i].id.ToString(),bitmap);
  324. treeNode.ImageKey = groups[i].id.ToString();
  325. treeNode.SelectedImageKey = groups[i].id.ToString();
  326. treeView_G.Nodes.Add(treeNode);
  327. groups[i].ContainSTD= groups[i].ContainSTD.OrderBy(s => int.Parse(s.ListNum)).ToList();
  328. for(int j=0;j<groups[i].ContainSTD.Count;j++)
  329. {
  330. STDdata ddata = groups[i].ContainSTD[j];
  331. TreeNode childtreeNode = new TreeNode();
  332. childtreeNode.Tag = ddata;
  333. childtreeNode.Text = ddata.StrName;
  334. Color color2 = Attributes.colorHx16toRGB(ddata.Color);
  335. SolidBrush b2 = new SolidBrush(color2);
  336. graphics.FillEllipse(b2, new Rectangle(0, 0, 100, 100));
  337. treeView_G.ImageList.Images.Add("0x"+ ddata.STDId, bitmap);
  338. childtreeNode.ImageKey = "0x" + ddata.STDId;
  339. childtreeNode.SelectedImageKey = "0x" + ddata.STDId;
  340. treeNode.Nodes.Add(childtreeNode);
  341. }
  342. treeNode.ExpandAll();
  343. }
  344. treeView_G.Font = new Font("微软雅黑", 12);
  345. treeView_G.ShowLines = false;
  346. this.Refresh();
  347. }
  348. private void treeView_G_ItemDrag(object sender, ItemDragEventArgs e)
  349. {
  350. if (e.Button == MouseButtons.Left)
  351. {
  352. m_targetNode = null;
  353. TreeNode _node = (TreeNode)e.Item;
  354. if (_node.Text!= "Default")
  355. {
  356. DoDragDrop(e.Item, DragDropEffects.Move | DragDropEffects.Copy);
  357. }
  358. }
  359. }
  360. TreeNode m_targetNode; //用于记录当前拖拽到的目标节点;
  361. private void treeView_G_DragDrop(object sender, DragEventArgs e)
  362. {
  363. if (m_targetNode != null)
  364. {
  365. TreeNode _node = (TreeNode)e.Data.GetData(typeof(TreeNode));
  366. if (Predata != null)
  367. {
  368. m_MainForm.SaveDataOfSelRule(Predata.STDId);
  369. }
  370. if (_node.Level == 1)
  371. {
  372. if (!m_targetNode.Equals(_node))
  373. {
  374. if (m_targetNode.Level == _node.Level)
  375. {
  376. if (_node.Parent.Equals(m_targetNode.Parent))
  377. {
  378. _node.Remove();
  379. m_targetNode.Parent.Nodes.Insert(m_targetNode.Index+1, _node);
  380. m_targetNode.Parent.ExpandAll();
  381. treeView_G.SelectedNode = _node;
  382. m_MainForm.ChangeSTDEditorAndGrid_Attributes((STDdata)_node.Tag);
  383. Predata = (STDdata)_node.Tag;
  384. }
  385. else
  386. {
  387. GroupViewDic[((STDGroups)_node.Parent.Tag).id].ContainSTD.Remove((STDdata)_node.Tag);
  388. _node.Remove();
  389. ((STDdata)_node.Tag).GroupId = ((STDGroups)m_targetNode.Parent.Tag).id;
  390. m_targetNode.Parent.Nodes.Add(_node);
  391. GroupViewDic[((STDGroups)m_targetNode.Parent.Tag).id].ContainSTD.Add((STDdata)_node.Tag);
  392. treeView_G.SelectedNode = _node; // 选中节点
  393. m_targetNode.Parent.Expand(); // 展开父节点
  394. m_MainForm.ChangeSTDEditorAndGrid_Attributes((STDdata)_node.Tag);
  395. Predata = (STDdata)_node.Tag;
  396. }
  397. }
  398. else
  399. {
  400. GroupViewDic[((STDGroups)_node.Parent.Tag).id].ContainSTD.Remove((STDdata)_node.Tag);
  401. _node.Remove();
  402. ((STDdata)_node.Tag).GroupId = ((STDGroups)m_targetNode.Tag).id;
  403. m_targetNode.Nodes.Add(_node);
  404. GroupViewDic[((STDGroups)m_targetNode.Tag).id].ContainSTD.Add((STDdata)_node.Tag);
  405. treeView_G.SelectedNode = _node; // 选中节点
  406. m_targetNode.Expand(); // 展开父节点
  407. m_MainForm.ChangeSTDEditorAndGrid_Attributes((STDdata)_node.Tag);
  408. Predata = (STDdata)_node.Tag;
  409. }
  410. }
  411. }
  412. else
  413. {
  414. m_MainForm.SetNull();
  415. Predata = null;
  416. if (!m_targetNode.Equals(_node)&& m_targetNode.Text != "Default")
  417. {
  418. if (m_targetNode.Level == _node.Level)
  419. {
  420. _node.Remove();
  421. treeView_G.Nodes.Insert(m_targetNode.Index+1, _node);
  422. treeView_G.SelectedNode = _node;
  423. }
  424. else
  425. {
  426. _node.Remove();
  427. treeView_G.Nodes.Insert(m_targetNode.Parent.Index+1, _node);
  428. treeView_G.SelectedNode = _node;
  429. }
  430. }
  431. }
  432. m_targetNode = null;
  433. _node = null;
  434. }
  435. }
  436. [DllImport("user32.dll")]
  437. private static extern int SendMessage(IntPtr hWnd, int wMsg, int wParam,int lParam);
  438. private void treeView_G_DragOver(object sender, DragEventArgs e)
  439. {
  440. const Single scrollRegion = 20;
  441. Point pt = treeView_G.PointToClient(Cursor.Position);
  442. if ((pt.Y + scrollRegion) > treeView_G.Height)
  443. {
  444. SendMessage(treeView_G.Handle, (int)277, (int)1, 0);
  445. }
  446. else if (pt.Y < (treeView_G.Top + scrollRegion))
  447. {
  448. SendMessage(treeView_G.Handle, (int)277, (int)0, 0);
  449. }
  450. TreeNode _node2 = treeView_G.GetNodeAt(treeView_G.PointToClient(new Point(e.X, e.Y)));
  451. m_targetNode = null;
  452. if (_node2 != null)
  453. {
  454. m_targetNode = _node2;
  455. e.Effect = DragDropEffects.Move;
  456. }
  457. else
  458. {
  459. e.Effect = DragDropEffects.None;
  460. }
  461. }
  462. private void treeView_G_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
  463. {
  464. if (Predata!=null)
  465. {
  466. m_MainForm.SaveDataOfSelRule(Predata.STDId);
  467. }
  468. if(e.Node.Level==0)
  469. {
  470. m_MainForm.SetNull();
  471. Predata = null;
  472. treeView_G.SelectedNode = e.Node;
  473. }
  474. else
  475. {
  476. m_MainForm.ChangeSTDEditorAndGrid_Attributes((STDdata)e.Node.Tag);
  477. Predata = (STDdata)e.Node.Tag;
  478. treeView_G.SelectedNode = e.Node;
  479. }
  480. }
  481. public void AdjustTreenodeByGroup(int Groupid)
  482. {
  483. if (m_MainForm.m_STDRuleslist.tabControl1.SelectedIndex == 1)
  484. {
  485. return;
  486. }
  487. if (treeView_G.SelectedNode == null)
  488. {
  489. return;
  490. }
  491. if (treeView_G.SelectedNode.Level == 0)
  492. {
  493. return;
  494. }
  495. STDdata ddata = (STDdata)treeView_G.SelectedNode.Tag;
  496. TreeNode nodenew = null;
  497. foreach (TreeNode node in treeView_G.Nodes)
  498. {
  499. if (((STDGroups)node.Tag).id == Groupid)
  500. {
  501. nodenew = node;break;
  502. }
  503. }
  504. foreach (TreeNode node in treeView_G.Nodes)
  505. {
  506. foreach (TreeNode node1 in node.Nodes)
  507. {
  508. if (((STDdata)node1.Tag).STDId == ddata.STDId)
  509. {
  510. GroupViewDic[((STDGroups)node.Tag).id].ContainSTD.Remove(ddata);
  511. node1.Remove();
  512. ((STDdata)node1.Tag).GroupId = ddata.GroupId;
  513. nodenew.Nodes.Add(node1);
  514. GroupViewDic[Groupid].ContainSTD.Add(ddata);
  515. treeView_G.SelectedNode = node1;
  516. nodenew.Expand();
  517. m_MainForm.ChangeSTDEditorAndGrid_Attributes((STDdata)node1.Tag);
  518. Predata = ddata;
  519. break;
  520. }
  521. }
  522. }
  523. }
  524. string PreN = "";
  525. private void ToolStripMenuItem_Rename_Click(object sender, EventArgs e)
  526. {
  527. if (treeView_G.SelectedNode != null)
  528. {
  529. RenFlag = true;
  530. PreN = treeView_G.SelectedNode.Text;
  531. if (treeView_G.SelectedNode.Level == 0)
  532. {
  533. if (treeView_G.SelectedNode.Text == "Default")
  534. {
  535. MessageBox.Show("The default group cannot be changed!", "Tip");
  536. treeView_G.SelectedNode.EndEdit(true);
  537. return;
  538. }
  539. else
  540. {
  541. treeView_G.SelectedNode.BeginEdit();
  542. }
  543. }
  544. else
  545. {
  546. treeView_G.SelectedNode.BeginEdit();
  547. }
  548. }
  549. }
  550. private void treeView_G_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
  551. {
  552. if (treeView_G.SelectedNode.Level == 0)
  553. {
  554. if(e.Label == "")
  555. {
  556. e.CancelEdit=true;
  557. return;
  558. }
  559. if (e.Label == "Default")
  560. {
  561. e.CancelEdit = true;
  562. return;
  563. }
  564. if (e.Label != null && e.Label != "")
  565. {
  566. if (m_MainForm._sTDEditor.GroupIdDictionaryFromName.ContainsKey(e.Label))
  567. {
  568. MessageBox.Show("Group names cannot be duplicated!", "Tip");
  569. e.CancelEdit = true;
  570. return;
  571. }
  572. else
  573. {
  574. STDGroups Group = (STDGroups)treeView_G.SelectedNode.Tag;
  575. m_MainForm._sTDEditor.GroupIdDictionaryFromId.Remove(Group.id);
  576. m_MainForm._sTDEditor.GroupIdDictionaryFromName.Remove(GroupViewDic[Group.id].name);
  577. GroupViewDic[Group.id].name = e.Label;
  578. m_MainForm._sTDEditor.GroupIdDictionaryFromId.Add(Group.id, Group.name);
  579. m_MainForm._sTDEditor.GroupIdDictionaryFromName.Add(GroupViewDic[Group.id].name, Group.id);
  580. m_MainForm.m_Attributes.AddSTDGroupsToAttribute();
  581. }
  582. }
  583. }
  584. else
  585. {
  586. if (e.Label == "")
  587. {
  588. e.CancelEdit = true;
  589. return;
  590. }
  591. if (e.Label != null && e.Label != "")
  592. {
  593. STDdata sT = (STDdata)treeView_G.SelectedNode.Tag;
  594. foreach (int grpid in GroupViewDic.Keys)
  595. {
  596. foreach (STDdata ddata in GroupViewDic[grpid].ContainSTD)
  597. {
  598. if (ddata.STDId == ((STDdata)treeView_G.SelectedNode.Tag).STDId)
  599. {
  600. ddata.StrName = e.Label;
  601. m_MainForm.ChangeSTDEditorAndGrid_Attributes(ddata);
  602. break;
  603. }
  604. }
  605. }
  606. }
  607. }
  608. }
  609. private void ToolStripMenuItem_NewRule_Click(object sender, EventArgs e)
  610. {
  611. TreeNode _node2 = treeView_G.SelectedNode;
  612. if (_node2 != null)
  613. {
  614. if (Predata != null)
  615. {
  616. m_MainForm.SaveDataOfSelRule(Predata.STDId);
  617. }
  618. STDdata ddata= m_MainForm._sTDEditor.AddSTDDictionaryItem();
  619. int STDId = 40000;
  620. foreach (STDGroups grp in GroupViewDic.Values)
  621. {
  622. foreach (STDdata ddata1 in grp.ContainSTD)
  623. {
  624. if (STDId < ddata1.STDId)
  625. {
  626. STDId = ddata1.STDId;
  627. }
  628. }
  629. }
  630. ddata.STDId = STDId + 1;
  631. TreeNode treeNode = new TreeNode();
  632. treeNode.Text = ddata.StrName;
  633. treeNode.Tag = ddata;
  634. if (_node2.Level == 0)
  635. {
  636. ddata.ListNum = ((((STDGroups)treeView_G.SelectedNode.Tag).ContainSTD).Count - 1).ToString();
  637. ddata.GroupId = ((STDGroups)_node2.Tag).id;
  638. ((STDGroups)treeView_G.SelectedNode.Tag).ContainSTD.Add(ddata);
  639. _node2.Nodes.Add(treeNode);
  640. }
  641. else
  642. {
  643. ddata.ListNum = ((((STDGroups)treeView_G.SelectedNode.Parent.Tag).ContainSTD).Count - 1).ToString();
  644. ddata.GroupId = ((STDGroups)_node2.Parent.Tag).id;
  645. ((STDGroups)treeView_G.SelectedNode.Parent.Tag).ContainSTD.Add(ddata);
  646. _node2.Parent.Nodes.Add(treeNode);
  647. }
  648. m_MainForm.ChangeSTDEditorAndGrid_Attributes(ddata);
  649. Predata = (STDdata)treeNode.Tag;
  650. InitGroupView();
  651. foreach(TreeNode node in treeView_G.Nodes)
  652. {
  653. foreach (TreeNode node1 in node.Nodes)
  654. {
  655. if (((STDdata)node1.Tag).STDId == ddata.STDId)
  656. {
  657. treeView_G.SelectedNode = node1;
  658. this.Refresh();
  659. break;
  660. }
  661. }
  662. }
  663. }
  664. else
  665. {
  666. foreach (TreeNode treeNode1 in treeView_G.Nodes)
  667. {
  668. if (((STDGroups)treeNode1.Tag).name == "Default")
  669. {
  670. if(Predata != null)
  671. {
  672. m_MainForm.SaveDataOfSelRule(Predata.STDId);
  673. }
  674. STDdata ddata = m_MainForm._sTDEditor.AddSTDDictionaryItem();
  675. int STDId = 40000;
  676. foreach (STDGroups grp in GroupViewDic.Values)
  677. {
  678. foreach (STDdata ddata1 in grp.ContainSTD)
  679. {
  680. if (STDId < ddata1.STDId)
  681. {
  682. STDId = ddata1.STDId;
  683. }
  684. }
  685. }
  686. ddata.STDId = STDId + 1;
  687. TreeNode treeNode = new TreeNode();
  688. treeNode.Text= ddata.StrName;
  689. treeNode.Tag = ddata;
  690. ddata.ListNum = ((((STDGroups)treeNode1.Tag).ContainSTD).Count - 1).ToString();
  691. ddata.GroupId = ((STDGroups)treeNode1.Tag).id;
  692. ((STDGroups)treeNode1.Tag).ContainSTD.Add(ddata);
  693. InitGroupView();
  694. foreach (TreeNode node in treeView_G.Nodes)
  695. {
  696. foreach (TreeNode node1 in node.Nodes)
  697. {
  698. if (((STDdata)node1.Tag).STDId == ddata.STDId)
  699. {
  700. treeView_G.SelectedNode = node1;
  701. m_MainForm.ChangeSTDEditorAndGrid_Attributes(ddata);
  702. Predata = (STDdata)treeNode.Tag;
  703. treeView_G.Focus();
  704. break;
  705. }
  706. }
  707. }
  708. break;
  709. }
  710. }
  711. }
  712. }
  713. private void treeView_G_KeyUp(object sender, KeyEventArgs e)
  714. {
  715. if (e.KeyCode == Keys.Up|| e.KeyCode == Keys.Down)
  716. {
  717. if (Predata != null)
  718. {
  719. int id = Predata.STDId;
  720. m_MainForm.SaveDataOfSelRule(id);
  721. }
  722. if (treeView_G.SelectedNode.Level != 0 && treeView_G.SelectedNode != null)
  723. {
  724. m_MainForm.ChangeSTDEditorAndGrid_Attributes((STDdata)treeView_G.SelectedNode.Tag);
  725. Predata = (STDdata)treeView_G.SelectedNode.Tag;
  726. }
  727. else
  728. {
  729. m_MainForm.SetNull();
  730. Predata = null;
  731. }
  732. m_MainForm.m_SubMidWindow.m_ComparativeLibrary.MakeCheckboxUnchecked();
  733. }
  734. }
  735. private void treeView_G_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e)
  736. {
  737. if (!RenFlag) e.CancelEdit = true;
  738. RenFlag = false;
  739. }
  740. }
  741. }