RibbonStyleGroup.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. using FastReport.Controls;
  2. using FastReport.Utils;
  3. using System;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. namespace FastReport.Design.RibbonDesigner
  7. {
  8. internal class RibbonStyleGroup : RibbonGroup
  9. {
  10. #region Fields
  11. public ToolbarButton btnHighlight;
  12. public ToolbarStyleButton btnStyles;
  13. #endregion
  14. #region Private Methods
  15. private void UpdateControls()
  16. {
  17. btnHighlight.Enabled = Designer.SelectedTextObjects.Enabled;
  18. }
  19. private void btnHighlight_Click(object sender, EventArgs e)
  20. {
  21. Designer.SelectedTextObjects.InvokeHighlightEditor();
  22. }
  23. #endregion
  24. #region Public Methods
  25. public override void SelectionChanged()
  26. {
  27. base.SelectionChanged();
  28. Throttle.Execute(UpdateControls);
  29. }
  30. public override void UpdateContent()
  31. {
  32. base.UpdateContent();
  33. Throttle.Execute(UpdateControls);
  34. }
  35. public override void Localize()
  36. {
  37. base.Localize();
  38. Text = Res.Get("Designer,Toolbar,Style");
  39. SetItemText(btnHighlight, Res.Get("Designer,Toolbar,Text,Highlight"));
  40. SetItemText(btnStyles, Res.Get("Designer,Menu,Report,Styles"));
  41. }
  42. public override void UpdateDpiDependencies()
  43. {
  44. if (State == GroupState.Collapsed)
  45. return;
  46. base.UpdateDpiDependencies();
  47. btnHighlight.Image = Designer.GetImage("Ribbon.Highlight.png");
  48. btnStyles.Image = Designer.GetImage("Ribbon.Styles.png");
  49. }
  50. #endregion
  51. public RibbonStyleGroup(Designer designer) : base(designer)
  52. {
  53. Name = "EditGroup";
  54. CollapsedImageName = "Ribbon.Styles.png";
  55. btnHighlight = new ToolbarButton("btnStyleHighlight", 5, btnHighlight_Click);
  56. btnHighlight.MakeBig();
  57. btnStyles = new ToolbarStyleButton(designer);
  58. btnStyles.MakeBig();
  59. Panel.AddItems(btnHighlight, btnStyles);
  60. Localize();
  61. UpdateDpiDependencies();
  62. }
  63. }
  64. internal class ToolbarStyleButton : ToolStripSplitButton, IToolbarItem
  65. {
  66. public Designer Designer { get; }
  67. public bool BeginGroup { get; set; }
  68. private void btnStyles_DropDownOpening(object sender, CancelEventArgs e)
  69. {
  70. if (!Designer.SelectedReportComponents.Enabled)
  71. {
  72. e.Cancel = true;
  73. return;
  74. }
  75. var lb = new StyleListBox() { BorderStyle = BorderStyle.None };
  76. lb.Styles = Designer.ActiveReport.Styles;
  77. lb.Style = Designer.SelectedReportComponents.First.Style;
  78. lb.StyleSelected += (s, e) =>
  79. {
  80. DropDown.Close();
  81. Designer.SelectedReportComponents.SetStyle(lb.Style);
  82. };
  83. DropDown.Items.Clear();
  84. DropDown.Items.Add(new ToolStripControlHost(lb));
  85. lb.ItemHeight = Designer.LogicalToDevice(30);
  86. lb.Size = Designer.LogicalToDevice(new System.Drawing.Size(150, 300));
  87. }
  88. public ToolbarStyleButton(Designer designer)
  89. {
  90. Designer = designer;
  91. DropDown = new ToolStripDropDown();
  92. DropDown.Opening += btnStyles_DropDownOpening;
  93. DropDown.Opened += (s, e) =>
  94. {
  95. OnDropDownOpened(e);
  96. IsDropDownOpen = true;
  97. };
  98. DropDown.Closed += (s, e) =>
  99. {
  100. OnDropDownClosed(e);
  101. IsDropDownOpen = false;
  102. };
  103. ButtonClick += (s, e) => Designer.cmdReportStyles.Invoke(this, e);
  104. }
  105. }
  106. }