TableColumnMenu.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. using FastReport.Design;
  2. using FastReport.Design.PageDesigners.Page;
  3. using FastReport.Utils;
  4. using System;
  5. namespace FastReport.Table
  6. {
  7. internal class TableColumnMenu : TableMenuBase
  8. {
  9. #region Fields
  10. private SelectedObjectCollection selection;
  11. private TableBase table;
  12. private TableColumn column;
  13. public ContextMenuItem miInsertColumnToLeft;
  14. public ContextMenuItem miInsertColumnToRight;
  15. public ContextMenuItem miAutoSize;
  16. public ContextMenuItem miCut;
  17. public ContextMenuItem miPaste;
  18. public ContextMenuItem miDelete;
  19. private ContextMenuItem miStyle;
  20. #endregion
  21. #region Properties
  22. #endregion
  23. #region Private Methods
  24. private void miInsertColumnToLeft_Click(object sender, EventArgs e)
  25. {
  26. TableColumn column = new TableColumn();
  27. table.Columns.Insert(table.Columns.IndexOf(this.column), column);
  28. table.CreateUniqueNames();
  29. selection.Clear();
  30. selection.Add(column);
  31. Change();
  32. }
  33. private void miInsertColumnToRight_Click(object sender, EventArgs e)
  34. {
  35. TableColumn column = new TableColumn();
  36. table.Columns.Insert(table.Columns.IndexOf(this.column) + 1, column);
  37. table.CreateUniqueNames();
  38. selection.Clear();
  39. selection.Add(column);
  40. Change();
  41. }
  42. private void miAutoSize_Click(object sender, EventArgs e)
  43. {
  44. for (int i = 0; i < selection.Count; i++)
  45. {
  46. (selection[i] as TableColumn).AutoSize = miAutoSize.Checked;
  47. }
  48. Change();
  49. }
  50. private void miCut_Click(object sender, EventArgs e)
  51. {
  52. TableColumn[] columns = new TableColumn[selection.Count];
  53. for (int i = 0; i < selection.Count; i++)
  54. {
  55. columns[i] = selection[i] as TableColumn;
  56. }
  57. table.Clipboard.CutColumns(columns);
  58. selection.Clear();
  59. selection.Add(table);
  60. Change();
  61. }
  62. private void miPaste_Click(object sender, EventArgs e)
  63. {
  64. table.Clipboard.PasteColumns(table.Columns.IndexOf(column));
  65. Change();
  66. }
  67. private void miDelete_Click(object sender, EventArgs e)
  68. {
  69. for (int i = 0; i < selection.Count; i++)
  70. {
  71. TableColumn column = selection[i] as TableColumn;
  72. if (column != null)
  73. {
  74. if (column.IsAncestor)
  75. {
  76. FRMessageBox.Error(String.Format(Res.Get("Messages,DeleteAncestor"), column.Name));
  77. break;
  78. }
  79. else
  80. table.Columns.Remove(column);
  81. }
  82. }
  83. selection.Clear();
  84. selection.Add(table);
  85. Change();
  86. }
  87. private void miStyle_Click(object sender, EventArgs e)
  88. {
  89. if (sender is ContextMenuItem menuItem)
  90. {
  91. (Designer.ActiveReportTab.ActivePageDesigner as ReportPageDesigner).Workspace.Focus();
  92. for (int i = 0; i < table.RowCount; i++)
  93. {
  94. table[table.Columns.IndexOf(column), i].Style = menuItem.Text;
  95. }
  96. Change();
  97. }
  98. }
  99. #endregion
  100. public TableColumnMenu(Designer designer) : base(designer)
  101. {
  102. selection = Designer.SelectedObjects;
  103. column = selection[0] as TableColumn;
  104. table = column.Parent as TableBase;
  105. miInsertColumnToLeft = CreateMenuItem(220, Res.Get("ComponentMenu,TableColumn,InsertToLeft"), new EventHandler(miInsertColumnToLeft_Click));
  106. miInsertColumnToRight = CreateMenuItem(221, Res.Get("ComponentMenu,TableColumn,InsertToRight"), new EventHandler(miInsertColumnToRight_Click));
  107. miAutoSize = CreateMenuItem(Res.Get("ComponentMenu,TableRow,AutoSize"), new EventHandler(miAutoSize_Click));
  108. miAutoSize.BeginGroup = true;
  109. miAutoSize.CheckOnClick = true;
  110. miCut = CreateMenuItem(5, Res.Get("Designer,Menu,Edit,Cut"), new EventHandler(miCut_Click));
  111. miCut.BeginGroup = true;
  112. miPaste = CreateMenuItem(7, Res.Get("Designer,Menu,Edit,Paste"), new EventHandler(miPaste_Click));
  113. miDelete = CreateMenuItem(51, Res.Get("Designer,Menu,Edit,Delete"), new EventHandler(miDelete_Click));
  114. miStyle = CreateMenuItem(87, Res.Get("ComponentMenu,TableCell,Styles"), null);
  115. miStyle.Visible = table.Report.Styles.Count > 0;
  116. miStyle.BeginGroup = true;
  117. foreach (Style style in table.Report.Styles)
  118. {
  119. miStyle.DropDownItems.Add(CreateMenuItem(style.Name, new EventHandler(miStyle_Click)));
  120. }
  121. // QAT items
  122. miCut.QatItem = miPaste.QatItem = miDelete.QatItem = true;
  123. miAutoSize.Checked = column.AutoSize;
  124. miCut.Enabled = table.Columns.Count > 1;
  125. miPaste.Enabled = table.Clipboard.CanPasteColumns;
  126. miDelete.Enabled = table.Columns.Count > 1;
  127. Items.AddRange(new ContextMenuItem[] {
  128. miInsertColumnToLeft, miInsertColumnToRight,
  129. miAutoSize, miStyle,
  130. miCut, miPaste, miDelete });
  131. }
  132. }
  133. }