00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 using System;
00013 using System.Windows.Forms;
00014 using Mcs.Epm.MicrosoftProject.mpFx.Client.Plugins.EventHandlersPlugin.Controls;
00015 using Mcs.Epm.MicrosoftProject.mpFx.Client.Plugins.EventHandlersPlugin.Forms;
00016 using Mcs.Epm.MicrosoftProject.mpFx.Client.Plugins.EventHandlersPlugin.Properties;
00017 using Mcs.Epm.MicrosoftProject.mpFx.Client.Shared;
00018
00019 namespace Mcs.Epm.MicrosoftProject.mpFx.Client.Plugins.EventHandlersPlugin
00020 {
00021
00022
00023
00024 public class EventHandlerPlugIn : IMpFxClientPlugin
00025 {
00026 #region Instance Data
00027
00028 private bool _Disposed;
00029 private bool _IsLoaded;
00030
00031 private ToolStrip _ToolStrip;
00032 private Form _Parent;
00033
00034 private EventHandlerManagerForm _EventHandlerManagerForm;
00035 private ToolStripDropDownButton _EventsToolStripDropDownButton;
00036 private ToolStripMenuItem _AddEventHandlerToolStripMenuItem;
00037 private ToolStripSeparator _FirstSeparator;
00038 private ToolStripMenuItem _OpenManagerToolStripMenuItem;
00039
00040 #endregion
00041
00042 #region Public Properties
00043
00044 public ProjectServer ProjectServer { get; private set; }
00045
00046 public Guid Guid
00047 {
00048 get
00049 {
00050 return new Guid("{059EF072-29CD-43ca-9A3F-E99AA88212BD}");
00051 }
00052 }
00053
00054 public Version Version
00055 {
00056 get
00057 {
00058 return new Version("1.0.0.0");
00059 }
00060 }
00061
00062 public string Implementation {get;set;}
00063
00064 public string Name
00065 {
00066 get
00067 {
00068 return Resources.PluginTitle;
00069 }
00070 }
00071
00072 public string Description
00073 {
00074 get
00075 {
00076 return Resources.PluginDescription;
00077 }
00078 }
00079
00080 public string Author
00081 {
00082 get
00083 {
00084 return Resources.PluginAuthor;
00085 }
00086 }
00087
00088 public string Tag
00089 {
00090 get
00091 {
00092 return Resources.PluginTag;
00093 }
00094 }
00095
00096 public Uri Preview
00097 {
00098 get
00099 {
00100 return new Uri(Resources.PluginPreview);
00101 }
00102 }
00103
00104 public bool IsLoaded
00105 {
00106 get
00107 {
00108 return _IsLoaded;
00109 }
00110 }
00111
00112 public bool IsMarkedForDeletion {get;set;}
00113
00114 public Form MainForm
00115 {
00116 get
00117 {
00118 return null;
00119 }
00120 }
00121
00122 public UserControl OptionsControl
00123 {
00124 get
00125 {
00126 return new OptionsControl(this);
00127 }
00128 }
00129
00130 #endregion
00131
00132 #region Public Events
00133
00134 public event OnStatusChangedEventHandler OnStatusChanged;
00135
00136 #endregion
00137
00138 #region Public Methods
00139
00140 public void OnLoad(ProjectServer projectServer, Form parent, ToolStrip toolStrip)
00141 {
00142 Tools.ValidateOnLoadParams(projectServer, parent, toolStrip);
00143
00144 ProjectServer = projectServer;
00145
00146 _Parent = parent;
00147 _ToolStrip = toolStrip;
00148
00149 LoadUserInterface();
00150
00151 _IsLoaded = true;
00152 }
00153
00154 public void OnUnload()
00155 {
00156 UnloadUserInterface();
00157
00158 _IsLoaded = false;
00159 }
00160
00161 #endregion
00162
00163 #region Private Methods
00164
00165 public void DoOnStatusChanged(OnStatusChangedArgs args)
00166 {
00167 if (OnStatusChanged != null)
00168 {
00169 OnStatusChanged(this, args);
00170 }
00171 }
00172
00173 private void LoadUserInterface()
00174 {
00175 DoOnStatusChanged(new OnStatusChangedArgs("Creating menu items... "));
00176
00177 UnloadUserInterface();
00178
00179 _EventsToolStripDropDownButton = new ToolStripDropDownButton("&Event Handlers");
00180
00181 _EventsToolStripDropDownButton.Click += _EventsToolStripDropDownButton_Click;
00182
00183 _ToolStrip.Items.Insert(2, _EventsToolStripDropDownButton);
00184
00185 _AddEventHandlerToolStripMenuItem = new ToolStripMenuItem("&Add...");
00186
00187 _AddEventHandlerToolStripMenuItem.Click += _AddEventHandlerToolStripMenuItem_Click;
00188
00189 _EventsToolStripDropDownButton.DropDownItems.Add(_AddEventHandlerToolStripMenuItem);
00190
00191 _FirstSeparator = new ToolStripSeparator();
00192
00193 _EventsToolStripDropDownButton.DropDownItems.Add(_FirstSeparator);
00194
00195 _OpenManagerToolStripMenuItem = new ToolStripMenuItem("&Open Event Handler Manager...");
00196
00197 _OpenManagerToolStripMenuItem.Click += _OpenManagerToolStripMenuItem_Click;
00198
00199 _EventsToolStripDropDownButton.DropDownItems.Add(_OpenManagerToolStripMenuItem);
00200
00201 DoOnStatusChanged(new OnStatusChangedArgs(string.Empty));
00202
00203 }
00204
00205 private void UnloadUserInterface()
00206 {
00207 if (_EventsToolStripDropDownButton == null)
00208 {
00209 return;
00210 }
00211
00212 Tools.CleanupToolStripItem(_EventsToolStripDropDownButton.DropDownItems, _AddEventHandlerToolStripMenuItem);
00213 _AddEventHandlerToolStripMenuItem = null;
00214
00215 Tools.CleanupToolStripItem(_EventsToolStripDropDownButton.DropDownItems, _FirstSeparator);
00216 _FirstSeparator = null;
00217
00218 Tools.CleanupToolStripItem(_EventsToolStripDropDownButton.DropDownItems, _OpenManagerToolStripMenuItem);
00219 _OpenManagerToolStripMenuItem = null;
00220
00221 _ToolStrip.Items.Remove(_EventsToolStripDropDownButton);
00222
00223 Tools.DisposeForm(_EventHandlerManagerForm);
00224 }
00225
00226 #endregion
00227
00228 #region Event Handlers
00229
00230 void _OpenManagerToolStripMenuItem_Click(object sender, EventArgs e)
00231 {
00232 if (_EventHandlerManagerForm == null || _EventHandlerManagerForm.IsDisposed)
00233 {
00234 _EventHandlerManagerForm = new EventHandlerManagerForm(this);
00235 _EventHandlerManagerForm.MdiParent = _Parent;
00236 }
00237
00238 _EventHandlerManagerForm.Show();
00239 _EventHandlerManagerForm.WindowState = FormWindowState.Normal;
00240 }
00241
00242 void _AddEventHandlerToolStripMenuItem_Click(object sender, EventArgs e)
00243 {
00244
00245 }
00246
00247 void _EventsToolStripDropDownButton_Click(object sender, EventArgs e)
00248 {
00249
00250 }
00251
00252 #endregion
00253
00254 #region IDisposable members
00255
00256 ~EventHandlerPlugIn()
00257 {
00258 Dispose(false);
00259 }
00260
00261 public void Dispose()
00262 {
00263 Dispose(true);
00264 GC.SuppressFinalize(this);
00265 }
00266
00267 private void Dispose(bool disposing)
00268 {
00269 if (_Disposed)
00270 {
00271 if (disposing)
00272 {
00273 try
00274 {
00275 OnUnload();
00276 }
00277 catch (Exception)
00278 {}
00279 }
00280
00281 _Disposed = true;
00282 }
00283 }
00284
00285
00286 #endregion
00287 }
00288 }