ComponentBaseMenu.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using FastReport.Design;
  2. using FastReport.Utils;
  3. using System;
  4. using System.ComponentModel;
  5. namespace FastReport
  6. {
  7. /// <summary>
  8. /// The base class for the context menu of the report component.
  9. /// </summary>
  10. /// <remarks>
  11. /// This class represents a context menu of the report component that is displayed when the object
  12. /// is right-clicked in the designer. This class implements the following actions: Edit, Cut, Copy,
  13. /// Paste, Delete, Bring to Front, Send to Back.
  14. /// </remarks>
  15. [ToolboxItem(false)]
  16. public class ComponentBaseMenu : ContextMenuBase
  17. {
  18. #region Fields
  19. /// <summary>
  20. /// The "Name" menu item.
  21. /// </summary>
  22. public ContextMenuItem miName;
  23. /// <summary>
  24. /// The "Edit" menu item.
  25. /// </summary>
  26. public ContextMenuItem miEdit;
  27. /// <summary>
  28. /// The "Cut" menu item.
  29. /// </summary>
  30. public ContextMenuItem miCut;
  31. /// <summary>
  32. /// The "Copy" menu item.
  33. /// </summary>
  34. public ContextMenuItem miCopy;
  35. /// <summary>
  36. /// The "Paste" menu item.
  37. /// </summary>
  38. public ContextMenuItem miPaste;
  39. /// <summary>
  40. /// The "Delete" menu item.
  41. /// </summary>
  42. public ContextMenuItem miDelete;
  43. /// <summary>
  44. /// The "BringToFront" menu item.
  45. /// </summary>
  46. public ContextMenuItem miBringToFront;
  47. /// <summary>
  48. /// The "SendToBack" menu item.
  49. /// </summary>
  50. public ContextMenuItem miSendToBack;
  51. #endregion
  52. /// <summary>
  53. /// Initializes a new instance of the <b>ComponentBaseMenu</b> class with default settings.
  54. /// </summary>
  55. /// <param name="designer">The reference to a report designer.</param>
  56. public ComponentBaseMenu(Designer designer)
  57. : base(designer)
  58. {
  59. miName = CreateMenuItem("");
  60. miEdit = CreateMenuItem(68, Res.Get("ComponentMenu,Component,Edit"), Designer.cmdEdit.Invoke);
  61. miEdit.BeginGroup = true;
  62. miCut = CreateMenuItem(5, Res.Get("Designer,Menu,Edit,Cut"), Designer.cmdCut.Invoke);
  63. miCut.BeginGroup = true;
  64. miCopy = CreateMenuItem(6, Res.Get("Designer,Menu,Edit,Copy"), Designer.cmdCopy.Invoke);
  65. miPaste = CreateMenuItem(7, Res.Get("Designer,Menu,Edit,Paste"), Designer.cmdPaste.Invoke);
  66. miDelete = CreateMenuItem(51, Res.Get("Designer,Menu,Edit,Delete"), Designer.cmdDelete.Invoke);
  67. miBringToFront = CreateMenuItem(14, Res.Get("Designer,Toolbar,Layout,BringToFront"), Designer.cmdBringToFront.Invoke);
  68. miBringToFront.BeginGroup = true;
  69. miSendToBack = CreateMenuItem(15, Res.Get("Designer,Toolbar,Layout,SendToBack"), Designer.cmdSendToBack.Invoke);
  70. // QAT items
  71. miEdit.QatItem = miCut.QatItem = miCopy.QatItem = miPaste.QatItem = miDelete.QatItem = miBringToFront.QatItem = miSendToBack.QatItem = true;
  72. miEdit.Visible = Designer.cmdEdit.Enabled;
  73. miCut.Enabled = Designer.cmdCut.Enabled;
  74. miCopy.Enabled = Designer.cmdCopy.Enabled;
  75. miPaste.Enabled = Designer.cmdPaste.Enabled;
  76. miDelete.Enabled = Designer.cmdDelete.Enabled;
  77. miBringToFront.Enabled = Designer.cmdBringToFront.Enabled;
  78. miSendToBack.Enabled = Designer.cmdSendToBack.Enabled;
  79. SelectedObjectCollection selection = Designer.SelectedObjects;
  80. miName.Text = (selection.Count == 1 ?
  81. selection[0].Name :
  82. String.Format(Res.Get("Designer,ToolWindow,Properties,NObjectsSelected"), selection.Count)) + ":";
  83. miName.SetFontBold();
  84. Items.AddRange(new ContextMenuItem[] {
  85. miName, miEdit,
  86. miCut, miCopy, miPaste, miDelete,
  87. miBringToFront, miSendToBack });
  88. }
  89. }
  90. }