RibbonStandardGroup.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. using FastReport.Controls;
  2. using FastReport.Utils;
  3. using FastReport.Wizards;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Windows.Forms;
  7. namespace FastReport.Design.RibbonDesigner
  8. {
  9. internal class RibbonStandardGroup : RibbonGroup
  10. {
  11. #region Fields
  12. public ToolbarNewButton btnNew;
  13. public ToolbarOpenButton btnOpen;
  14. public ToolbarButton btnPreview;
  15. private Timer previewTimer;
  16. #endregion
  17. #region Private Methods
  18. private void UpdateControls()
  19. {
  20. btnNew.Enabled = Designer.cmdNew.Enabled;
  21. btnOpen.Enabled = Designer.cmdOpen.Enabled;
  22. btnPreview.Enabled = Designer.cmdPreview.Enabled;
  23. }
  24. private void btnPreview_Click(object sender, EventArgs e)
  25. {
  26. previewTimer.Start();
  27. }
  28. #endregion
  29. #region Protected Methods
  30. protected override void Dispose(bool disposing)
  31. {
  32. if (disposing)
  33. {
  34. previewTimer.Dispose();
  35. }
  36. base.Dispose(disposing);
  37. }
  38. #endregion
  39. #region Public Methods
  40. public override void SelectionChanged()
  41. {
  42. base.SelectionChanged();
  43. Throttle.Execute(UpdateControls);
  44. }
  45. public override void UpdateContent()
  46. {
  47. base.UpdateContent();
  48. Throttle.Execute(UpdateControls);
  49. }
  50. public override void Localize()
  51. {
  52. base.Localize();
  53. MyRes res = new MyRes("Designer,Menu,File");
  54. Text = Res.Get("Designer,Ribbon,Report");
  55. SetItemText(btnNew, res.Get("New"));
  56. SetItemText(btnOpen, res.Get("Open"));
  57. SetItemText(btnPreview, res.Get("Preview1"));
  58. }
  59. public override void UpdateDpiDependencies()
  60. {
  61. if (State == GroupState.Collapsed)
  62. return;
  63. base.UpdateDpiDependencies();
  64. btnNew.Image = Designer.GetImage("Ribbon.New.png");
  65. btnOpen.Image = Designer.GetImage("Ribbon.Open.png");
  66. btnPreview.Image = Designer.GetImage("Ribbon.Report.png");
  67. }
  68. #endregion
  69. public RibbonStandardGroup(Designer designer) : base(designer)
  70. {
  71. Name = "StandardGroup";
  72. CollapsedImageName = "Ribbon.New.png";
  73. Priority = GroupPriority.Medium;
  74. btnNew = new ToolbarNewButton(designer);
  75. btnNew.MakeBig();
  76. btnOpen = new ToolbarOpenButton(designer, "btnStdOpen", 1);
  77. btnOpen.MakeBig();
  78. btnPreview = new ToolbarButton("btnStdPreview", 3, btnPreview_Click);
  79. btnPreview.MakeBig(120);
  80. Panel.AddItems(
  81. btnNew, btnOpen, btnPreview);
  82. Localize();
  83. UpdateDpiDependencies();
  84. previewTimer = new Timer();
  85. previewTimer.Interval = 20;
  86. previewTimer.Tick += (s, e) =>
  87. {
  88. previewTimer.Stop();
  89. Designer.cmdPreview.Invoke(s, e);
  90. };
  91. }
  92. }
  93. internal class ToolbarNewButton : ToolStripSplitButton, IToolbarItem
  94. {
  95. public Designer Designer { get; }
  96. public bool BeginGroup { get; set; }
  97. private void btnNew_DropDownOpening(object sender, EventArgs e)
  98. {
  99. DropDown.Items.Clear();
  100. List<ObjectInfo> objects = new List<ObjectInfo>();
  101. RegisteredObjects.Objects.EnumItems(objects);
  102. foreach (ObjectInfo info in objects)
  103. {
  104. if (info.Object != null)
  105. {
  106. if (info.Object.IsSubclassOf(typeof(EasterEggWizard)))
  107. continue;
  108. if (info.Object.IsSubclassOf(typeof(WizardBase)) && info.Flags != 1)
  109. {
  110. var item = new ToolStripMenuItem(Res.TryGet(info.Text)) { Font = DrawUtils.DefaultFont, Tag = info };
  111. item.Image = Designer.GetImage(info.ImageIndex);
  112. DropDown.Items.Add(item);
  113. }
  114. }
  115. }
  116. }
  117. private void btnNew_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
  118. {
  119. DropDown.Close();
  120. var wizard = Activator.CreateInstance((e.ClickedItem.Tag as ObjectInfo).Object) as WizardBase;
  121. wizard.Run(Designer);
  122. }
  123. private void btnNew_ButtonClick(object sender, EventArgs e)
  124. {
  125. new BlankReportWizard().Run(Designer);
  126. }
  127. public ToolbarNewButton(Designer designer)
  128. {
  129. Designer = designer;
  130. DropDownOpening += btnNew_DropDownOpening;
  131. ButtonClick += btnNew_ButtonClick;
  132. DropDownItemClicked += btnNew_DropDownItemClicked;
  133. }
  134. }
  135. internal class ToolbarPreviewButton : ToolStripSplitButton, IToolbarItem
  136. {
  137. public Designer Designer { get; }
  138. public bool BeginGroup { get; set; }
  139. public ToolbarPreviewButton(Designer designer)
  140. {
  141. Designer = designer;
  142. }
  143. }
  144. }