MatrixHeaderMenu.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. using System;
  2. using System.Windows.Forms;
  3. using FastReport.Utils;
  4. namespace FastReport.AdvMatrix
  5. {
  6. internal class MatrixHeaderMenu : MatrixCellMenuBase
  7. {
  8. private HeaderDescriptor descr;
  9. public ContextMenuItem miAddTotal;
  10. public ContextMenuItem miAddTotalBefore;
  11. public ContextMenuItem miAddTotalAfter;
  12. private ContextMenuItem miInsert;
  13. private ContextMenuItem miInsertAfter;
  14. private ContextMenuItem miInsertBefore;
  15. private ContextMenuItem miInsertParent;
  16. private ContextMenuItem miInsertChild;
  17. private ContextMenuItem miDelete;
  18. private ContextMenuItem miDeleteThisItem;
  19. private ContextMenuItem miDeleteItemTree;
  20. private void AfterInsert(HeaderDescriptor newItem)
  21. {
  22. Change();
  23. Designer.SelectedObjects.Clear();
  24. Designer.SelectedObjects.Add(newItem.TemplateCell);
  25. Designer.SelectionChanged(null);
  26. }
  27. private void AfterDelete()
  28. {
  29. Change();
  30. Designer.SelectedObjects.Clear();
  31. Designer.SelectedObjects.Add(Matrix);
  32. Designer.SelectionChanged(null);
  33. }
  34. private void AddTotalAfter_Click(object sender, EventArgs e)
  35. {
  36. HeaderDescriptor d = new HeaderDescriptor();
  37. d.DisplayText = Res.Get("ComponentsMisc,Matrix,Total");
  38. AfterInsert(descr.InsertAfter(d));
  39. }
  40. private void AddTotalBefore_Click(object sender, EventArgs e)
  41. {
  42. HeaderDescriptor d = new HeaderDescriptor();
  43. d.DisplayText = Res.Get("ComponentsMisc,Matrix,Total");
  44. AfterInsert(descr.InsertBefore(d));
  45. }
  46. private void InsertAfter_Click(object sender, EventArgs e)
  47. {
  48. AfterInsert(descr.InsertAfter(new HeaderDescriptor()));
  49. }
  50. private void InsertBefore_Click(object sender, EventArgs e)
  51. {
  52. AfterInsert(descr.InsertBefore(new HeaderDescriptor()));
  53. }
  54. private void InsertParent_Click(object sender, EventArgs e)
  55. {
  56. AfterInsert(descr.InsertParent(new HeaderDescriptor()));
  57. }
  58. private void InsertChild_Click(object sender, EventArgs e)
  59. {
  60. AfterInsert(descr.InsertChild(new HeaderDescriptor()));
  61. }
  62. private void DeleteThisItem_Click(object sender, EventArgs e)
  63. {
  64. descr.DeleteTopNItems();
  65. descr.DeleteThis();
  66. AfterDelete();
  67. }
  68. private void DeleteItemTree_Click(object sender, EventArgs e)
  69. {
  70. descr.DeleteTopNItems();
  71. descr.DeleteTree();
  72. AfterDelete();
  73. }
  74. public MatrixHeaderMenu(AdvMatrixObject matrix) : base(matrix)
  75. {
  76. descr = Cell.GetHeaderDescriptor();
  77. MyRes res = new MyRes("ComponentMenu,AdvMatrixHeader");
  78. miAddTotal = CreateMenuItem(65, res.Get("AddTotal"), null);
  79. miAddTotal.BeginGroup = true;
  80. miAddTotalAfter = CreateMenuItem(res.Get("Insert,After"), AddTotalAfter_Click);
  81. miAddTotalBefore = CreateMenuItem(res.Get("Insert,Before"), AddTotalBefore_Click);
  82. miAddTotal.DropDownItems.AddRange(new ContextMenuItem[] { miAddTotalAfter, miAddTotalBefore });
  83. res = new MyRes("ComponentMenu,AdvMatrixHeader,Insert");
  84. miInsert = CreateMenuItem(res.Get(""), null);
  85. miInsert.BeginGroup = true;
  86. miInsertAfter = CreateMenuItem(res.Get("After"), InsertAfter_Click);
  87. miInsertBefore = CreateMenuItem(res.Get("Before"), InsertBefore_Click);
  88. miInsertParent = CreateMenuItem(res.Get("Parent"), InsertParent_Click);
  89. miInsertChild = CreateMenuItem(res.Get("Child"), InsertChild_Click);
  90. miInsert.DropDownItems.AddRange(new ContextMenuItem[] { miInsertAfter, miInsertBefore, miInsertParent, miInsertChild });
  91. res = new MyRes("ComponentMenu,AdvMatrixHeader,Delete");
  92. miDelete = CreateMenuItem(51, res.Get(""), null);
  93. miDeleteThisItem = CreateMenuItem(res.Get("ThisItem"), DeleteThisItem_Click);
  94. miDeleteItemTree = CreateMenuItem(res.Get("ItemTree"), DeleteItemTree_Click);
  95. miDelete.DropDownItems.AddRange(new ContextMenuItem[] { miDeleteThisItem, miDeleteItemTree });
  96. int insertIndex = Items.IndexOf(miClear);
  97. Items.Insert(insertIndex, miAddTotal);
  98. Items.Insert(insertIndex + 1, miInsert);
  99. Items.Insert(insertIndex + 2, miDelete);
  100. miDelete.Enabled = !descr.IsTopNItem;
  101. miDeleteItemTree.Enabled = descr.Items.Count > 0;
  102. miClear.Visible = false;
  103. miMergeSplit.Visible = false;
  104. }
  105. }
  106. }