BorderToolbar.cs 7.6 KB

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