using FastReport.Controls; using FastReport.Utils; using System; using System.Drawing; using System.Windows.Forms; namespace FastReport.Design.RibbonDesigner { internal class RibbonBorderGroup : RibbonGroup { #region Fields private WrappedPanel Panel1 { get; } public ToolbarButton btnTop; public ToolbarButton btnBottom; public ToolbarButton btnLeft; public ToolbarButton btnRight; public ToolbarButton btnAll; public ToolbarButton btnNone; public ToolbarButton btnBorderProps; public ToolbarColorButton btnFillColor; public ToolbarButton btnFillStyle; public ToolbarColorButton btnLineColor; public ToolbarLineWidthButton btnWidth; public ToolbarLineStyleButton btnStyle; #endregion #region Private Methods private void UpdateControls() { bool enabled = Designer.SelectedReportComponents.Enabled; bool simple = Designer.SelectedReportComponents.SimpleBorder; bool useBorder = Designer.SelectedReportComponents.BorderEnabled; bool borderEnabled = enabled && !simple && useBorder; btnTop.Enabled = borderEnabled; btnBottom.Enabled = borderEnabled; btnLeft.Enabled = borderEnabled; btnRight.Enabled = borderEnabled; btnAll.Enabled = borderEnabled; btnNone.Enabled = borderEnabled; btnFillColor.Enabled = enabled && Designer.SelectedReportComponents.FillEnabled; btnFillStyle.Enabled = enabled && Designer.SelectedReportComponents.FillEnabled; btnLineColor.Enabled = enabled && useBorder; btnWidth.Enabled = enabled && useBorder; btnStyle.Enabled = enabled && useBorder; btnBorderProps.Enabled = borderEnabled; if (enabled) { Border border = Designer.SelectedReportComponents.First.Border; btnTop.Checked = (border.Lines & BorderLines.Top) != 0; btnBottom.Checked = (border.Lines & BorderLines.Bottom) != 0; btnLeft.Checked = (border.Lines & BorderLines.Left) != 0; btnRight.Checked = (border.Lines & BorderLines.Right) != 0; btnLineColor.Color = border.Color; if (Designer.SelectedReportComponents.First.Fill is SolidFill) btnFillColor.Color = (Designer.SelectedReportComponents.First.Fill as SolidFill).Color; btnWidth.LineWidth = border.Width; btnStyle.LineStyle = border.Style; } } private void btnTop_Click(object sender, EventArgs e) { btnTop.Checked = !btnTop.Checked; Designer.SelectedReportComponents.ToggleLine(BorderLines.Top, btnTop.Checked); } private void btnBottom_Click(object sender, EventArgs e) { btnBottom.Checked = !btnBottom.Checked; Designer.SelectedReportComponents.ToggleLine(BorderLines.Bottom, btnBottom.Checked); } private void btnLeft_Click(object sender, EventArgs e) { btnLeft.Checked = !btnLeft.Checked; Designer.SelectedReportComponents.ToggleLine(BorderLines.Left, btnLeft.Checked); } private void btnRight_Click(object sender, EventArgs e) { btnRight.Checked = !btnRight.Checked; Designer.SelectedReportComponents.ToggleLine(BorderLines.Right, btnRight.Checked); } private void btnAll_Click(object sender, EventArgs e) { Designer.SelectedReportComponents.ToggleLine(BorderLines.All, true); } private void btnNone_Click(object sender, EventArgs e) { Designer.SelectedReportComponents.ToggleLine(BorderLines.All, false); } private void btnLineColor_Click(object sender, EventArgs e) { Designer.SelectedReportComponents.SetLineColor(btnLineColor.DefaultColor); } private void btnFillColor_Click(object sender, EventArgs e) { Designer.SelectedReportComponents.SetColor(btnFillColor.DefaultColor); } private void btnFillProps_Click(object sender, EventArgs e) { Designer.SelectedReportComponents.InvokeFillEditor(); } private void cbxWidth_WidthSelected(object sender, EventArgs e) { Designer.SelectedReportComponents.SetWidth(btnWidth.LineWidth); } private void cbxStyle_StyleSelected(object sender, EventArgs e) { Designer.SelectedReportComponents.SetLineStyle(btnStyle.LineStyle); } private void btnBorderProps_Click(object sender, EventArgs e) { Designer.SelectedReportComponents.InvokeBorderEditor(); } #endregion #region Public Methods public override void SelectionChanged() { base.SelectionChanged(); Throttle.Execute(UpdateControls); } public override void UpdateContent() { base.UpdateContent(); Throttle.Execute(UpdateControls); } public override void Localize() { base.Localize(); MyRes res = new MyRes("Designer,Toolbar,Border"); Text = res.Get(""); SetItemText(btnTop, res.Get("Top")); SetItemText(btnBottom, res.Get("Bottom")); SetItemText(btnLeft, res.Get("Left")); SetItemText(btnRight, res.Get("Right")); SetItemText(btnAll, res.Get("All")); SetItemText(btnNone, res.Get("None")); SetItemText(btnFillColor, res.Get("FillColor")); SetItemText(btnFillStyle, res.Get("FillStyle")); SetItemText(btnLineColor, res.Get("LineColor")); SetItemText(btnWidth, res.Get("Width")); SetItemText(btnStyle, res.Get("Style")); SetItemText(btnBorderProps, res.Get("Props")); } public override void UpdateUIStyle() { base.UpdateUIStyle(); btnFillColor.SetStyle(Designer.UIStyle); btnLineColor.SetStyle(Designer.UIStyle); } public override void UpdateDpiDependencies() { if (State == GroupState.Collapsed) return; base.UpdateDpiDependencies(); Panel1.MaxWidth = 180; Panel1.UpdateDpiDependencies(); btnWidth.Size = btnStyle.Size = Designer.LogicalToDevice(new System.Drawing.Size(35, 22)); } #endregion public RibbonBorderGroup(Designer designer) : base(designer) { Name = "BorderGroup"; CollapsedImageName = "Ribbon.Border.png"; Priority = GroupPriority.High; btnTop = new ToolbarButton("btnBorderTop", 32, btnTop_Click); btnBottom = new ToolbarButton("btnBorderBottom", 33, btnBottom_Click); btnLeft = new ToolbarButton("btnBorderLeft", 34, btnLeft_Click); btnRight = new ToolbarButton("btnBorderRight", 35, btnRight_Click); btnAll = new ToolbarButton("btnBorderAll", 36, btnAll_Click); btnAll.BeginGroup = true; btnNone = new ToolbarButton("btnBorderNone", 37, btnNone_Click); btnFillColor = new ToolbarColorButton("btnBorderFillColor", 38, Color.Transparent, btnFillColor_Click); btnFillStyle = new ToolbarButton("btnBorderFillStyle", 141, btnFillProps_Click); btnLineColor = new ToolbarColorButton("btnBorderLineColor", 39, Color.Black, btnLineColor_Click); btnLineColor.BeginGroup = true; btnWidth = new ToolbarLineWidthButton(designer, "btnBorderWidth", 71, cbxWidth_WidthSelected); btnStyle = new ToolbarLineStyleButton(designer, "btnBorderStyle", 85, cbxStyle_StyleSelected); btnBorderProps = new ToolbarButton("btnBorderBorderProps", 40, btnBorderProps_Click); Panel1 = new WrappedPanel() { VerticalAlignment = System.Windows.VerticalAlignment.Center, Margin = new Padding(0, 3, 0, 3) }; Panel1.AddItems( btnTop, btnBottom, btnLeft, btnRight, btnAll, btnNone, btnBorderProps, btnFillColor, btnFillStyle, btnLineColor, btnWidth, btnStyle); Panel.AddPanels(Panel1); Localize(); UpdateDpiDependencies(); } } }