From: Chris M. <cm...@us...> - 2006-06-15 03:29:37
|
User: cmicali Date: 06/06/14 20:29:32 Modified: etc/andromda-dotnet/AndroMDA.VS80AddIn AndroMDA VS2005 Add-In Readme.rtf etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn AddInSettings.cs MDASolutionManager.cs MavenProxy.cs VS80AddIn.cs etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Dialogs AboutOptionsPage.designer.cs AboutOptionsPage.resx etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Utils VSExternalToolProxy.cs etc/andromda-dotnet/AndroMDA.VS80AddIn/Installer AndroMDA VS2005 Add-In Setup.exe AndroMDA VS2005 Add-In Setup.nsi Log: - Reworked and simplified the process launch code - Added dialog to catch missing dependencies and ask user to rerun with online mode - Slightly tweaked about dialog Revision Changes Path No revision No revision No revision No revision 1.8 +15 -7 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/AddInSettings.cs Index: AddInSettings.cs =================================================================== RCS file: /cvsroot/andromdaplugins/plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/AddInSettings.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -u -w -r1.7 -r1.8 --- AddInSettings.cs 5 Jun 2006 22:27:23 -0000 1.7 +++ AddInSettings.cs 15 Jun 2006 03:29:32 -0000 1.8 @@ -239,22 +239,30 @@ #region Helper methods - public bool IsInIgnoreList(string file) + public bool IsInIgnoreList(string fileToTest) { - return IsInIgnoreList(file, true); + return IsInIgnoreList(fileToTest, true); } - public bool IsInIgnoreList(string file, bool stripPath) + public bool IsInIgnoreList(string fileToTest, bool stripPath) { // Get the list of files to ignore - string[] ignoreFiles = ResyncIgnoreList.Split(new char[] { ';' }); + string[] filesIgnored = ResyncIgnoreList.Split(new char[] { ';' }); + + // Strip the path of the input file if (stripPath) { - file = FileUtils.GetFilename(file); + fileToTest = FileUtils.GetFilename(fileToTest); } - foreach (string s in ignoreFiles) + // Make the file name lowercase and trim space off the ends + fileToTest = fileToTest.ToLower().Trim(); + + // Iterate through the ignored files + foreach (string ignoredFile in filesIgnored) { - if (s.ToLower().Equals(file.ToLower())) + string ignoredFileCleaned = ignoredFile.ToLower().Trim(); + // TODO: Support regular expressions + if (ignoredFileCleaned == fileToTest) { return true; } 1.13 +27 -8 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/MDASolutionManager.cs Index: MDASolutionManager.cs =================================================================== RCS file: /cvsroot/andromdaplugins/plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/MDASolutionManager.cs,v retrieving revision 1.12 retrieving revision 1.13 diff -u -w -r1.12 -r1.13 --- MDASolutionManager.cs 5 Jun 2006 22:27:23 -0000 1.12 +++ MDASolutionManager.cs 15 Jun 2006 03:29:32 -0000 1.13 @@ -45,7 +45,7 @@ private Mutex m_restartBuildMutex = new Mutex(false); //private MavenProxy m_mavenProxy = null; - private VSExternalToolProxy m_mavenProxy = null; + private MavenProxy m_mavenProxy = null; private int m_progress; @@ -355,6 +355,12 @@ MavenLastRunDateTime = null; } + public void RunMaven(bool forceOnlineMode) + { + m_mavenProxy.ForceOnlineMode = forceOnlineMode; + RunMaven(); + } + public void RunMaven() { if (IsEnabled) @@ -392,6 +398,16 @@ break; case VSExternalToolProxy.ToolExitStatus.Error: m_applicationObject.StatusBar.Text = "AndroMDA: Generation failed"; + if (m_mavenProxy.Status == MavenProxy.MavenStatus.UnsatisfiedDependency && + (m_addInSettings.MavenUseOfflineMode || (m_addInSettings.MavenUseCustomCommandLine && m_addInSettings.MavenCustomCommandLine.ToLower().Contains("-o"))) + ) + { + if ( System.Windows.Forms.MessageBox.Show("It appears that AndroMDA is missing one or more packages it needs to run. AndroMDA can automatically connect to the internet and download any missing dependencies, but it is currently running in offline mode. Would you like to re-run AndroMDA with offline mode temporarily disabled?" + Environment.NewLine + Environment.NewLine + "Please note that downloading all the required packages may take up to 10 minutes or more depending on your connection speed. You will only need to download these packages this one time as long as you leave offline mode enabled.", "AndroMDA Generate Failed", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question, System.Windows.Forms.MessageBoxDefaultButton.Button1) == System.Windows.Forms.DialogResult.Yes) + { + // Rerun maven without the -o option + RunMaven(true); + } + } break; } } @@ -616,18 +632,21 @@ private ArrayList GetFileListFromProjectTree(ProjectItem item) { ArrayList filesList = new ArrayList(); + if (item.Kind == EnvDTE.Constants.vsProjectItemKindPhysicalFile) + { for (short i = 1; i <= item.FileCount; i++) { string filename = item.get_FileNames(i); - if (!m_addInSettings.IsInIgnoreList(filename)) - { filesList.Add(filename); } } + else if (item.Kind == EnvDTE.Constants.vsProjectItemKindPhysicalFolder) + { foreach (ProjectItem childItem in item.ProjectItems) { filesList.AddRange(GetFileListFromProjectTree(childItem)); } + } return filesList; } 1.4 +55 -20 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/MavenProxy.cs Index: MavenProxy.cs =================================================================== RCS file: /cvsroot/andromdaplugins/plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/MavenProxy.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -u -w -r1.3 -r1.4 --- MavenProxy.cs 3 May 2006 20:23:05 -0000 1.3 +++ MavenProxy.cs 15 Jun 2006 03:29:32 -0000 1.4 @@ -32,8 +32,23 @@ public class MavenProxy : VSExternalToolProxy { + public enum MavenStatus { None, UnsatisfiedDependency } + private AddInSettings m_addInSettings = null; private string m_mavenOptions; + private MavenStatus m_mavenStatus; + private bool m_forceOnlineMode; + + public MavenStatus Status + { + get { return m_mavenStatus; } + } + + public bool ForceOnlineMode + { + get { return m_forceOnlineMode; } + set { m_forceOnlineMode = value; } + } public MavenProxy(EnvDTE.DTE applicationObject, AddInSettings addInSettings) : base(applicationObject) @@ -51,16 +66,16 @@ { m_addInSettings = addInSettings; this.Failed += new ThreadExceptionEventHandler(m_mavenProxy_Failed); - this.Cancelled += new EventHandler(m_mavenProxy_Cancelled); - this.ProcessStdOut += new ProcessTextDelegate(MavenProxy_ProcessOutput); - this.ProcessStdErr += new ProcessTextDelegate(MavenProxy_ProcessOutput); + this.Cancelled += new EventHandler(m_mavenProxy_Canceled); + this.ProcessStdOut += new ProcessTextDelegate(MavenProxy_ProcessStdOut); + this.ProcessStdErr += new ProcessTextDelegate(MavenProxy_ProcessStdErr); } - void m_mavenProxy_Cancelled(object sender, EventArgs e) + void m_mavenProxy_Canceled(object sender, EventArgs e) { this.OutputWindowPane.OutputString("\n"); - this.OutputWindowPane.OutputString("Generation cancelled\n"); - ApplicationObject.StatusBar.Text = "AndroMDA: Generation cancelled"; + this.OutputWindowPane.OutputString("Generation canceled\n"); + ApplicationObject.StatusBar.Text = "AndroMDA: Generation canceled"; } void m_mavenProxy_Failed(object sender, ThreadExceptionEventArgs e) @@ -78,10 +93,23 @@ ApplicationObject.StatusBar.Highlight(true); } - void MavenProxy_ProcessOutput(ref string text, ref bool cancelOutput) + void MavenProxy_ProcessStdErr(ref string text, ref bool cancelOutput) { - if (text.Length > 0) + ProcessOutput(ref text, ref cancelOutput); + if (text.Contains("The build cannot continue because of the following unsatisfied dependency")) { + m_mavenStatus = MavenStatus.UnsatisfiedDependency; + } + } + + void MavenProxy_ProcessStdOut(ref string text, ref bool cancelOutput) + { + ProcessOutput(ref text, ref cancelOutput); + } + + private void ProcessOutput(ref string text, ref bool cancelOutput) + { + if (text == string.Empty) return; // Filter out the full java strack trace from any errors that occur when maven runs if (text.Trim()[0] == '\t' || text.Contains(".java:") || text.Contains("(Native Method)")) { @@ -96,7 +124,6 @@ } } } - } public override void BeforeStart() { @@ -125,6 +152,12 @@ } } + if (m_forceOnlineMode) + { + m_mavenOptions = m_mavenOptions.Replace("-o", string.Empty); + m_forceOnlineMode = false; + } + this.OutputWindowPane.OutputString("Launching 'maven " + m_mavenOptions + "'...\n\n"); string java_home = System.Environment.GetEnvironmentVariable("JAVA_HOME"); @@ -177,6 +210,8 @@ this.CommandLine += maven_cmd_line_args; + m_mavenStatus = MavenStatus.None; + base.BeforeStart(); } 1.10 +1 -1 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/VS80AddIn.cs Index: VS80AddIn.cs =================================================================== RCS file: /cvsroot/andromdaplugins/plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/VS80AddIn.cs,v retrieving revision 1.9 retrieving revision 1.10 diff -u -w -r1.9 -r1.10 --- VS80AddIn.cs 30 May 2006 23:01:57 -0000 1.9 +++ VS80AddIn.cs 15 Jun 2006 03:29:32 -0000 1.10 @@ -20,7 +20,7 @@ public class VS80AddIn { - public const string ADD_IN_VERSION = "1.3"; + public const string ADD_IN_VERSION = "1.3.1"; #region Constants 1.7 +17 -17 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Dialogs/AboutOptionsPage.designer.cs Index: AboutOptionsPage.designer.cs =================================================================== RCS file: /cvsroot/andromdaplugins/plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Dialogs/AboutOptionsPage.designer.cs,v retrieving revision 1.6 retrieving revision 1.7 diff -u -w -r1.6 -r1.7 --- AboutOptionsPage.designer.cs 4 Jun 2006 02:06:01 -0000 1.6 +++ AboutOptionsPage.designer.cs 15 Jun 2006 03:29:32 -0000 1.7 @@ -30,8 +30,8 @@ { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutOptionsPage)); - System.Windows.Forms.ListViewGroup listViewGroup5 = new System.Windows.Forms.ListViewGroup("Code Statistics", System.Windows.Forms.HorizontalAlignment.Left); - System.Windows.Forms.ListViewGroup listViewGroup6 = new System.Windows.Forms.ListViewGroup("File Statistics", System.Windows.Forms.HorizontalAlignment.Left); + System.Windows.Forms.ListViewGroup listViewGroup1 = new System.Windows.Forms.ListViewGroup("Code Statistics", System.Windows.Forms.HorizontalAlignment.Left); + System.Windows.Forms.ListViewGroup listViewGroup2 = new System.Windows.Forms.ListViewGroup("File Statistics", System.Windows.Forms.HorizontalAlignment.Left); this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.pictureBox1 = new System.Windows.Forms.PictureBox(); @@ -142,10 +142,10 @@ this.listViewStatus.FullRowSelect = true; this.listViewStatus.GridLines = true; this.listViewStatus.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; - this.listViewStatus.Location = new System.Drawing.Point(3, 3); + this.listViewStatus.Location = new System.Drawing.Point(1, 3); this.listViewStatus.MultiSelect = false; this.listViewStatus.Name = "listViewStatus"; - this.listViewStatus.Size = new System.Drawing.Size(381, 208); + this.listViewStatus.Size = new System.Drawing.Size(385, 208); this.listViewStatus.TabIndex = 7; this.listViewStatus.UseCompatibleStateImageBehavior = false; this.listViewStatus.View = System.Windows.Forms.View.Details; @@ -179,9 +179,9 @@ this.pnlGenerating.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.pnlGenerating.Controls.Add(this.label3); this.pnlGenerating.Controls.Add(this.pictureBox2); - this.pnlGenerating.Location = new System.Drawing.Point(3, 3); + this.pnlGenerating.Location = new System.Drawing.Point(1, 3); this.pnlGenerating.Name = "pnlGenerating"; - this.pnlGenerating.Size = new System.Drawing.Size(381, 208); + this.pnlGenerating.Size = new System.Drawing.Size(385, 208); this.pnlGenerating.TabIndex = 7; // // label3 @@ -203,7 +203,7 @@ this.pictureBox2.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox2.Image"))); this.pictureBox2.Location = new System.Drawing.Point(147, 41); this.pictureBox2.Name = "pictureBox2"; - this.pictureBox2.Size = new System.Drawing.Size(83, 81); + this.pictureBox2.Size = new System.Drawing.Size(87, 81); this.pictureBox2.TabIndex = 8; this.pictureBox2.TabStop = false; // @@ -214,18 +214,18 @@ this.columnHeader2}); this.listViewStatistics.FullRowSelect = true; this.listViewStatistics.GridLines = true; - listViewGroup5.Header = "Code Statistics"; - listViewGroup5.Name = "listViewGroup1"; - listViewGroup6.Header = "File Statistics"; - listViewGroup6.Name = "listViewGroup2"; + listViewGroup1.Header = "Code Statistics"; + listViewGroup1.Name = "listViewGroup1"; + listViewGroup2.Header = "File Statistics"; + listViewGroup2.Name = "listViewGroup2"; this.listViewStatistics.Groups.AddRange(new System.Windows.Forms.ListViewGroup[] { - listViewGroup5, - listViewGroup6}); + listViewGroup1, + listViewGroup2}); this.listViewStatistics.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; - this.listViewStatistics.Location = new System.Drawing.Point(3, 3); + this.listViewStatistics.Location = new System.Drawing.Point(1, 3); this.listViewStatistics.MultiSelect = false; this.listViewStatistics.Name = "listViewStatistics"; - this.listViewStatistics.Size = new System.Drawing.Size(381, 208); + this.listViewStatistics.Size = new System.Drawing.Size(385, 208); this.listViewStatistics.TabIndex = 6; this.listViewStatistics.UseCompatibleStateImageBehavior = false; this.listViewStatistics.View = System.Windows.Forms.View.Details; @@ -258,9 +258,9 @@ this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.panel1.Controls.Add(this.label8); this.panel1.Controls.Add(this.linkLabel2); - this.panel1.Location = new System.Drawing.Point(3, 3); + this.panel1.Location = new System.Drawing.Point(1, 3); this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(381, 208); + this.panel1.Size = new System.Drawing.Size(385, 208); this.panel1.TabIndex = 5; // // label8 1.5 +57 -57 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Dialogs/AboutOptionsPage.resx Index: AboutOptionsPage.resx =================================================================== RCS file: /cvsroot/andromdaplugins/plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Dialogs/AboutOptionsPage.resx,v retrieving revision 1.4 retrieving revision 1.5 diff -u -w -r1.4 -r1.5 --- AboutOptionsPage.resx 4 Jun 2006 02:06:01 -0000 1.4 +++ AboutOptionsPage.resx 15 Jun 2006 03:29:32 -0000 1.5 @@ -938,75 +938,75 @@ LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACK EQAAAk1TRnQBSQFMAgEBAwEAAQQBAAEEAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA - AwABEAMAAQEBAAEgBgABEBoAAYECDgH/AWsCDgH/AWsCDgH/AWsCDgH/AWsCDgH/AWsCDgH/AWsCDgH/ - AWsCDgH/AWsCDgH/AWsCDgH/AWsCDgH/AWwCDgH/AbcCDgH/EAABBwIBAQcBHgIBASgBPgIBAWcBTwIC - AZkBVgICAa0BVQICAa4BUgICAaIBRAIBAXcBJwIBATgBDAIBAQ4BAgMBDAABBwIBAQgBTwICAZkBZAIM + AwABEAMAAQEBAAEgBgABEBoAAYECEAH/AW0CEAH/AW0CEAH/AW0CEAH/AW0CEAH/AW0CEAH/AW0CEAH/ + AW0CEAH/AW0CEAH/AW0CEAH/AW0CEAH/AW4CEAH/AbcCEAH/EAABBwIBAQcBHgIBASgBPgIBAWcBTwIC + AZkBVgICAa0BVQICAa4BUgICAaIBRAIBAXcBJwIBATgBDAIBAQ4BAgMBDAABBwIBAQgBTwICAZkBZAIK AeQBWwICAb0BSwICAYwBPAIBAWQBJQIBATUBHAIBASYBRQIBAXsBVgICAa8BUgICAaUBQwIBAXMBGgIB ASIBAgMBTAAB7AHaAdMC/wHoAdYC/wHmAdIC/wHlAc4C/wHiAcoC/wHhAcYC/wHgAcMC/wHdAb8C/wHc - AbsC/wHaAbgC/wHZAbMB/wGLAWQBYAH/AbMCDgH/DAABCgIBAQwBMwIBAU8BwgGbAZMB/AH0AegB4wH/ + AbsC/wHaAbgC/wHZAbMB/wGLAWYBYgH/AbMCEAH/DAABCgIBAQwBMwIBAU8BvgGTAYsB/AH0AegB4wH/ AvQB8wH/AfAB8gHzAf8B8QHyAfMB/wH0Ae0B6QH/Ae4B2wHQAf8BYgIDAdQBQQIBAXABFAIBARkBAgMB - CAABXgIDAcUD1AP/AfkD/wH7Av8B+wH2Af8BywG3AaMB/wF0ASsBJgHzAbYCZQH9Af8CxgL/AtoC/wLp + CAABXgIDAcUD1AP/AfkD/wH7Av8B+wH2Af8BywG3AaMB/wF0ASQBHgHzAbYCYQH9Af8CxgL/AtoC/wLp Af8ByAKpAf8BVwICAbYBKQIBATwBAgMBSAAB4gHZAdIC/wHqAdUC/wHoAc8C/wHlAcoC/wHiAcQC/wHe - Ab8C/wHdAboC/wHaAbUC/wHYAbEC/wHWAasC/wHUAaMB/wGJAWIBZgH/AbMCDgH/CAABCQIBAQoBRQIB - AXkB9QHrAeUB/wHwAfEB8gH/AeQB3QHbAf8BvgGLAYAB/wHCAYEBYAH/AcwBjwF/Af8B3wHOAcQB/wHt - AfAB8gH/AfYC9AH/AZMBTwFMAfgBRgIBAX0BEgIBARYBAgMBBAADtwH/AcECwgL/AfYB7gH/AUcBrAFA + Ab8C/wHdAboC/wHaAbUC/wHYAbEC/wHWAasC/wHUAaMB/wGJAWQBaAH/AbMCEAH/CAABCQIBAQoBRQIB + AXkB9QHrAeUB/wHwAfEB8gH/AeQB3QHbAf8BvgGLAYEB/wHCAYEBYgH/AcwBjwGBAf8B3wHOAcQB/wHt + AfAB8gH/AfYC9AH/AY4BSQFGAfgBRgIBAX0BEgIBARYBAgMBBAADtwH/AcECwgL/AfYB7gH/AUkBrAFC Af8BsAHZAaUB/wHvAcYBjQH/AccCgQL/AqEC/wKyAv8CxAL/AtQC/wL+Af8B8QLqAf8BVwICAbEBGAIB AR9IAAHkAd0B1gL/Ae0B2wL/AeoB1gL/AegB0QL/AeoBxwH/AcEBugHSAv8B5wG+Av8B3gG7Av8B2wG2 - Av8B2AGxAv8B1wGpAf8BiwFkAWcB/wGzAg4B/wgAATACAQFKAfcB8QHtAf8B8AH0AfUB/wHIAYEBawH/ - Ab8BaQE4Af8BwgF0AUYB/wHsAe4B7wH/AdIBiAFxAf8BwAFsATsB/wG9AW4BQAH/AeoB6QHoAf8B9QH2 - AfcB/wF2AR8BGwHxATsCAQFgAQgCAQEJBAADvwH/AtkB2gL/Ae4B3wH/ARUBsAEmAf8BHgGtASkB/wFM - AYEBNwL/ArUC/wKeAv8CoAL/AbEBsAL/AcUBwwn/AbMCiQH+AUACAQFtSAAB5gHgAdsC/wHzAeYC/wHz - AeYC/wHuAb4B/wEyAU4B7wH/AQ4BQQL/AW4BfQHgAv8B3gG9Av8B3gG9Av8B3gG9Av8B3gG9Af8BjgFn - AWgB/wGzAg4B/wgAAfEB3gHTAf8B9AL2Af8BxAF8AVEB/wHFAXEBQAH/AcsBdAFBAf8BwAF9AVUB/wH+ - A/8B2QGoAY8B/wHKAXMBQQH/AccBcQE/Af8BvAFmATQB/wHuAe8B8AH/AfYB7gHqAf8BWAICAboBHAIB - ASUEAAPLAf8B2wLcAv8B5gHOAf8BMgHMAVIB/wErAb4BPwH/AaYBiAGBAv8CwwL/ArAC/wHRAdkB/wH4 - AbEBzAL/AecG/wH9AfwB/QH/AfwC+wH/AVMCAgGkSAAB6QHjAd8C/wHmAckB/wGQAY8ByQH/AQ4BNgL/ - AQ4BNwL/AR8BTgL/AQ4BOAL/AfkB3AGsAv8B3gG9Av8B3gG9Av8B3AG0Af8BjgFoAWkB/wGzAg4B/wQA - ATECAQFLAfkB+gH5Af8B4QHBAbEB/wHGAXEBQAH/AcwBdQFDAf8BzAF1AUIB/wHMAXQBQAH/AcoBbgE5 - Af8BywFxAT0B/wHMAXQBQQH/AcsBdAFCAf8BxwFyAUAB/wHGAYEBWwH/AfMC9QH/Ab0BkgGHAfwBNAIB - AVIEAAPPAf8B3wHgAeIC/wHdAbwB/wFQAeoBgAH/AT0B0wFaAf8BywGcAZ8C/wLNAv8CwwL/AfQB/AH/ + Av8B2AGxAv8B1wGpAf8BiwFmAWkB/wGzAhAB/wgAATACAQFKAfcB8QHtAf8B8AH0AfUB/wHIAYEBbQH/ + Ab8BawE6Af8BwgF2AUgB/wHsAe4B7wH/AdIBiAFzAf8BwAFuAT0B/wG9AXABQgH/AeoB6QHoAf8B9QH2 + AfcB/wF2ARkBGAHxATsCAQFgAQgCAQEJBAADvwH/AtkB2gL/Ae4B3wH/ARcBsAEoAf8BIAGtASsB/wFO + AYEBOQL/ArUC/wKeAv8CoAL/AbEBsAL/AcUBwwn/AbEChQH+AUACAQFtSAAB5gHgAdsC/wHzAeYC/wHz + AeYC/wHuAb4B/wE0AVAB7wH/ARABQwL/AXABfwHgAv8B3gG9Av8B3gG9Av8B3gG9Av8B3gG9Af8BjgFp + AWoB/wGzAhAB/wgAAfEB3gHTAf8B9AL2Af8BxAF+AVMB/wHFAXMBQgH/AcsBdgFDAf8BwAF/AVcB/wH+ + A/8B2QGoAY8B/wHKAXUBQwH/AccBcwFBAf8BvAFoATYB/wHuAe8B8AH/AfYB7gHqAf8BWAICAboBHAIB + ASUEAAPLAf8B2wLcAv8B5gHOAf8BNAHMAVQB/wEtAb4BQQH/AaYBiAGBAv8CwwL/ArAC/wHRAdkB/wH4 + AbEBzAL/AecG/wH9AfwB/QH/AfwC+wH/AVMCAgGkSAAB6QHjAd8C/wHmAckB/wGQAY8ByQH/ARABOAL/ + ARABOQL/ASEBUAL/ARABOgL/AfkB3AGsAv8B3gG9Av8B3gG9Av8B3AG0Af8BjgFqAWsB/wGzAhAB/wQA + ATECAQFLAfkB+gH5Af8B4QHBAbEB/wHGAXMBQgH/AcwBdwFFAf8BzAF3AUQB/wHMAXYBQgH/AcoBcAE7 + Af8BywFzAT8B/wHMAXYBQwH/AcsBdgFEAf8BxwF0AUIB/wHGAYEBXQH/AfMC9QH/AbkBigF/AfwBNAIB + AVIEAAPPAf8B3wHgAeIC/wHdAbwB/wFSAeoBgQH/AT8B0wFcAf8BywGcAZ8C/wLNAv8CwwL/AfQB/AH/ AaICzAH/Aa0BggGBAf8B9wHzAfIB/wHrAeIB3wH/AfAB6QHlAf8BWgIDAcJIAAHrAeYB4wL/AeUByQH/ - AWMBfgHzAf8BMgFYAv8B/AHkAbkC/wHpAbIB/wEOATUC/wEqAU0B8wL/AdwBrAL/AdUBrAL/Ad4BuQH/ - AY8BaQFrAf8BswIOAf8EAAFqAgoB4QH6Af0B/gH/AcYBdAFEAf8BzQF2AUQB/wHNAXYBQwH/AcwBdAFB - Af8BxwF1AUUF/wHaAZEBeQH/AcwBdAFBAf8BzAF1AUIB/wHLAXQBQgH/AcEBagE2Af8D8QH/AfIB3wHV - Af8BRAIBAXcEAAPSAf8B4wHmAegC/wHXAaoB/wFLAcIB4AH/AVcBswL/AZ0BgQGOAv8CygL/AtYC/wH1 + AWUBgAHzAf8BNAFaAv8B/AHkAbkC/wHpAbIB/wEQATcC/wEsAU8B8wL/AdwBrAL/AdUBrAL/Ad4BuQH/ + AY8BawFtAf8BswIQAf8EAAFqAggB4QH6Af0B/gH/AcYBdgFGAf8BzQF4AUYB/wHNAXgBRQH/AcwBdgFD + Af8BxwF3AUcF/wHaAZEBewH/AcwBdgFDAf8BzAF3AUQB/wHLAXYBRAH/AcEBbAE4Af8D8QH/AfIB3wHV + Af8BRAIBAXcEAAPSAf8B4wHmAegC/wHXAaoB/wFNAcIB4AH/AVkBswL/AZ0BgQGOAv8CygL/AtYC/wH1 Av8BywGhAZ4B/wHdAZQBmAL/AcUBxgL/ArIC/wLKAf8BWwICAb1IAAHtAeoB5wL/AecBzgL/AeQBwgL/ - AeMBvgL/Ad4BvQL/AdwBugH/AqUB2QH/AQ4BPgL/AcYBswG8Av8B1wGvAv8B4QG+Af8BkwFrAW0B/wGz - Ag4B/wQAAdQBtwGwAv4D/wHKAXMBQAH/AdABeQFGAf8BzAF0AUEB/wHMAXQBQQH/AcwBcQE9Af8B5AHq - AewB/wH6AfEB7AH/AcoBbgE6Af8BzAF0AUEB/wHNAXYBQwH/AcgBcgFAAf8B6wHbAdMB/wH1AekB4wH/ - AUgCAgGCBAAB1wHTAcsB/wHyAbgBcAL/Ac8BnAH/AbABuwHFAf8BgQG2AeMB/wFPAWABow7/AcsB6AL/ + AeMBvgL/Ad4BvQL/AdwBugH/AqUB2QH/ARABQAL/AcYBswG8Av8B1wGvAv8B4QG+Af8BkwFtAW8B/wGz + AhAB/wQAAdABswGsAv4D/wHKAXUBQgH/AdABewFIAf8BzAF2AUMB/wHMAXYBQwH/AcwBcwE/Af8B5AHq + AewB/wH6AfEB7AH/AcoBcAE8Af8BzAF2AUMB/wHNAXgBRQH/AcgBdAFCAf8B6wHbAdMB/wH1AekB4wH/ + AUgCAgGCBAAB1wHTAcsB/wHyAbgBcgL/Ac8BnAH/AbABuwHFAf8BgQG2AeMB/wFRAWIBow7/AcsB6AL/ AckB2AL/ApwC/wKgAf8B/QKyAf8BQwIBAXVIAAHvAe0B6wL/AegB0QL/AeEBwwL/AeABwAL/Ad8BvgL/ - Ad0BuwL/AeUBtQH/ARkBQwL/AQ4BNQP/Ad4BvQL/AeQBxAH/AZQBbQFvAf8BswIOAf8EAAHwAdwB0QX/ - AdIBegFHAf8B0wF8AUkB/wHMAXQBQQH/AcwBdAFBAf8BzAF0AUEB/wHFAXYBRwH/AfYB+QH7Af8B+wHx - Ae0B/wHLAXABOwH/Ac8BdwFFAf8BzAF2AUQB/wHuAdsB0gH/AfcB7AHlAf8BRgIBAXwEAAHbAcEBnQH/ - AeIBqAFtAv8BxwGKAv8ByQGPAv8ByQGOAv8ByQGQAf8BvgGgAaQG/wL+Av8CzwL/AsMC/wKxAv8CngH/ - AbkCYgH9ARUCAQEbSAAB8gLxAv8B5wHRAv8B4AHAAv8B3wG/Av8B3QG8Av8B3AG6Av8B2wG4Af8B7QHW - Ab8B/wEOATsC/wFuAXkB2wL/AeYByQH/AZgBbwFxAf8BswIOAf8EAAGSAUkBRQH1BP8B3wGBAVQB/wHb - AYEBUgH/Ac4BdgFDAf8BywFvAToB/wHLAXIBPgH/AcwBdAFBAf8BxAGBAVoF/wHcAZQBfgH/AdIBewFJ - Af8BzwF3AUQB/wH7AfUB8wH/AfUB5AHcAf8BOgIBAV8EAAHbAccBsgH/A9kC/wG6AW8C/wG7AXIC/wG8 - AXUC/wG9AXcB/wH5AboBdAH/AcUBqwGtAv8C9wL/AuEC/wLQAv8CxgH/AdICjwH/AR8CAQEqAQIDAUgA - AfQC8wL/AeIBxgL/AdcBsQL/AdcBsAL/AdYBrwL/AdYBrQL/AdYBrAL/AdcBqQH/AVQBcAHzAf8B/AHd - AaUC/wHpAc8B/wGaAW8BcQH/AbMCDgH/BAABSAICAYAE/wH7AckBrgH/Ae4BigFlAf8B0gGBAVYB/wHx - AfYB+QH/AesBwgGuAf8BywFxAT0B/wHKAX4BUQX/Ad8BpQGJAf8B3AGBAVMB/wHYAYEBUgX/AdIBtQGu - Af4BIwIBATEEAAPRAf8BxwHKAc0B/wH+Aa0BRAH/AfMB8QHvAf8B8gHWAaoB/wH0Ab8BfAH/AfoBrgFM - Av8BqAEtAf8ByAGBAUgB/wG+AZEBhQH/AbICdQH9AVsCAgG4ARQCAQEZUAAC9gH1Av8B4QHCAv8B1gGs - Av8B1QGrAv8B1QGrAv8B1AGpAv8B1AGpAv8B0wGoAv8B1QGmAv8B0QGkAv8B7QHWAf8BnAFtAW4B/wGz - Ag4B/wgAAfYB6AHgBv8BowF8Af8B+gGVAW8B/wHNAcYBwwX/AfwB9QHxBf8B9gH7Af0B/wHmAYMBYAH/ - AesBgwFdAf8B/QH1Ae4B/wH+AvwB/wFNAgIBkwEMAgEBDgQAA+gB/wHqAusB/wHNAbQBtQH/AecC3AH/ - AfUC9wH/Ae8C8QH/AeoB7AHtAf8B4QHkAeYB/wHbAd8B5QH/AdYB2AHaAf8BuQGsAaUB/gFrAhcB6QEX + Ad0BuwL/AeUBtQH/ARsBRQL/ARABNwP/Ad4BvQL/AeQBxAH/AZQBbwFxAf8BswIQAf8EAAHwAdwB0QX/ + AdIBfAFJAf8B0wF+AUsB/wHMAXYBQwH/AcwBdgFDAf8BzAF2AUMB/wHFAXgBSQH/AfYB+QH7Af8B+wHx + Ae0B/wHLAXIBPQH/Ac8BeQFHAf8BzAF4AUYB/wHuAdsB0gH/AfcB7AHlAf8BRgIBAXwEAAHbAcEBnQH/ + AeIBqAFvAv8BxwGKAv8ByQGPAv8ByQGOAv8ByQGQAf8BvgGgAaQG/wL+Av8CzwL/AsMC/wKxAv8CngH/ + AbkCXgH9ARUCAQEbSAAB8gLxAv8B5wHRAv8B4AHAAv8B3wG/Av8B3QG8Av8B3AG6Av8B2wG4Af8B7QHW + Ab8B/wEQAT0C/wFwAXsB2wL/AeYByQH/AZgBcQFzAf8BswIQAf8EAAGKAT0BOwH1BP8B3wGBAVYB/wHb + AYEBVAH/Ac4BeAFFAf8BywFxATwB/wHLAXQBQAH/AcwBdgFDAf8BxAGBAVwF/wHcAZQBgAH/AdIBfQFL + Af8BzwF5AUYB/wH7AfUB8wH/AfUB5AHcAf8BOgIBAV8EAAHbAccBsgH/A9kC/wG6AXEC/wG7AXQC/wG8 + AXcC/wG9AXkB/wH5AboBdgH/AcUBqwGtAv8C9wL/AuEC/wLQAv8CxgH/AdICjwH/AR8CAQEqAQIDAUgA + AfQC8wL/AeIBxgL/AdcBsQL/AdcBsAL/AdYBrwL/AdYBrQL/AdYBrAL/AdcBqQH/AVYBcgHzAf8B/AHd + AaUC/wHpAc8B/wGaAXEBcwH/AbMCEAH/BAABSAICAYAE/wH7AckBrgH/Ae4BigFnAf8B0gGBAVgB/wHx + AfYB+QH/AesBwgGuAf8BywFzAT8B/wHKAYABUwX/Ad8BpQGJAf8B3AGBAVUB/wHYAYEBVAX/Ac4BsQGq + Af4BIwIBATEEAAPRAf8BxwHKAc0B/wH+Aa0BRgH/AfMB8QHvAf8B8gHWAaoB/wH0Ab8BfgH/AfoBrgFO + Av8BqAEvAf8ByAGBAUoB/wG+AZEBhQH/AbICcQH9AVsCAgG4ARQCAQEZUAAC9gH1Av8B4QHCAv8B1gGs + Av8B1QGrAv8B1QGrAv8B1AGpAv8B1AGpAv8B0wGoAv8B1QGmAv8B0QGkAv8B7QHWAf8BnAFvAXAB/wGz + AhAB/wgAAfYB6AHgBv8BowF+Af8B+gGVAXEB/wHNAcYBwwX/AfwB9QHxBf8B9gH7Af0B/wHmAYMBYgH/ + AesBgwFfAf8B/QH1Ae4B/wH+AvwB/wFNAgIBkwEMAgEBDgQAA+gB/wHqAusB/wHNAbQBtQH/AecC3AH/ + AfUC9wH/Ae8C8QH/AeoB7AHtAf8B4QHkAeYB/wHbAd8B5QH/AdYB2AHaAf8BtwGoAaEB/gFrAhAB6QEX AgEBHVAAAvgB9Qr/Af4D/wH7AfkC/wH5AfQC/wH2Ae8C/wH0AeoC/wHzAeYB/wH7AfAB4wL/AfEB1wH/ - AZ8BaQFqAf8BsAIOAf8IAAFKAgIBhgn/AdABnAL/AbsBhwH/AekBvwGqAf8B1wHHAcAB/wHfAckBvwH/ - AfwBqQGBAv8BpAF9Av8B6AHXBf8BwgGcAZMB/AEeAgEBKAEDAgEBAgEEAgEBBAHfAt4B/wHdAcsBvAH/ - AbYBgQF9Af8BqwKBAf8BsAKBAf8BswKBAf8BuwGEAYUB/wHKAp8B/wHqAuwB/wHpAuoB/wGRAl0B+AEn - AgEBOFQAAfoB+QH3Dv8C/gL/AfsB+AL/AfkB9AL/AfYB7gH/Ae4B3wHaAf8B8QGYATAB/wHeAYEBGgH/ - AboBiQGBAf8BygIOAf8IAAECAwEBYAIDAdMK/wHtAv8B+wHRAv8B7wG7Av8B5AGxAv8B6wHNCf8B1QG4 - AbEB/gEjAgEBMQEEAgEBBAQAATwCAQFkAfUB+QH+Af8B/QHDAYEC/wHMAZcC/wHNAZ8C/wHPAakC/wHR + AZ8BawFsAf8BsAIQAf8IAAFKAgIBhgn/AdABnAL/AbsBhwH/AekBvwGqAf8B1wHHAcAB/wHfAckBvwH/ + AfwBqQGBAv8BpAF/Av8B6AHXBf8BvgGUAYsB/AEeAgEBKAEDAgEBAgEEAgEBBAHfAt4B/wHdAcsBvAH/ + AbYBgQF/Af8BqwKBAf8BsAKBAf8BswKBAf8BuwGEAYUB/wHKAp8B/wHqAuwB/wHpAuoB/wGMAlMB+AEn + AgEBOFQAAfoB+QH3Dv8C/gL/AfsB+AL/AfkB9AL/AfYB7gH/Ae4B3wHaAf8B8QGYATIB/wHeAYEBHAH/ + AboBiQGBAf8BygIQAf8IAAECAwEBYAIDAdMK/wHtAv8B+wHRAv8B7wG7Av8B5AGxAv8B6wHNCf8B0QG0 + Aa0B/gEjAgEBMQEEAgEBBAQAATwCAQFkAfUB+QH+Af8B/QHDAYEC/wHMAZcC/wHNAZ8C/wHPAakC/wHR AbEB/wH9AcoBtgH/AfMBwQG3Av8C2wL/AuQB/wHvAugB/wFGAgEBfAEDAgEBA1AAAf0B+gH4Ev8C/gL/ - AfwB+QL/AfkB9AH/Ae8B4QHcAv8BzwGBAf8BugGJAYEB/wHKAg4B/xAAAQIDAQFGAgEBewH1AeYB3hX/ - AfoB8QHsAf8BbwETARAB6QEYAgEBHwEDAgEBAwgAAUsCAgGLAf4BtwFpAf8B/gHLAZYC/wHMAZ8C/wHO - AagC/wHOAbAC/wHOAbgC/wHNAcAB/wHaAa0BqgH+AXcCIgHrAf8C/QX/AUwCAgGOAQgCAQEJUAAB9wHS + AfwB+QL/AfkB9AH/Ae8B4QHcAv8BzwGBAf8BugGJAYEB/wHKAhAB/xAAAQIDAQFGAgEBewH1AeYB3hX/ + AfoB8QHsAf8BbAEPAQ4B6QEYAgEBHwEDAgEBAwgAAUsCAgGLAf4BtwFrAf8B/gHLAZYC/wHMAZ8C/wHO + AagC/wHOAbAC/wHOAbgC/wHNAcAB/wHWAakBpgH+AXUCGgHrAf8C/QX/AUwCAgGOAQgCAQEJUAAB9wHS Aa8B/wHyAcsBqwH/AeoBxAGnAf8B4QG7AaIB/wHZAbMBnQH/AdABqgGYAf8BygGkAZQB/wHIAaIBkwH/ - AcgBogGTAf8BugGJAYEB/wHKAg4B/yAAAUACAQFtAXkCHAHsAdUBuAGwAf4BsQF9AXcB+gFSAgIBniAA + AcgBogGTAf8BugGJAYEB/wHKAhAB/yAAAUACAQFtAXQCFQHsAdEBtAGsAf4BrQF1AW8B+gFSAgIBniAA AQIDAQECAwEBFAIBARoBKAIBATkBNwIBAVgBSgICAYUBTgICAY8BFAIBARoBLQIBAUQBCgIBAQwBAgMB TAABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEAAQEFAAGAFwAD/wEAAcABAQHgAQMBgAEBAgABwAEB AcABAQGAAwABwAEBAYABAAGAAwABwAEBAYABAAGAAwABwAEBAYABAAGAAwABwAEBAgABgAMAAcABAQIA 1.3 +56 -56 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Utils/VSExternalToolProxy.cs Index: VSExternalToolProxy.cs =================================================================== RCS file: /cvsroot/andromdaplugins/plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Utils/VSExternalToolProxy.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -u -w -r1.2 -r1.3 --- VSExternalToolProxy.cs 3 May 2006 20:23:06 -0000 1.2 +++ VSExternalToolProxy.cs 15 Jun 2006 03:29:32 -0000 1.3 @@ -29,7 +29,7 @@ public event ProcessTextDelegate ProcessStdOut; public event ProcessTextDelegate ProcessStdErr; - public enum ToolExitStatus { DidNotExit, Cancelled, Error, Success }; + public enum ToolExitStatus { DidNotExit, Canceled, Error, Success }; private string m_executablePath = string.Empty; private string m_workingDirectory = string.Empty; @@ -40,6 +40,7 @@ private NameValueCollection m_environmentVariables = new NameValueCollection(); public ArrayList m_outputLines; public string m_output = string.Empty; + System.Diagnostics.ProcessStartInfo m_psi = null; #endregion @@ -122,6 +123,18 @@ m_applicationObject = applicationObject; } + public bool OutputContains(string value) + { + foreach (string line in OutputLines) + { + if (line.Contains(value)) + { + return true; + } + } + return false; + } + public override void BeforeStart() { m_psi = new System.Diagnostics.ProcessStartInfo(); @@ -141,46 +154,6 @@ } } - private void RedirectStream(object parameters) - { - object[] paramlist = parameters as object[]; - System.IO.StreamReader sr = paramlist[0] as System.IO.StreamReader; - bool isStdErr = (bool)paramlist[1] ; - if (sr == null) - { - return; - } - string str; - bool cancelOutput; - while (this.IsRunning && !CancelRequested && (str = sr.ReadLine()) != null) - { - cancelOutput = false; - if (isStdErr) - { - ProcessStdErr(ref str, ref cancelOutput); - } - else - { - ProcessStdOut(ref str, ref cancelOutput); - } - -/* - if (str.ToLower().Contains("model validation failed")) - { - lock (this) { m_eventArgs.ExitStatus = ExitStatus.ModelValidationFailed; } - } -*/ - if (!cancelOutput) - { - this.OutputLines.Add(str); - m_outputWindowPane.OutputString(str + "\n"); - } - System.Threading.Thread.Sleep(0); - } - } - - System.Diagnostics.ProcessStartInfo m_psi = null; - protected override void DoWork() { Process toolProcess = new Process(); @@ -195,38 +168,33 @@ m_psi.RedirectStandardOutput = true; m_psi.RedirectStandardError = true; + toolProcess.EnableRaisingEvents = true; + toolProcess.ErrorDataReceived += new DataReceivedEventHandler(toolProcess_ErrorDataReceived); + toolProcess.OutputDataReceived += new DataReceivedEventHandler(toolProcess_OutputDataReceived); + // Associate process info with the process. toolProcess.StartInfo = m_psi; VSExternalToolEventArgs eventArguments = new VSExternalToolEventArgs(); this.EventArguments = eventArguments; - if (CancelRequested) - { - eventArguments.ExitStatus = ToolExitStatus.Cancelled; - AcknowledgeCancel(); - return; - } - if (!toolProcess.Start()) { throw new Exception("External tool failed to start"); } + toolProcess.BeginOutputReadLine(); + toolProcess.BeginErrorReadLine(); + try { - Thread stdoutThread = new Thread(new ParameterizedThreadStart(RedirectStream)); - Thread stderrThread = new Thread(new ParameterizedThreadStart(RedirectStream)); m_applicationObject.MainWindow.SetFocus(); - stdoutThread.Start(new object[] { toolProcess.StandardOutput, false }); - stderrThread.Start(new object[] { toolProcess.StandardError, true }); - - // Loop until the process has completed while (!toolProcess.WaitForExit(250) && !CancelRequested) { } + if (!CancelRequested) { eventArguments.ExitCode = toolProcess.ExitCode; @@ -234,8 +202,8 @@ } else { - eventArguments.ExitStatus = ToolExitStatus.Cancelled; toolProcess.Kill(); + eventArguments.ExitStatus = ToolExitStatus.Canceled; AcknowledgeCancel(); } } @@ -256,5 +224,37 @@ } } } + + void toolProcess_ErrorDataReceived(object sender, DataReceivedEventArgs e) + { + ProcessOutput(e.Data, true); + } + + void toolProcess_OutputDataReceived(object sender, DataReceivedEventArgs e) + { + ProcessOutput(e.Data, false); + } + + void ProcessOutput(string input, bool isStdErr) + { + if (input != null) + { + bool cancelOutput = false; + if (isStdErr) + { + ProcessStdErr(ref input, ref cancelOutput); + } + else + { + ProcessStdOut(ref input, ref cancelOutput); + } + if (!cancelOutput) + { + this.OutputLines.Add(input); + this.OutputWindowPane.OutputString(input + "\n"); + } + } + } + } } No revision No revision No revision No revision No revision No revision No revision No revision |