RibbonBorderGroup.cs 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. using FastReport.Controls;
  2. using FastReport.Utils;
  3. using System;
  4. using System.Drawing;
  5. using System.Windows.Forms;
  6. namespace FastReport.Design.RibbonDesigner
  7. {
  8. internal class RibbonBorderGroup : RibbonGroup
  9. {
  10. #region Fields
  11. private WrappedPanel Panel1 { get; }
  12. public ToolbarButton btnTop;
  13. public ToolbarButton btnBottom;
  14. public ToolbarButton btnLeft;
  15. public ToolbarButton btnRight;
  16. public ToolbarButton btnAll;
  17. public ToolbarButton btnNone;
  18. public ToolbarButton btnBorderProps;
  19. public ToolbarColorButton btnFillColor;
  20. public ToolbarButton btnFillStyle;
  21. public ToolbarColorButton btnLineColor;
  22. public ToolbarLineWidthButton btnWidth;
  23. public ToolbarLineStyleButton btnStyle;
  24. #endregion
  25. #region Private Methods
  26. private void UpdateControls()
  27. {
  28. bool enabled = Designer.SelectedReportComponents.Enabled;
  29. bool simple = Designer.SelectedReportComponents.SimpleBorder;
  30. bool useBorder = Designer.SelectedReportComponents.BorderEnabled;
  31. bool borderEnabled = enabled && !simple && useBorder;
  32. btnTop.Enabled = borderEnabled;
  33. btnBottom.Enabled = borderEnabled;
  34. btnLeft.Enabled = borderEnabled;
  35. btnRight.Enabled = borderEnabled;
  36. btnAll.Enabled = borderEnabled;
  37. btnNone.Enabled = borderEnabled;
  38. btnFillColor.Enabled = enabled && Designer.SelectedReportComponents.FillEnabled;
  39. btnFillStyle.Enabled = enabled && Designer.SelectedReportComponents.FillEnabled;
  40. btnLineColor.Enabled = enabled && useBorder;
  41. btnWidth.Enabled = enabled && useBorder;
  42. btnStyle.Enabled = enabled && useBorder;
  43. btnBorderProps.Enabled = borderEnabled;
  44. if (enabled)
  45. {
  46. Border border = Designer.SelectedReportComponents.First.Border;
  47. btnTop.Checked = (border.Lines & BorderLines.Top) != 0;
  48. btnBottom.Checked = (border.Lines & BorderLines.Bottom) != 0;
  49. btnLeft.Checked = (border.Lines & BorderLines.Left) != 0;
  50. btnRight.Checked = (border.Lines & BorderLines.Right) != 0;
  51. btnLineColor.Color = border.Color;
  52. if (Designer.SelectedReportComponents.First.Fill is SolidFill)
  53. btnFillColor.Color = (Designer.SelectedReportComponents.First.Fill as SolidFill).Color;
  54. btnWidth.LineWidth = border.Width;
  55. btnStyle.LineStyle = border.Style;
  56. }
  57. }
  58. private void btnTop_Click(object sender, EventArgs e)
  59. {
  60. btnTop.Checked = !btnTop.Checked;
  61. Designer.SelectedReportComponents.ToggleLine(BorderLines.Top, btnTop.Checked);
  62. }
  63. private void btnBottom_Click(object sender, EventArgs e)
  64. {
  65. btnBottom.Checked = !btnBottom.Checked;
  66. Designer.SelectedReportComponents.ToggleLine(BorderLines.Bottom, btnBottom.Checked);
  67. }
  68. private void btnLeft_Click(object sender, EventArgs e)
  69. {
  70. btnLeft.Checked = !btnLeft.Checked;
  71. Designer.SelectedReportComponents.ToggleLine(BorderLines.Left, btnLeft.Checked);
  72. }
  73. private void btnRight_Click(object sender, EventArgs e)
  74. {
  75. btnRight.Checked = !btnRight.Checked;
  76. Designer.SelectedReportComponents.ToggleLine(BorderLines.Right, btnRight.Checked);
  77. }
  78. private void btnAll_Click(object sender, EventArgs e)
  79. {
  80. Designer.SelectedReportComponents.ToggleLine(BorderLines.All, true);
  81. }
  82. private void btnNone_Click(object sender, EventArgs e)
  83. {
  84. Designer.SelectedReportComponents.ToggleLine(BorderLines.All, false);
  85. }
  86. private void btnLineColor_Click(object sender, EventArgs e)
  87. {
  88. Designer.SelectedReportComponents.SetLineColor(btnLineColor.DefaultColor);
  89. }
  90. private void btnFillColor_Click(object sender, EventArgs e)
  91. {
  92. Designer.SelectedReportComponents.SetColor(btnFillColor.DefaultColor);
  93. }
  94. private void btnFillProps_Click(object sender, EventArgs e)
  95. {
  96. Designer.SelectedReportComponents.InvokeFillEditor();
  97. }
  98. private void cbxWidth_WidthSelected(object sender, EventArgs e)
  99. {
  100. Designer.SelectedReportComponents.SetWidth(btnWidth.LineWidth);
  101. }
  102. private void cbxStyle_StyleSelected(object sender, EventArgs e)
  103. {
  104. Designer.SelectedReportComponents.SetLineStyle(btnStyle.LineStyle);
  105. }
  106. private void btnBorderProps_Click(object sender, EventArgs e)
  107. {
  108. Designer.SelectedReportComponents.InvokeBorderEditor();
  109. }
  110. #endregion
  111. #region Public Methods
  112. public override void SelectionChanged()
  113. {
  114. base.SelectionChanged();
  115. Throttle.Execute(UpdateControls);
  116. }
  117. public override void UpdateContent()
  118. {
  119. base.UpdateContent();
  120. Throttle.Execute(UpdateControls);
  121. }
  122. public override void Localize()
  123. {
  124. base.Localize();
  125. MyRes res = new MyRes("Designer,Toolbar,Border");
  126. Text = res.Get("");
  127. SetItemText(btnTop, res.Get("Top"));
  128. SetItemText(btnBottom, res.Get("Bottom"));
  129. SetItemText(btnLeft, res.Get("Left"));
  130. SetItemText(btnRight, res.Get("Right"));
  131. SetItemText(btnAll, res.Get("All"));
  132. SetItemText(btnNone, res.Get("None"));
  133. SetItemText(btnFillColor, res.Get("FillColor"));
  134. SetItemText(btnFillStyle, res.Get("FillStyle"));
  135. SetItemText(btnLineColor, res.Get("LineColor"));
  136. SetItemText(btnWidth, res.Get("Width"));
  137. SetItemText(btnStyle, res.Get("Style"));
  138. SetItemText(btnBorderProps, res.Get("Props"));
  139. }
  140. public override void UpdateUIStyle()
  141. {
  142. base.UpdateUIStyle();
  143. btnFillColor.SetStyle(Designer.UIStyle);
  144. btnLineColor.SetStyle(Designer.UIStyle);
  145. }
  146. public override void UpdateDpiDependencies()
  147. {
  148. if (State == GroupState.Collapsed)
  149. return;
  150. base.UpdateDpiDependencies();
  151. Panel1.MaxWidth = 180;
  152. Panel1.UpdateDpiDependencies();
  153. btnWidth.Size = btnStyle.Size = Designer.LogicalToDevice(new System.Drawing.Size(35, 22));
  154. }
  155. #endregion
  156. public RibbonBorderGroup(Designer designer) : base(designer)
  157. {
  158. Name = "BorderGroup";
  159. CollapsedImageName = "Ribbon.Border.png";
  160. Priority = GroupPriority.High;
  161. btnTop = new ToolbarButton("btnBorderTop", 32, btnTop_Click);
  162. btnBottom = new ToolbarButton("btnBorderBottom", 33, btnBottom_Click);
  163. btnLeft = new ToolbarButton("btnBorderLeft", 34, btnLeft_Click);
  164. btnRight = new ToolbarButton("btnBorderRight", 35, btnRight_Click);
  165. btnAll = new ToolbarButton("btnBorderAll", 36, btnAll_Click);
  166. btnAll.BeginGroup = true;
  167. btnNone = new ToolbarButton("btnBorderNone", 37, btnNone_Click);
  168. btnFillColor = new ToolbarColorButton("btnBorderFillColor", 38, Color.Transparent, btnFillColor_Click);
  169. btnFillStyle = new ToolbarButton("btnBorderFillStyle", 141, btnFillProps_Click);
  170. btnLineColor = new ToolbarColorButton("btnBorderLineColor", 39, Color.Black, btnLineColor_Click);
  171. btnLineColor.BeginGroup = true;
  172. btnWidth = new ToolbarLineWidthButton(designer, "btnBorderWidth", 71, cbxWidth_WidthSelected);
  173. btnStyle = new ToolbarLineStyleButton(designer, "btnBorderStyle", 85, cbxStyle_StyleSelected);
  174. btnBorderProps = new ToolbarButton("btnBorderBorderProps", 40, btnBorderProps_Click);
  175. Panel1 = new WrappedPanel() { VerticalAlignment = System.Windows.VerticalAlignment.Center, Margin = new Padding(0, 3, 0, 3) };
  176. Panel1.AddItems(
  177. btnTop, btnBottom, btnLeft, btnRight,
  178. btnAll, btnNone, btnBorderProps,
  179. btnFillColor, btnFillStyle, btnLineColor, btnWidth, btnStyle);
  180. Panel.AddPanels(Panel1);
  181. Localize();
  182. UpdateDpiDependencies();
  183. }
  184. }
  185. }