STDRuleslist.cs 31 KB

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