ComponentBaseMenu.cs 3.8 KB

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