BorderToolbar.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. using System;
  2. using System.IO;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Windows.Forms;
  6. using System.Drawing;
  7. using System.ComponentModel;
  8. using FastReport.Utils;
  9. using FastReport.Controls;
  10. using FastReport.Forms;
  11. using FastReport.Design.PageDesigners.Page;
  12. #if !MONO
  13. using FastReport.DevComponents.DotNetBar;
  14. #endif
  15. namespace FastReport.Design.Toolbars
  16. {
  17. internal class BorderToolbar : ToolbarBase
  18. {
  19. #region Fields
  20. #if !MONO
  21. public ButtonItem btnTop;
  22. public ButtonItem btnBottom;
  23. public ButtonItem btnLeft;
  24. public ButtonItem btnRight;
  25. public ButtonItem btnAll;
  26. public ButtonItem btnNone;
  27. public ButtonItem btnBorderProps;
  28. public ColorButtonItem btnFillColor;
  29. public ButtonItem btnFillStyle;
  30. public ColorButtonItem btnLineColor;
  31. public LineWidthButtonItem btnWidth;
  32. public LineStyleButtonItem btnStyle;
  33. #else
  34. public ToolStripButton btnTop;
  35. public ToolStripButton btnBottom;
  36. public ToolStripButton btnLeft;
  37. public ToolStripButton btnRight;
  38. public ToolStripButton btnAll;
  39. public ToolStripButton btnNone;
  40. public ToolStripButton btnBorderProps;
  41. public ToolStripColorButton btnFillColor;
  42. public ToolStripButton btnFillStyle;
  43. public ToolStripColorButton btnLineColor;
  44. public ToolStripLineWidthButton btnWidth;
  45. public ToolStripLineStyleButton btnStyle;
  46. #endif
  47. #endregion
  48. #region Private Methods
  49. private void UpdateControls()
  50. {
  51. bool enabled = Designer.SelectedReportComponents.Enabled;
  52. bool simple = Designer.SelectedReportComponents.SimpleBorder;
  53. bool useBorder = Designer.SelectedReportComponents.BorderEnabled;
  54. bool borderEnabled = enabled && !simple && useBorder;
  55. btnTop.Enabled = borderEnabled;
  56. btnBottom.Enabled = borderEnabled;
  57. btnLeft.Enabled = borderEnabled;
  58. btnRight.Enabled = borderEnabled;
  59. btnAll.Enabled = borderEnabled;
  60. btnNone.Enabled = borderEnabled;
  61. btnFillColor.Enabled = enabled && Designer.SelectedReportComponents.FillEnabled;
  62. btnFillStyle.Enabled = enabled && Designer.SelectedReportComponents.FillEnabled;
  63. btnLineColor.Enabled = enabled && useBorder;
  64. btnWidth.Enabled = enabled && useBorder;
  65. btnStyle.Enabled = enabled && useBorder;
  66. btnBorderProps.Enabled = borderEnabled;
  67. if (enabled)
  68. {
  69. Border border = Designer.SelectedReportComponents.First.Border;
  70. btnTop.Checked = (border.Lines & BorderLines.Top) != 0;
  71. btnBottom.Checked = (border.Lines & BorderLines.Bottom) != 0;
  72. btnLeft.Checked = (border.Lines & BorderLines.Left) != 0;
  73. btnRight.Checked = (border.Lines & BorderLines.Right) != 0;
  74. btnLineColor.Color = border.Color;
  75. if (Designer.SelectedReportComponents.First.Fill is SolidFill)
  76. btnFillColor.Color = (Designer.SelectedReportComponents.First.Fill as SolidFill).Color;
  77. btnWidth.LineWidth = border.Width;
  78. btnStyle.LineStyle = border.Style;
  79. }
  80. }
  81. private void btnTop_Click(object sender, EventArgs e)
  82. {
  83. btnTop.Checked = !btnTop.Checked;
  84. Designer.SelectedReportComponents.ToggleLine(BorderLines.Top, btnTop.Checked);
  85. }
  86. private void btnBottom_Click(object sender, EventArgs e)
  87. {
  88. btnBottom.Checked = !btnBottom.Checked;
  89. Designer.SelectedReportComponents.ToggleLine(BorderLines.Bottom, btnBottom.Checked);
  90. }
  91. private void btnLeft_Click(object sender, EventArgs e)
  92. {
  93. btnLeft.Checked = !btnLeft.Checked;
  94. Designer.SelectedReportComponents.ToggleLine(BorderLines.Left, btnLeft.Checked);
  95. }
  96. private void btnRight_Click(object sender, EventArgs e)
  97. {
  98. btnRight.Checked = !btnRight.Checked;
  99. Designer.SelectedReportComponents.ToggleLine(BorderLines.Right, btnRight.Checked);
  100. }
  101. private void btnAll_Click(object sender, EventArgs e)
  102. {
  103. Designer.SelectedReportComponents.ToggleLine(BorderLines.All, true);
  104. }
  105. private void btnNone_Click(object sender, EventArgs e)
  106. {
  107. Designer.SelectedReportComponents.ToggleLine(BorderLines.All, false);
  108. }
  109. private void btnLineColor_Click(object sender, EventArgs e)
  110. {
  111. Designer.SelectedReportComponents.SetLineColor(btnLineColor.DefaultColor);
  112. }
  113. private void btnFillColor_Click(object sender, EventArgs e)
  114. {
  115. Designer.SelectedReportComponents.SetColor(btnFillColor.DefaultColor);
  116. }
  117. private void btnFillProps_Click(object sender, EventArgs e)
  118. {
  119. Designer.SelectedReportComponents.InvokeFillEditor();
  120. }
  121. private void cbxWidth_WidthSelected(object sender, EventArgs e)
  122. {
  123. Designer.SelectedReportComponents.SetWidth(btnWidth.LineWidth);
  124. }
  125. private void cbxStyle_StyleSelected(object sender, EventArgs e)
  126. {
  127. Designer.SelectedReportComponents.SetLineStyle(btnStyle.LineStyle);
  128. }
  129. private void btnBorderProps_Click(object sender, EventArgs e)
  130. {
  131. Designer.SelectedReportComponents.InvokeBorderEditor();
  132. }
  133. #endregion
  134. #region Public Methods
  135. public override void SelectionChanged()
  136. {
  137. base.SelectionChanged();
  138. UpdateControls();
  139. }
  140. public override void UpdateContent()
  141. {
  142. base.UpdateContent();
  143. UpdateControls();
  144. }
  145. public override void Localize()
  146. {
  147. base.Localize();
  148. MyRes res = new MyRes("Designer,Toolbar,Border");
  149. Text = res.Get("");
  150. SetItemText(btnTop, res.Get("Top"));
  151. SetItemText(btnBottom, res.Get("Bottom"));
  152. SetItemText(btnLeft, res.Get("Left"));
  153. SetItemText(btnRight, res.Get("Right"));
  154. SetItemText(btnAll, res.Get("All"));
  155. SetItemText(btnNone, res.Get("None"));
  156. SetItemText(btnFillColor, res.Get("FillColor"));
  157. SetItemText(btnFillStyle, res.Get("FillStyle"));
  158. SetItemText(btnLineColor, res.Get("LineColor"));
  159. SetItemText(btnWidth, res.Get("Width"));
  160. SetItemText(btnStyle, res.Get("Style"));
  161. SetItemText(btnBorderProps, res.Get("Props"));
  162. }
  163. public override void UpdateUIStyle()
  164. {
  165. base.UpdateUIStyle();
  166. btnFillColor.SetStyle(Designer.UIStyle);
  167. btnLineColor.SetStyle(Designer.UIStyle);
  168. }
  169. public override void UpdateDpiDependencies()
  170. {
  171. base.UpdateDpiDependencies();
  172. }
  173. #endregion
  174. public BorderToolbar(Designer designer)
  175. : base(designer)
  176. {
  177. Name = "BorderToolbar";
  178. #if !MONO
  179. btnTop = CreateButton("btnBorderTop", 32, btnTop_Click);
  180. btnBottom = CreateButton("btnBorderBottom", 33, btnBottom_Click);
  181. btnLeft = CreateButton("btnBorderLeft", 34, btnLeft_Click);
  182. btnRight = CreateButton("btnBorderRight", 35, btnRight_Click);
  183. btnAll = CreateButton("btnBorderAll", 36, btnAll_Click);
  184. btnAll.BeginGroup = true;
  185. btnNone = CreateButton("btnBorderNone", 37, btnNone_Click);
  186. btnFillColor = new ColorButtonItem(38, Color.Transparent);
  187. btnFillColor.Name = "btnBorderFillColor";
  188. btnFillColor.Click += btnFillColor_Click;
  189. btnFillColor.BeginGroup = true;
  190. btnFillStyle = CreateButton("btnBorderFillStyle", 141, btnFillProps_Click);
  191. btnLineColor = new ColorButtonItem(39, Color.Black);
  192. btnLineColor.Name = "btnBorderLineColor";
  193. btnLineColor.Click += btnLineColor_Click;
  194. btnWidth = new LineWidthButtonItem();
  195. btnWidth.Name = "btnBorderWidth";
  196. btnWidth.ImageIndex = 71;
  197. btnWidth.WidthSelected += cbxWidth_WidthSelected;
  198. btnStyle = new LineStyleButtonItem();
  199. btnStyle.Name = "btnBorderStyle";
  200. btnStyle.ImageIndex = 85;
  201. btnStyle.StyleSelected += cbxStyle_StyleSelected;
  202. btnBorderProps = CreateButton("btnBorderBorderProps", 40, btnBorderProps_Click);
  203. Items.AddRange(new BaseItem[] {
  204. btnTop, btnBottom, btnLeft, btnRight,
  205. btnAll, btnNone, btnBorderProps,
  206. btnFillColor, btnFillStyle, btnLineColor, btnWidth, btnStyle, CustomizeItem });
  207. #else
  208. btnTop = CreateButton("btnBorderTop", 32, btnTop_Click);
  209. btnBottom = CreateButton("btnBorderBottom", 33, btnBottom_Click);
  210. btnLeft = CreateButton("btnBorderLeft", 34, btnLeft_Click);
  211. btnRight = CreateButton("btnBorderRight", 35, btnRight_Click);
  212. btnAll = CreateButton("btnBorderAll", 36, btnAll_Click);
  213. btnNone = CreateButton("btnBorderNone", 37, btnNone_Click);
  214. btnFillColor = new ToolStripColorButton(38, Color.Transparent);
  215. btnFillColor.Name = "btnBorderFillColor";
  216. btnFillColor.ButtonClick += btnFillColor_Click;
  217. btnFillStyle = CreateButton("btnBorderFillStyle", 141, btnFillProps_Click);
  218. btnLineColor = new ToolStripColorButton(39, Color.Black);
  219. btnLineColor.Name = "btnBorderLineColor";
  220. btnLineColor.ButtonClick += btnLineColor_Click;
  221. btnWidth = new ToolStripLineWidthButton();
  222. btnWidth.Name = "btnBorderWidth";
  223. btnWidth.Image = this.GetImage(71);
  224. btnWidth.WidthSelected += cbxWidth_WidthSelected;
  225. btnStyle = new ToolStripLineStyleButton();
  226. btnStyle.Name = "btnBorderStyle";
  227. btnStyle.Image = this.GetImage(85);
  228. btnStyle.StyleSelected += cbxStyle_StyleSelected;
  229. btnBorderProps = CreateButton("btnBorderBorderProps", 40, btnBorderProps_Click);
  230. Items.AddRange(new ToolStripItem[] {
  231. btnTop, btnBottom, btnLeft, btnRight, new ToolStripSeparator(),
  232. btnAll, btnNone, btnBorderProps, new ToolStripSeparator(),
  233. btnFillColor, btnFillStyle, btnLineColor, btnWidth, btnStyle });
  234. #endif
  235. Localize();
  236. UpdateDpiDependencies();
  237. }
  238. }
  239. }