00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 using System;
00013 using System.Globalization;
00014 using System.IO;
00015 using System.Windows.Forms;
00016 using Mcs.Epm.MicrosoftProject.mpFx.Client.Plugins.PsiExtensionGenerator.Properties;
00017 using Mcs.Epm.MicrosoftProject.mpFx.Client.Shared;
00018
00019 namespace Mcs.Epm.MicrosoftProject.mpFx.Client.Plugins.PsiExtensionGenerator.Forms
00020 {
00021
00022
00023
00024 public partial class MainForm : Form
00025 {
00026 #region Instance Data
00027
00028 private bool _IsGenerating;
00029
00030 #endregion
00031
00032 #region Constructors
00033
00034 public MainForm()
00035 {
00036 InitializeComponent();
00037
00038 sourceAssemblyToolStripTextBox.Text = Settings.Default.LastAssemblyPath;
00039 webServiceNameToolStripTextBox.Text = Settings.Default.LastWebServiceName;
00040
00041 }
00042
00043 #endregion
00044
00045 #region Private Methods
00046
00047 private void Generate()
00048 {
00049 _IsGenerating = true;
00050
00051 SetStatusText(string.Empty);
00052 SetStatusText(string.Format(CultureInfo.CurrentCulture, "{0} {1}", Resources.AppTitle, Application.ProductVersion));
00053
00054 Cursor = Cursors.WaitCursor;
00055 generateToolStripButton.Enabled = false;
00056
00057 PsiExtensionGenerator generator = null;
00058
00059 try
00060 {
00061 generator = new PsiExtensionGenerator(Settings.Default.LastSspUrl,
00062 sourceAssemblyToolStripTextBox.Text,
00063 webServiceNameToolStripTextBox.Text,
00064 Settings.Default.RestartIIs,
00065 Settings.Default.ShowInBrowser,
00066 Settings.Default.DeployToBinDirectory);
00067
00068 generator.OnGenerationStatusChanged += generator_OnGenerateStatusChanged;
00069
00070 generator.Generate();
00071 }
00072 catch (PsiGeneratorException exception)
00073 {
00074 MessageBox.Show(this, exception.Message, Resources.AppTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
00075 }
00076 finally
00077 {
00078 if (generator != null)
00079 {
00080 generator.OnGenerationStatusChanged -= generator_OnGenerateStatusChanged;
00081 }
00082 }
00083
00084 generateToolStripButton.Enabled = true;
00085 Cursor = Cursors.Default;
00086 _IsGenerating = false;
00087 }
00088
00089 private void SetStatusText(string message)
00090 {
00091 if (string.IsNullOrEmpty(outPutTextBox.Text) || string.IsNullOrEmpty(message))
00092 {
00093 outPutTextBox.Text = message;
00094 }
00095 else
00096 {
00097 outPutTextBox.Text = outPutTextBox.Text + "\r\n" + message;
00098 }
00099
00100 if (outPutTextBox.Text != null)
00101 {
00102 outPutTextBox.SelectionStart = outPutTextBox.Text.Length;
00103
00104 }
00105 outPutTextBox.ScrollToCaret();
00106
00107 Application.DoEvents();
00108 }
00109
00110 private void SetGenerationButtonEnabled()
00111 {
00112 generateToolStripButton.Enabled = !string.IsNullOrEmpty(sourceAssemblyToolStripTextBox.Text) &&
00113 !string.IsNullOrEmpty(webServiceNameToolStripTextBox.Text) &&
00114 File.Exists(sourceAssemblyToolStripTextBox.Text);
00115
00116 }
00117
00118 #endregion
00119
00120 #region Event Handlers
00121
00122 private void browseToolStripButton_Click(object sender, EventArgs e)
00123 {
00124 sourceAssemblyToolStripTextBox.Text = Tools.OpenDll(this, Resources.AppTitle);
00125 }
00126
00127 private void sourceAssemblyToolStripTextBox_Click(object sender, EventArgs e)
00128 {
00129 SetGenerationButtonEnabled();
00130 }
00131
00132 private void webServiceNameToolStripTextBox_Click(object sender, EventArgs e)
00133 {
00134 SetGenerationButtonEnabled();
00135 }
00136
00137 private void optionsToolStripButton_Click(object sender, EventArgs e)
00138 {
00139 using (OptionsForm optionsForm = new OptionsForm())
00140 {
00141 optionsForm.ShowDialog(this);
00142 }
00143 }
00144
00145 private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
00146 {
00147 e.Cancel = _IsGenerating;
00148
00149 Settings.Default.LastAssemblyPath = sourceAssemblyToolStripTextBox.Text;
00150 Settings.Default.LastWebServiceName = webServiceNameToolStripTextBox.Text;
00151 Settings.Default.Save();
00152 }
00153
00154 private void generateToolStripButton_Click(object sender, EventArgs e)
00155 {
00156 Generate();
00157 }
00158
00159 private void generator_OnGenerateStatusChanged(object sender, OnGenerationStatusChangedArgs args)
00160 {
00161 SetStatusText(args.Message);
00162 }
00163
00164 #endregion
00165 }
00166 }