using FastReport.Controls; using FastReport.Utils; using System; using System.ComponentModel; using System.Windows.Forms; namespace FastReport.Design.RibbonDesigner { internal class RibbonStyleGroup : RibbonGroup { #region Fields public ToolbarButton btnHighlight; public ToolbarStyleButton btnStyles; #endregion #region Private Methods private void UpdateControls() { btnHighlight.Enabled = Designer.SelectedTextObjects.Enabled; } private void btnHighlight_Click(object sender, EventArgs e) { Designer.SelectedTextObjects.InvokeHighlightEditor(); } #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(); Text = Res.Get("Designer,Toolbar,Style"); SetItemText(btnHighlight, Res.Get("Designer,Toolbar,Text,Highlight")); SetItemText(btnStyles, Res.Get("Designer,Menu,Report,Styles")); } public override void UpdateDpiDependencies() { if (State == GroupState.Collapsed) return; base.UpdateDpiDependencies(); btnHighlight.Image = Designer.GetImage("Ribbon.Highlight.png"); btnStyles.Image = Designer.GetImage("Ribbon.Styles.png"); } #endregion public RibbonStyleGroup(Designer designer) : base(designer) { Name = "EditGroup"; CollapsedImageName = "Ribbon.Styles.png"; btnHighlight = new ToolbarButton("btnStyleHighlight", 5, btnHighlight_Click); btnHighlight.MakeBig(); btnStyles = new ToolbarStyleButton(designer); btnStyles.MakeBig(); Panel.AddItems(btnHighlight, btnStyles); Localize(); UpdateDpiDependencies(); } } internal class ToolbarStyleButton : ToolStripSplitButton, IToolbarItem { public Designer Designer { get; } public bool BeginGroup { get; set; } private void btnStyles_DropDownOpening(object sender, CancelEventArgs e) { if (!Designer.SelectedReportComponents.Enabled) { e.Cancel = true; return; } var lb = new StyleListBox() { BorderStyle = BorderStyle.None }; lb.Styles = Designer.ActiveReport.Styles; lb.Style = Designer.SelectedReportComponents.First.Style; lb.StyleSelected += (s, e) => { DropDown.Close(); Designer.SelectedReportComponents.SetStyle(lb.Style); }; DropDown.Items.Clear(); DropDown.Items.Add(new ToolStripControlHost(lb)); lb.ItemHeight = Designer.LogicalToDevice(30); lb.Size = Designer.LogicalToDevice(new System.Drawing.Size(150, 300)); } public ToolbarStyleButton(Designer designer) { Designer = designer; DropDown = new ToolStripDropDown(); DropDown.Opening += btnStyles_DropDownOpening; DropDown.Opened += (s, e) => { OnDropDownOpened(e); IsDropDownOpen = true; }; DropDown.Closed += (s, e) => { OnDropDownClosed(e); IsDropDownOpen = false; }; ButtonClick += (s, e) => Designer.cmdReportStyles.Invoke(this, e); } } }