BarcodeObjectMenu.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Windows.Forms;
  5. using FastReport.Design;
  6. using FastReport.Utils;
  7. using FastReport.Forms;
  8. namespace FastReport.Barcode
  9. {
  10. internal class BarcodeObjectMenu : ReportComponentBaseMenu
  11. {
  12. private Report report;
  13. private SelectedObjectCollection selection;
  14. public ContextMenuItem miBarcodeType;
  15. public ContextMenuItem miAutoSize;
  16. public ContextMenuItem miShowText;
  17. private List<BarcodeObject> ModifyList
  18. {
  19. get
  20. {
  21. List<BarcodeObject> list = new List<BarcodeObject>();
  22. foreach (Base c in selection)
  23. {
  24. if (c is BarcodeObject && !c.HasRestriction(Restrictions.DontModify))
  25. list.Add(c as BarcodeObject);
  26. }
  27. return list;
  28. }
  29. }
  30. #region Private Methods
  31. private void CreateBarcodeTypes(BarcodeBase b)
  32. {
  33. string[] symbologyNames = Barcodes.GetSymbologyNames();
  34. for (int i = 0; i < symbologyNames.Length; i++)
  35. {
  36. ContextMenuItem mi = CreateMenuItem(symbologyNames[i], new EventHandler(miBarcodeType_Click));
  37. mi.Tag = symbologyNames[i];
  38. mi.Checked = symbologyNames[i] == b.Name;
  39. miBarcodeType.DropDownItems.Add(mi);
  40. }
  41. }
  42. private void miBarcodeType_Click(object sender, EventArgs e)
  43. {
  44. foreach (BarcodeObject c in ModifyList)
  45. {
  46. c.SymbologyName = (string)((sender as ContextMenuItem).Tag);
  47. }
  48. Change();
  49. }
  50. private void miAutoSize_Click(object sender, EventArgs e)
  51. {
  52. foreach (BarcodeObject c in ModifyList)
  53. {
  54. c.AutoSize = miAutoSize.Checked;
  55. }
  56. Change();
  57. }
  58. private void miShowText_Click(object sender, EventArgs e)
  59. {
  60. foreach (BarcodeObject c in ModifyList)
  61. {
  62. c.ShowText = miShowText.Checked;
  63. }
  64. Change();
  65. }
  66. #endregion
  67. public BarcodeObjectMenu(Designer designer) : base(designer)
  68. {
  69. report = designer.Report;
  70. selection = Designer.SelectedObjects;
  71. MyRes res = new MyRes("ComponentMenu,Barcode");
  72. miBarcodeType = CreateMenuItem(res.Get("BarcodeType"));
  73. miBarcodeType.BeginGroup = true;
  74. miAutoSize = CreateMenuItem(res.Get("AutoSize"), new EventHandler(miAutoSize_Click));
  75. miAutoSize.BeginGroup = true;
  76. miAutoSize.CheckOnClick = true;
  77. miShowText = CreateMenuItem(res.Get("ShowText"), new EventHandler(miShowText_Click));
  78. miShowText.CheckOnClick = true;
  79. int insertPos = Items.IndexOf(miCut);
  80. Items.Insert(insertPos, miBarcodeType);
  81. Items.Insert(insertPos + 1, miAutoSize);
  82. Items.Insert(insertPos + 2, miShowText);
  83. BarcodeObject barcode = selection[0] as BarcodeObject;
  84. CreateBarcodeTypes(barcode.Barcode);
  85. bool enabled = !barcode.HasRestriction(Restrictions.DontModify);
  86. miBarcodeType.Enabled = enabled;
  87. miAutoSize.Enabled = enabled;
  88. miShowText.Enabled = enabled;
  89. if (enabled)
  90. {
  91. miAutoSize.Checked = barcode.AutoSize;
  92. miShowText.Checked = barcode.ShowText;
  93. }
  94. }
  95. }
  96. }