STDRuleslist.cs 31 KB

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