MessagesWindow.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. using System;
  2. using System.Windows.Forms;
  3. using FastReport.Utils;
  4. #if !MONO
  5. using FastReport.DevComponents.DotNetBar.Controls;
  6. #endif
  7. namespace FastReport.Design.ToolWindows
  8. {
  9. /// <summary>
  10. /// Represents the "Messages" window.
  11. /// </summary>
  12. /// <remarks>
  13. /// To get this window, use the following code:
  14. /// <code>
  15. /// Designer designer;
  16. /// MessagesWindow window = designer.Plugins.FindType("MessagesWindow") as MessagesWindow;
  17. /// </code>
  18. /// </remarks>
  19. public class MessagesWindow : ToolWindowBase
  20. {
  21. #if !MONO
  22. private ListViewEx list;
  23. #else
  24. private ListView list;
  25. #endif
  26. private void FList_DoubleClick(object sender, EventArgs e)
  27. {
  28. ListViewItem item = list.SelectedItems[0];
  29. if (item.SubItems.Count > 1)
  30. {
  31. Designer.ActiveReportTab.SwitchToCode();
  32. Designer.ActiveReport.CodeHelper.Locate((int)item.SubItems[1].Tag, (int)item.SubItems[2].Tag);
  33. }
  34. else
  35. {
  36. Base obj = Designer.ActiveReport.FindObject((string)item.Tag);
  37. if (obj != null)
  38. {
  39. Designer.SelectedObjects.Clear();
  40. Designer.SelectedObjects.Add(obj);
  41. Designer.SelectionChanged(null);
  42. }
  43. }
  44. }
  45. /// <inheritdoc/>
  46. public override void Localize()
  47. {
  48. MyRes res = new MyRes("Designer,ToolWindow,Messages");
  49. Text = res.Get("");
  50. list.Columns.Clear();
  51. list.Columns.Add(res.Get("Description"));
  52. list.Columns.Add(res.Get("Line"));
  53. list.Columns.Add(res.Get("Column"));
  54. list.Columns[0].Width = (600);
  55. }
  56. /// <summary>
  57. /// Clears the message list.
  58. /// </summary>
  59. public void ClearMessages()
  60. {
  61. list.Items.Clear();
  62. }
  63. /// <summary>
  64. /// Adds a new message.
  65. /// </summary>
  66. /// <param name="description">The message text.</param>
  67. /// <param name="objName">The name of object related to a message.</param>
  68. public void AddMessage(string description, string objName)
  69. {
  70. ListViewItem item = new ListViewItem();
  71. item.Text = description;
  72. item.Tag = objName;
  73. list.Items.Add(item);
  74. }
  75. /// <summary>
  76. /// Adds a new script-related message.
  77. /// </summary>
  78. /// <param name="description">The message text.</param>
  79. /// <param name="line">The line of the script.</param>
  80. /// <param name="column">The column of the script.</param>
  81. public void AddMessage(string description, int line, int column)
  82. {
  83. ListViewItem item = new ListViewItem();
  84. item.Text = description;
  85. ListViewItem.ListViewSubItem subItem = new ListViewItem.ListViewSubItem();
  86. if (line != -1)
  87. subItem.Text = line.ToString();
  88. subItem.Tag = line;
  89. item.SubItems.Add(subItem);
  90. subItem = new ListViewItem.ListViewSubItem();
  91. if (column != -1)
  92. subItem.Text = column.ToString();
  93. subItem.Tag = column;
  94. item.SubItems.Add(subItem);
  95. list.Items.Add(item);
  96. }
  97. /// <inheritdoc/>
  98. public override void UpdateDpiDependencies()
  99. {
  100. base.UpdateDpiDependencies();
  101. Image = Designer.GetImage(70);
  102. #if !MONO
  103. ImageIndex = 70;
  104. #endif
  105. }
  106. /// <summary>
  107. /// Initializes a new instance of the <see cref="MessagesWindow"/> class with default settings.
  108. /// </summary>
  109. /// <param name="designer">The report designer.</param>
  110. public MessagesWindow(Designer designer) : base(designer)
  111. {
  112. Name = "MessagesWindow";
  113. #if !MONO
  114. list = new ListViewEx();
  115. #else
  116. list = new ListView();
  117. #endif
  118. list.Dock = DockStyle.Fill;
  119. list.BorderStyle = BorderStyle.None;
  120. list.FullRowSelect = true;
  121. list.View = View.Details;
  122. list.HideSelection = false;
  123. list.DoubleClick += new EventHandler(FList_DoubleClick);
  124. #if !MONO
  125. ParentControl.Controls.Add(list);
  126. #else
  127. Controls.Add(list);
  128. #endif
  129. Localize();
  130. UpdateDpiDependencies();
  131. }
  132. }
  133. }