using FastReport.Controls; using FastReport.Utils; using System.Windows.Forms; namespace FastReport.Design.RibbonDesigner { internal class RibbonClipboardGroup : RibbonGroup { #region Fields private StackedPanel Panel1 { get; } public ToolbarButton btnCut; public ToolbarButton btnCopy; public ToolbarButton btnPaste; public ToolbarButton btnFormatPainter; private Timer clipboardTimer; #endregion #region Private Methods private void UpdateControls() { btnCut.Enabled = Designer.cmdCut.Enabled; btnCopy.Enabled = Designer.cmdCopy.Enabled; btnFormatPainter.Enabled = Designer.cmdFormatPainter.Enabled; btnFormatPainter.Checked = Designer.FormatPainter; } #endregion #region Protected Methods protected override void Dispose(bool disposing) { if (disposing) { clipboardTimer.Dispose(); } base.Dispose(disposing); } #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,Menu,Edit"); Text = Res.Get("Designer,Ribbon,Clipboard"); SetItemText(btnCut, res.Get("Cut")); SetItemText(btnCopy, res.Get("Copy")); SetItemText(btnPaste, res.Get("Paste")); SetItemText(btnFormatPainter, Res.Get("Designer,Toolbar,Standard,FormatPainter")); } public override void UpdateDpiDependencies() { if (State == GroupState.Collapsed) return; base.UpdateDpiDependencies(); Panel1.UpdateDpiDependencies(); btnPaste.Image = Designer.GetImage("Ribbon.Paste.png"); } public override void UpdateState() { base.UpdateState(); btnCut.DisplayStyle = btnCopy.DisplayStyle = btnFormatPainter.DisplayStyle = State == GroupState.Reduced ? ToolStripItemDisplayStyle.Image : ToolStripItemDisplayStyle.ImageAndText; } #endregion public RibbonClipboardGroup(Designer designer) : base(designer) { Name = "EditGroup"; CollapsedImageName = "Ribbon.Paste.png"; btnCut = new ToolbarButton("btnStdCut", 5, Designer.cmdCut.Invoke); btnCut.BeginGroup = true; btnCopy = new ToolbarButton("btnStdCopy", 6, Designer.cmdCopy.Invoke); btnPaste = new ToolbarButton("btnStdPaste", 7, Designer.cmdPaste.Invoke); btnPaste.MakeBig(); btnFormatPainter = new ToolbarButton("btnStdFormatPainter", 18, Designer.cmdFormatPainter.Invoke); btnFormatPainter.CheckOnClick = true; Panel1 = new StackedPanel() { Margin = new Padding(0, 0, 0, 2) }; Panel1.AddItems( btnCut, btnCopy, btnFormatPainter); Panel.AddItems(btnPaste); Panel.AddPanels(Panel1); clipboardTimer = new Timer(); clipboardTimer.Interval = 500; clipboardTimer.Tick += (s, e) => btnPaste.Enabled = Designer.cmdPaste.Enabled; clipboardTimer.Start(); Localize(); UpdateState(); UpdateDpiDependencies(); } } }