TableRowMenu.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Windows.Forms;
  5. using FastReport.Design;
  6. using FastReport.Utils;
  7. namespace FastReport.Table
  8. {
  9. internal class TableRowMenu : TableMenuBase
  10. {
  11. #region Fields
  12. private SelectedObjectCollection selection;
  13. private TableBase table;
  14. private TableRow row;
  15. public ContextMenuItem miInsertRowAbove;
  16. public ContextMenuItem miInsertRowBelow;
  17. public ContextMenuItem miAutoSize;
  18. public ContextMenuItem miCut;
  19. public ContextMenuItem miPaste;
  20. public ContextMenuItem miDelete;
  21. #endregion
  22. #region Properties
  23. #endregion
  24. #region Private Methods
  25. private void miInsertRowAbove_Click(object sender, EventArgs e)
  26. {
  27. TableRow row = new TableRow();
  28. table.Rows.Insert(table.Rows.IndexOf(this.row), row);
  29. table.CreateUniqueNames();
  30. selection.Clear();
  31. selection.Add(row);
  32. Change();
  33. }
  34. private void miInsertRowBelow_Click(object sender, EventArgs e)
  35. {
  36. TableRow row = new TableRow();
  37. table.Rows.Insert(table.Rows.IndexOf(this.row) + 1, row);
  38. table.CreateUniqueNames();
  39. selection.Clear();
  40. selection.Add(row);
  41. Change();
  42. }
  43. private void miAutoSize_Click(object sender, EventArgs e)
  44. {
  45. for (int i = 0; i < selection.Count; i++)
  46. {
  47. (selection[i] as TableRow).AutoSize = miAutoSize.Checked;
  48. }
  49. Change();
  50. }
  51. private void miCut_Click(object sender, EventArgs e)
  52. {
  53. TableRow[] rows = new TableRow[selection.Count];
  54. for (int i = 0; i < selection.Count; i++)
  55. {
  56. rows[i] = selection[i] as TableRow;
  57. }
  58. table.Clipboard.CutRows(rows);
  59. selection.Clear();
  60. selection.Add(table);
  61. Change();
  62. }
  63. private void miPaste_Click(object sender, EventArgs e)
  64. {
  65. table.Clipboard.PasteRows(table.Rows.IndexOf(row));
  66. selection.Clear();
  67. selection.Add(table);
  68. Change();
  69. }
  70. private void miDelete_Click(object sender, EventArgs e)
  71. {
  72. for (int i = 0; i < selection.Count; i++)
  73. {
  74. TableRow row = selection[i] as TableRow;
  75. if (row != null)
  76. {
  77. if (row.IsAncestor)
  78. {
  79. FRMessageBox.Error(String.Format(Res.Get("Messages,DeleteAncestor"), row.Name));
  80. break;
  81. }
  82. else
  83. table.Rows.Remove(row);
  84. }
  85. }
  86. selection.Clear();
  87. selection.Add(table);
  88. Change();
  89. }
  90. #endregion
  91. public TableRowMenu(Designer designer) : base(designer)
  92. {
  93. selection = Designer.SelectedObjects;
  94. row = selection[0] as TableRow;
  95. table = row.Parent as TableBase;
  96. miInsertRowAbove = CreateMenuItem(218, Res.Get("ComponentMenu,TableRow,InsertAbove"), new EventHandler(miInsertRowAbove_Click));
  97. miInsertRowBelow = CreateMenuItem(219, Res.Get("ComponentMenu,TableRow,InsertBelow"), new EventHandler(miInsertRowBelow_Click));
  98. miAutoSize = CreateMenuItem(Res.Get("ComponentMenu,TableRow,AutoSize"), new EventHandler(miAutoSize_Click));
  99. miAutoSize.BeginGroup = true;
  100. miAutoSize.CheckOnClick = true;
  101. miCut = CreateMenuItem(5, Res.Get("Designer,Menu,Edit,Cut"), new EventHandler(miCut_Click));
  102. miCut.BeginGroup = true;
  103. miPaste = CreateMenuItem(7, Res.Get("Designer,Menu,Edit,Paste"), new EventHandler(miPaste_Click));
  104. miDelete = CreateMenuItem(51, Res.Get("Designer,Menu,Edit,Delete"), new EventHandler(miDelete_Click));
  105. miAutoSize.Checked = row.AutoSize;
  106. miCut.Enabled = table.Rows.Count > 1;
  107. miPaste.Enabled = table.Clipboard.CanPasteRows;
  108. miDelete.Enabled = table.Rows.Count > 1;
  109. Items.AddRange(new ContextMenuItem[] {
  110. miInsertRowAbove, miInsertRowBelow,
  111. miAutoSize,
  112. miCut, miPaste, miDelete });
  113. }
  114. }
  115. }