/trunk/src/lextm/nfamily/feature/NDocFeature.cs

http://lextudio.googlecode.com/ · C# · 215 lines · 141 code · 44 blank · 30 comment · 16 complexity · 08453ae50d1901810c1809385b08cdcd MD5 · raw file

  1. using System;
  2. using System.IO;
  3. using System.Threading;
  4. using System.Windows.Forms;
  5. using BeWise.Common.Utils;
  6. using BeWise.SharpBuilderTools.Gui;
  7. using BeWise.SharpBuilderTools.Helpers;
  8. using Lextm.LeXDK;
  9. namespace Lextm.NFamily.Feature {
  10. public class NDocFeature : CustomFeatureTool {
  11. private const string TabNDoc = "NDoc";
  12. ///<summary>
  13. ///Registers tabs.
  14. ///</summary>
  15. ///<remarks>
  16. /// Used to configure tabs on FormPreferences.
  17. ///</remarks>
  18. protected override void IDERegisterTabs() {
  19. base.IDERegisterTabs();
  20. RegisterTab(CreateTabNode(TabNDoc, typeof(Gui.NDocPage)));
  21. }
  22. private BeWise.SharpBuilderTools.Tools.NDoc.NDoc fCurrentNDoc = null;
  23. private string fDocumenter = BeWise.SharpBuilderTools.Tools.NDoc.NDoc.DefaultDocumentor;
  24. // private void AddCompilerMessages(string[] aMessages) {
  25. // IOTAMessageService _MessageService = OTAUtils.GetMessageService();
  26. // _MessageService.ShowMessageView(null);
  27. // IntPtr _Unknown;
  28. //
  29. // foreach(string _Msg in aMessages) {
  30. // _MessageService.AddCompilerMessage("", _Msg, CurrentNDoc.Name, OTAMessageKind.otamkInfo, 0, 0, new IntPtr(0), out _Unknown);
  31. // }
  32. // }
  33. private void OpenNDocGui() {
  34. if (!ValidationHelpers.ValidateToolInstalled(CurrentNDoc)) {
  35. return;
  36. }
  37. AddMessage("==============================================================");
  38. AddMessage(String.Format("[{0}] Openning " + CurrentNDoc.Name, DateTime.Now));
  39. AddMessage("Executable: " + CurrentNDoc.ToolGuiExe);
  40. AddMessage("==============================================================");
  41. CurrentNDoc.OpenGui();
  42. }
  43. private void RunNDocConsole() {
  44. string _Filename = GetToolFileInCurrentProject();
  45. if (_Filename == null || !ValidationHelpers.ValidateToolInstalled(CurrentNDoc)) {
  46. return;
  47. }
  48. AddMessage("==============================================================");
  49. AddMessage(String.Format("[{0}] Running " + CurrentNDoc.Name, DateTime.Now));
  50. AddMessage("Executable: " + CurrentNDoc.ToolConsoleExe);
  51. AddMessage("NDoc project: " + _Filename);
  52. AddMessage("==============================================================");
  53. Msg= "";
  54. string _Documenter = "";
  55. if (fDocumenter != null) {
  56. _Documenter = "-documenter=" + fDocumenter;
  57. }
  58. CurrentNDoc.RunConsole(new object[] {"-verbose " + _Documenter + " -project=" + Utils.QuoteString(_Filename)},
  59. Path.GetDirectoryName(_Filename));
  60. }
  61. private void RunNDocGui() {
  62. string _Filename = GetToolFileInCurrentProject();
  63. if (_Filename == null || !ValidationHelpers.ValidateToolInstalled(CurrentNDoc)) {
  64. return;
  65. }
  66. AddMessage("==============================================================");
  67. AddMessage(String.Format("[{0}] Running " + CurrentNDoc.Name, DateTime.Now));
  68. AddMessage("Executable: " + CurrentNDoc.ToolGuiExe);
  69. AddMessage("NDoc project: " + _Filename);
  70. AddMessage("==============================================================");
  71. CurrentNDoc.RunGui(new object[] {Utils.QuoteString(_Filename)}, Path.GetDirectoryName(_Filename));
  72. }
  73. /**************************************************************/
  74. /* Protected
  75. /**************************************************************/
  76. private void DoOpenNDoc(object aSender, EventArgs e) {
  77. Thread _T = new Thread(new ThreadStart(OpenNDocGui));
  78. _T.Start();
  79. }
  80. private void DoOpenNDocProject(object aSender, EventArgs e) {
  81. if (!ValidationHelpers.ValidateCurrentProjectNotNull()) {
  82. return;
  83. }
  84. Thread _T = new Thread(new ThreadStart(RunNDocGui));
  85. _T.Start();
  86. }
  87. private void DoGenerateDefaultDoc(object aSender, EventArgs e) {
  88. if (!ValidationHelpers.ValidateCurrentProjectNotNull()) {
  89. return;
  90. }
  91. fDocumenter = null;
  92. Thread _T = new Thread(new ThreadStart(RunNDocConsole));
  93. _T.Start();
  94. }
  95. private void DoGenerateDoc(object aSender, EventArgs e) {
  96. if (!ValidationHelpers.ValidateCurrentProjectNotNull()) {
  97. return;
  98. }
  99. FrmNDoc _FrmNDoc = new FrmNDoc();
  100. _FrmNDoc.Documenter = fDocumenter;
  101. if (_FrmNDoc.ShowDialog() == DialogResult.OK) {
  102. fDocumenter = _FrmNDoc.Documenter;
  103. Thread _T = new Thread(new ThreadStart(RunNDocConsole));
  104. _T.Start();
  105. }
  106. }
  107. protected override void DoRunCompleted(object aSender, EventArgs e) {
  108. DoRefreshConsole(String.Format("Done! ({0})\n", DateTime.Now));
  109. }
  110. protected override BeWise.SharpBuilderTools.Tools.BaseTool GetCurrentTool() {
  111. if (fCurrentNDoc == null) {
  112. fCurrentNDoc = new BeWise.SharpBuilderTools.Tools.NDoc.NDoc();
  113. fCurrentNDoc.OnConsoleOutput += new RunProcess.ConsoleOutputEvent(DoRefreshConsole);
  114. fCurrentNDoc.OnRunCompleted += new EventHandler(DoRunCompleted);
  115. }
  116. return fCurrentNDoc;
  117. }
  118. /**************************************************************/
  119. /* Public
  120. /**************************************************************/
  121. private const string MenuLeXtudio = "CBCLeXtudioMenu";
  122. protected override void IDERegisterMenus() {
  123. // NDoc
  124. RegisterAction(CreateOTACustomAction(MenuItemLocation.Child,
  125. MenuLeXtudio,
  126. "NDocMenu",
  127. 0,
  128. "NDoc",
  129. null));
  130. // Open NDoc Gui
  131. RegisterAction(CreateOTACustomAction(MenuItemLocation.Child,
  132. "NDocMenu",
  133. "OpenNDocGuiMenu",
  134. 0,
  135. "Open NDoc",
  136. new EventHandler(DoOpenNDoc)));
  137. // Open NDoc Project
  138. RegisterAction(CreateOTACustomAction(MenuItemLocation.Child,
  139. "NDocMenu",
  140. "OpenNDocProjectMenu",
  141. 0,
  142. "Open NDoc Project",
  143. new EventHandler(DoOpenNDocProject)));
  144. // Separator
  145. RegisterAction(CreateSeparatorMenu(MenuItemLocation.Child,
  146. "NDocMenu"));
  147. // Generate Default Doc
  148. RegisterAction(CreateOTACustomAction(MenuItemLocation.Child,
  149. "NDocMenu",
  150. "GenerateDefaultDocMenu",
  151. 0,
  152. "Generate Default Project Doc",
  153. new EventHandler(DoGenerateDefaultDoc)));
  154. // Generate Doc
  155. RegisterAction(CreateOTACustomAction(MenuItemLocation.Child,
  156. "NDocMenu",
  157. "GenerateDocMenu",
  158. 0,
  159. "Generate Doc ...",
  160. new EventHandler(DoGenerateDoc)));
  161. }
  162. // *************************************************************************
  163. // Properties
  164. // *************************************************************************
  165. private BeWise.SharpBuilderTools.Tools.NDoc.NDoc CurrentNDoc {
  166. get {
  167. return (BeWise.SharpBuilderTools.Tools.NDoc.NDoc) CurrentTool;
  168. }
  169. }
  170. }
  171. }