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