PageRenderTime 45ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/CurrentDev/OutlookDataExport/OutlookDataExport/ThisAddIn.cs

#
C# | 251 lines | 188 code | 52 blank | 11 comment | 4 complexity | ad1b89f5b0cbd0f7278acc19ad1ba155 MD5 | raw file
  1. using System;
  2. using System.ComponentModel;
  3. using System.Diagnostics;
  4. using OutlookDataExport.BusinessLayer;
  5. using OutlookDataExport.PresentationLayer;
  6. using OutlookDataExport.PresentationLayer.Images;
  7. using OutlookDataExport.PresentationLayer.Menu;
  8. using Office = Microsoft.Office.Core;
  9. using Outlook = Microsoft.Office.Interop.Outlook;
  10. namespace OutlookDataExport
  11. {
  12. public partial class ThisAddIn
  13. {
  14. /************************************************************************************************************************/
  15. #region Fields
  16. private static Outlook.Application s_OlApplication = null;
  17. private static ExceptionHandler exceptionHandler = ExceptionHandler.GetInstance();
  18. #if !Outlook2010
  19. private Office.CommandBar m_CommandBar = null;
  20. private Office.CommandBarPopup m_CommandBarPopup = null;
  21. private Office.CommandBarButton m_BtnExportSelection = null;
  22. private Office.CommandBarButton m_BtnExportAll = null;
  23. private Office.CommandBarButton m_BtnInfo = null;
  24. private Office.CommandBarButton m_BtnUserGuide = null;
  25. private Office.CommandBarButton m_BtnAskForHelp = null;
  26. private Office.CommandBarButton m_BtnWebsite = null;
  27. private Office.CommandBarButton m_BtnDonate = null;
  28. #endif
  29. #endregion
  30. /************************************************************************************************************************/
  31. /************************************************************************************************************************/
  32. #region Event Handler
  33. private void ThisAddIn_Startup(object sender, System.EventArgs e)
  34. {
  35. Init();
  36. }
  37. /// <summary>
  38. /// Shutdown code for this add-in.
  39. /// </summary>
  40. /// <param name="sender">Event sender.</param>
  41. /// <param name="e">Event arguments.</param>
  42. private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
  43. {
  44. }
  45. #if !Outlook2010
  46. private void btnExportSelection_Click(Office.CommandBarButton Ctrl, ref bool CancelDefault)
  47. {
  48. Menu.ExportSelection();
  49. }
  50. private void btnExportAll_Click(Office.CommandBarButton Ctrl, ref bool CancelDefault)
  51. {
  52. Menu.ExportAll();
  53. }
  54. private void btnInfo_Click(Office.CommandBarButton Ctrl, ref bool CancelDefault)
  55. {
  56. Menu.ShowInfo();
  57. }
  58. private void btnUserGuide_Click(Office.CommandBarButton Ctrl, ref bool CancelDefault)
  59. {
  60. Menu.ShowUserGuide();
  61. }
  62. private void btnAskForHelp_Click(Office.CommandBarButton Ctrl, ref bool CancelDefault)
  63. {
  64. Menu.ShowAskForHelp();
  65. }
  66. private void btnWebsite_Click(Office.CommandBarButton Ctrl, ref bool CancelDefault)
  67. {
  68. Menu.ShowWebsite();
  69. }
  70. private void btnDonate_Click(Office.CommandBarButton Ctrl, ref bool CancelDefault)
  71. {
  72. Menu.ShowDonate();
  73. }
  74. #endif
  75. #endregion
  76. /************************************************************************************************************************/
  77. /************************************************************************************************************************/
  78. #region Methods
  79. private void InternalStartup()
  80. {
  81. exceptionHandler.Init();
  82. this.Startup += new System.EventHandler(ThisAddIn_Startup);
  83. this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
  84. }
  85. private void Init()
  86. {
  87. try
  88. {
  89. s_OlApplication = this.Application;
  90. #if Outlook2010
  91. string version = "14";
  92. #else
  93. string version = "14";
  94. #endif
  95. if (!this.Application.Version.StartsWith(version))
  96. {
  97. Dialog.ShowError("This version of Outlook Data Export doesn't support the installed Microsoft Outlook " +
  98. "version. Please uninstall this add-in.\n\nThe add-in will be deactivated.");
  99. foreach (Office.COMAddIn addIn in this.Application.COMAddIns)
  100. {
  101. if ("OutlookDataExport".Equals(addIn.ProgId))
  102. {
  103. addIn.Connect = false;
  104. }
  105. }
  106. }
  107. else
  108. {
  109. Menu.SetOlApplication(this.Application);
  110. #if !Outlook2010
  111. CreateMenu();
  112. #endif
  113. }
  114. }
  115. catch (Exception ex)
  116. {
  117. Dialog.ShowError(ex.Message);
  118. }
  119. }
  120. public static Outlook.Application GetOlApplication()
  121. {
  122. return s_OlApplication;
  123. }
  124. #if Outlook2010
  125. protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
  126. {
  127. return new Ribbon();
  128. }
  129. #else
  130. public void CreateMenu()
  131. {
  132. if (s_OlApplication.ActiveExplorer() != null)
  133. {
  134. object missing = Type.Missing;
  135. ComponentResourceManager resManager = new ComponentResourceManager(typeof(ImageResources));
  136. m_CommandBar = s_OlApplication.ActiveExplorer().CommandBars.ActiveMenuBar;
  137. m_CommandBarPopup = (Office.CommandBarPopup)m_CommandBar.Controls
  138. .Add(Office.MsoControlType.msoControlPopup, missing, missing, missing, true);
  139. m_CommandBarPopup.Caption = "Outlook data ex&port";
  140. m_BtnExportSelection = (Office.CommandBarButton)m_CommandBarPopup.Controls
  141. .Add(Office.MsoControlType.msoControlButton, missing, missing, missing, true);
  142. m_BtnExportSelection.Caption = "Export &selection";
  143. m_BtnExportSelection.Click += new Office._CommandBarButtonEvents_ClickEventHandler(btnExportSelection_Click);
  144. m_BtnExportSelection.Style = Office.MsoButtonStyle.msoButtonIconAndCaption;
  145. m_BtnExportSelection.Picture = IconConverter.Convert(resManager.GetObject("Export_16x16"));
  146. m_BtnExportAll = (Office.CommandBarButton)m_CommandBarPopup.Controls
  147. .Add(Office.MsoControlType.msoControlButton, missing, missing, missing, true);
  148. m_BtnExportAll.Caption = "Export &all";
  149. m_BtnExportAll.Click += new Office._CommandBarButtonEvents_ClickEventHandler(btnExportAll_Click);
  150. m_BtnExportAll.Style = Office.MsoButtonStyle.msoButtonIconAndCaption;
  151. m_BtnExportAll.Picture = IconConverter.Convert(resManager.GetObject("Export_16x16"));
  152. m_BtnInfo = (Office.CommandBarButton)m_CommandBarPopup.Controls
  153. .Add(Office.MsoControlType.msoControlButton, missing, missing, missing, true);
  154. m_BtnInfo.Caption = "&Info";
  155. m_BtnInfo.Click += new Office._CommandBarButtonEvents_ClickEventHandler(btnInfo_Click);
  156. m_BtnInfo.Style = Office.MsoButtonStyle.msoButtonIconAndCaption;
  157. m_BtnInfo.Picture = IconConverter.Convert(resManager.GetObject("Info_16x16"));
  158. m_BtnUserGuide = (Office.CommandBarButton)m_CommandBarPopup.Controls
  159. .Add(Office.MsoControlType.msoControlButton, missing, missing, missing, true);
  160. m_BtnUserGuide.Caption = "User &guide";
  161. m_BtnUserGuide.Click += new Office._CommandBarButtonEvents_ClickEventHandler(btnUserGuide_Click);
  162. m_BtnUserGuide.Style = Office.MsoButtonStyle.msoButtonIconAndCaption;
  163. m_BtnUserGuide.Picture = IconConverter.Convert(resManager.GetObject("Help_16x16"));
  164. m_BtnAskForHelp = (Office.CommandBarButton)m_CommandBarPopup.Controls
  165. .Add(Office.MsoControlType.msoControlButton, missing, missing, missing, true);
  166. m_BtnAskForHelp.Caption = "Ask for &help";
  167. m_BtnAskForHelp.Click += new Office._CommandBarButtonEvents_ClickEventHandler(btnAskForHelp_Click);
  168. m_BtnAskForHelp.Style = Office.MsoButtonStyle.msoButtonIconAndCaption;
  169. m_BtnAskForHelp.Picture = IconConverter.Convert(resManager.GetObject("AskForHelp_16x16"));
  170. m_BtnWebsite = (Office.CommandBarButton)m_CommandBarPopup.Controls
  171. .Add(Office.MsoControlType.msoControlButton, missing, missing, missing, true);
  172. m_BtnWebsite.Caption = "&Website";
  173. m_BtnWebsite.Click += new Office._CommandBarButtonEvents_ClickEventHandler(btnWebsite_Click);
  174. m_BtnWebsite.Style = Office.MsoButtonStyle.msoButtonIconAndCaption;
  175. m_BtnWebsite.Picture = IconConverter.Convert(resManager.GetObject("Website_16x16"));
  176. m_BtnDonate = (Office.CommandBarButton)m_CommandBarPopup.Controls
  177. .Add(Office.MsoControlType.msoControlButton, missing, missing, missing, true);
  178. m_BtnDonate.Caption = "&Donate";
  179. m_BtnDonate.Click += new Office._CommandBarButtonEvents_ClickEventHandler(btnDonate_Click);
  180. m_BtnDonate.Style = Office.MsoButtonStyle.msoButtonIconAndCaption;
  181. m_BtnDonate.Picture = IconConverter.Convert(resManager.GetObject("Donate_16x16"));
  182. }
  183. }
  184. private class IconConverter : System.Windows.Forms.AxHost
  185. {
  186. private IconConverter()
  187. : base(string.Empty)
  188. {
  189. }
  190. public static stdole.IPictureDisp Convert(object image)
  191. {
  192. return (stdole.IPictureDisp)GetIPictureDispFromPicture((System.Drawing.Image)image);
  193. }
  194. }
  195. #endif
  196. #endregion
  197. /************************************************************************************************************************/
  198. }
  199. }