You are viewing a plain text version of this content. The canonical link for it is here.
Posted to npanday-commits@incubator.apache.org by lc...@apache.org on 2011/11/08 16:13:25 UTC

svn commit: r1199326 - in /incubator/npanday/trunk/dotnet/assemblies: NPanday.Logging/src/main/csharp/NPanday/Logging/ NPanday.Model.Settings/src/main/csharp/ NPanday.VisualStudio.Addin/ NPanday.VisualStudio.Addin/src/main/csharp/ NPanday.VisualStudio....

Author: lcorneliussen
Date: Tue Nov  8 16:13:24 2011
New Revision: 1199326

URL: http://svn.apache.org/viewvc?rev=1199326&view=rev
Log:
[NPANDAY-479] Refactoring VS Add-in

 * created ImportSelectedProjectCommand
 * AddArtifactsCommand is now calling ImportSelectedProjectCommand as a subcommand (if pom doesn't exist)
 * Using the logger in more places
 * Print log level and thread when logging to the output pane

Added:
    incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/ImportSelectedProjectCommand.cs
    incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Helper/VisualStudioControlsFinder.cs
      - copied, changed from r1198920, incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Helper/BuiltinCommandFinder.cs
Removed:
    incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Helper/BuiltinCommandFinder.cs
Modified:
    incubator/npanday/trunk/dotnet/assemblies/NPanday.Logging/src/main/csharp/NPanday/Logging/Level.cs
    incubator/npanday/trunk/dotnet/assemblies/NPanday.Logging/src/main/csharp/NPanday/Logging/LogRecord.cs
    incubator/npanday/trunk/dotnet/assemblies/NPanday.Model.Settings/src/main/csharp/NPanday.Model.Settings.csproj
    incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/NPanday.VisualStudio.Addin.sln
    incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday.VisualStudio.Addin.csproj
    incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/AddArtifactsCommand.cs
    incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/ButtonCommandRegistry.cs
    incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/IButtonCommandContext.cs
    incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Connect.cs
    incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/NPandayImportProjectForm.cs
    incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio/src/main/csharp/NPanday/VisualStudio/Logging/OutputWindowPaneHandler.cs

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.Logging/src/main/csharp/NPanday/Logging/Level.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.Logging/src/main/csharp/NPanday/Logging/Level.cs?rev=1199326&r1=1199325&r2=1199326&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.Logging/src/main/csharp/NPanday/Logging/Level.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.Logging/src/main/csharp/NPanday/Logging/Level.cs Tue Nov  8 16:13:24 2011
@@ -23,37 +23,42 @@ using System;
 
 namespace NPanday.Logging
 {
-	public class Level
-	{		
-		
-		public static Level SEVERE = new Level("SEVERE", 10);
-		
-		public static Level WARNING = new Level("WARNING", 9);
-		
-		public static Level INFO = new Level("INFO", 8);		
-		
-		public static Level FINE = new Level("FINE", 7);
-		
-		public static Level DEBUG = new Level("DEBUG", 6);		
-		
-		private String name;
-		
-		private int value;
-		
-		private Level(String name, int value)
-		{
-			this.name = name;
-			this.value = value;
-		}
-		
-		public String GetName()
-		{
-			return name;
-		}
-		
-		public int GetValue()
-		{
-			return value;
-		}
-	}
+    public class Level
+    {
+
+        public static Level SEVERE = new Level("SEVERE", 10);
+
+        public static Level WARNING = new Level("WARNING", 9);
+
+        public static Level INFO = new Level("INFO", 8);
+
+        public static Level FINE = new Level("FINE", 7);
+
+        public static Level DEBUG = new Level("DEBUG", 6);
+
+        private String name;
+
+        private int value;
+
+        private Level(String name, int value)
+        {
+            this.name = name;
+            this.value = value;
+        }
+
+        public String GetName()
+        {
+            return name;
+        }
+
+        public int GetValue()
+        {
+            return value;
+        }
+
+        public override string ToString()
+        {
+            return name;
+        }
+    }
 }

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.Logging/src/main/csharp/NPanday/Logging/LogRecord.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.Logging/src/main/csharp/NPanday/Logging/LogRecord.cs?rev=1199326&r1=1199325&r2=1199326&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.Logging/src/main/csharp/NPanday/Logging/LogRecord.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.Logging/src/main/csharp/NPanday/Logging/LogRecord.cs Tue Nov  8 16:13:24 2011
@@ -20,32 +20,44 @@
 #endregion
 
 using System;
+using System.Threading;
 
 namespace NPanday.Logging
 {
-	/// <summary>
-	/// Description of LogRecord.
-	/// </summary>
-	public class LogRecord
-	{
-		private Level level;
-		
-		private String message;
-		
-		public LogRecord(Level level, String message) 
-		{
-			this.level = level;
-			this.message = message;
-		}
-		
-		public Level GetLevel()
-		{
-			return level;
-		}
-		
-		public String GetMessage()
-		{
-			return message;
-		}
-	}
+    /// <summary>
+    /// Description of LogRecord.
+    /// </summary>
+    public class LogRecord
+    {
+        private Level level;
+        private String message;
+        private int thread;
+
+        public LogRecord(Level level, String message)
+        {
+            this.level = level;
+            this.message = message;
+            thread = Thread.CurrentThread.ManagedThreadId;
+        }
+
+        public Level GetLevel()
+        {
+            return level;
+        }
+
+        public String GetMessage()
+        {
+            return message;
+        }
+
+        public int GetThread()
+        {
+            return thread;
+        }
+
+        public override string ToString()
+        {
+            return "[" + level + ", #" + thread + "] " + message;
+        }
+    }
 }

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.Model.Settings/src/main/csharp/NPanday.Model.Settings.csproj
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.Model.Settings/src/main/csharp/NPanday.Model.Settings.csproj?rev=1199326&r1=1199325&r2=1199326&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.Model.Settings/src/main/csharp/NPanday.Model.Settings.csproj (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.Model.Settings/src/main/csharp/NPanday.Model.Settings.csproj Tue Nov  8 16:13:24 2011
@@ -62,6 +62,9 @@ under the License.
       <SubType>Code</SubType>
     </Compile>
   </ItemGroup>
+  <ItemGroup>
+    <WebReferences Include="Web References\" />
+  </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/NPanday.VisualStudio.Addin.sln
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/NPanday.VisualStudio.Addin.sln?rev=1199326&r1=1199325&r2=1199326&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/NPanday.VisualStudio.Addin.sln (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/NPanday.VisualStudio.Addin.sln Tue Nov  8 16:13:24 2011
@@ -3,6 +3,10 @@ Microsoft Visual Studio Solution File, F
 # Visual Studio 2005
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NPanday.VisualStudio.Addin", "src\main\csharp\NPanday.VisualStudio.Addin.csproj", "{5BE35FDF-E620-4EB0-B9A8-2359C506D85D}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NPanday.ProjectImporterEngine", "..\NPanday.ProjectImporter\Engine\src\main\csharp\NPanday.ProjectImporterEngine.csproj", "{91FC215D-C041-4000-8F71-C04A9EEABE55}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NPanday.Utils", "..\NPanday.Utils\src\main\csharp\NPanday.Utils.csproj", "{CAA4864F-F4C8-4024-8535-8B8C112307CE}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -10,6 +14,10 @@ Global
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 		{5BE35FDF-E620-4EB0-B9A8-2359C506D85D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{5BE35FDF-E620-4EB0-B9A8-2359C506D85D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{91FC215D-C041-4000-8F71-C04A9EEABE55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{91FC215D-C041-4000-8F71-C04A9EEABE55}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{CAA4864F-F4C8-4024-8535-8B8C112307CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CAA4864F-F4C8-4024-8535-8B8C112307CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday.VisualStudio.Addin.csproj
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday.VisualStudio.Addin.csproj?rev=1199326&r1=1199325&r2=1199326&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday.VisualStudio.Addin.csproj (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday.VisualStudio.Addin.csproj Tue Nov  8 16:13:24 2011
@@ -77,6 +77,7 @@ under the License.
     <Compile Include="NPanday\VisualStudio\Addin\Commands\AddArtifactsCommand.cs" />
     <Compile Include="NPanday\VisualStudio\Addin\Commands\ButtonCommand.cs" />
     <Compile Include="NPanday\VisualStudio\Addin\Commands\IButtonCommandContext.cs" />
+    <Compile Include="NPanday\VisualStudio\Addin\Commands\ImportSelectedProjectCommand.cs" />
     <Compile Include="NPanday\VisualStudio\Addin\Commands\VSCommandCaptions.cs" />
     <Compile Include="NPanday\VisualStudio\Addin\ConfigureMavenRepositoryForm.cs">
       <SubType>Form</SubType>
@@ -86,7 +87,7 @@ under the License.
     </Compile>
     <Compile Include="NPanday\VisualStudio\Addin\Connect.cs" />
     <Compile Include="NPanday\VisualStudio\Addin\FolderWatcher.cs" />
-    <Compile Include="NPanday\VisualStudio\Addin\Helper\BuiltinCommandFinder.cs" />
+    <Compile Include="NPanday\VisualStudio\Addin\Helper\VisualStudioControlsFinder.cs" />
     <Compile Include="NPanday\VisualStudio\Addin\LoginForm.cs">
       <SubType>Form</SubType>
     </Compile>

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/AddArtifactsCommand.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/AddArtifactsCommand.cs?rev=1199326&r1=1199325&r2=1199326&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/AddArtifactsCommand.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/AddArtifactsCommand.cs Tue Nov  8 16:13:24 2011
@@ -28,13 +28,11 @@ namespace NPanday.VisualStudio.Addin.Com
                     DialogResult result = MessageBox.Show("Pom file not found, do you want to import the projects first before adding Maven Artifact?", "Add Maven Artifact", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                     if (result == DialogResult.Cancel)
                         return;
-                    else if (result == DialogResult.OK)
+
+                    if (result == DialogResult.OK)
                     {
-                        context.ExecuteCommand(VSCommandCaptions.Standard_SaveAll);
+                        context.ExecuteCommand<ImportSelectedProjectCommand>(); ;
 
-                        NPandayImportProjectForm frm = new NPandayImportProjectForm(Application, context.Logger);
-                        frm.SetOutputWindowPane(context.OutputWindowPane);
-                        frm.ShowDialog();
                         currentPom = context.CurrentSelectedProjectPom;
 
                         // if import failed
@@ -44,6 +42,7 @@ namespace NPanday.VisualStudio.Addin.Com
                         }
                     }
                 }
+
                 AddArtifactsForm form = new AddArtifactsForm(project, context.ArtifactContext, context.Logger, currentPom);
                 form.Show();
                 break;

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/ButtonCommandRegistry.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/ButtonCommandRegistry.cs?rev=1199326&r1=1199325&r2=1199326&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/ButtonCommandRegistry.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/ButtonCommandRegistry.cs Tue Nov  8 16:13:24 2011
@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Text;
 using Microsoft.VisualStudio.CommandBars;
 using EnvDTE80;
+using NPanday.Logging;
 
 namespace NPanday.VisualStudio.Addin.Commands
 {
@@ -13,17 +14,25 @@ namespace NPanday.VisualStudio.Addin.Com
     /// </summary>
     public class ButtonCommandRegistry
     {
-        List<CommandBarControl> _keepReferences = new List<CommandBarControl>();
+        readonly List<CommandBarControl> _keepReferences = new List<CommandBarControl>();
 
-        Dictionary<Type, ButtonCommand> _commands = new Dictionary<Type, ButtonCommand>();
+        readonly Dictionary<Type, ButtonCommand> _commands = new Dictionary<Type, ButtonCommand>();
 
         private readonly DTE2 _application;
-        private BuildCommandContext _buildContext;
+        private readonly BuildCommandContext _buildContext;
+        private readonly Logger _logger;
 
-        public ButtonCommandRegistry(DTE2 application, BuildCommandContext buildContext)
+        public ButtonCommandRegistry(DTE2 application, BuildCommandContext buildContext, Logger logger)
         {
             _application = application;
             _buildContext = buildContext;
+            _logger = logger;
+        }
+
+        public void Excecute<TCommand>(IButtonCommandContext context)
+           where TCommand : ButtonCommand, new()
+        {
+            getOrCreate<TCommand>().Execute(context);
         }
 
         public TCommand AddBefore<TCommand>(CommandBarControl barControl)
@@ -32,9 +41,17 @@ namespace NPanday.VisualStudio.Addin.Com
             return Add<TCommand>(barControl.Parent, barControl.Index);
         }
 
+        public TCommand AddAfter<TCommand>(CommandBarControl barControl)
+            where TCommand : ButtonCommand, new()
+        {
+            return Add<TCommand>(barControl.Parent, barControl.Index + 1);
+        }
+
         public TCommand Add<TCommand>(CommandBar bar, int atIndex)
             where TCommand : ButtonCommand, new()
         {
+            _logger.Log(Level.DEBUG, "Adding command " + typeof(TCommand).Name + " on " + bar.Name + " at index " + atIndex);
+
             TCommand command = getOrCreate<TCommand>();
 
             CommandBarButton ctl = (CommandBarButton)
@@ -42,7 +59,7 @@ namespace NPanday.VisualStudio.Addin.Com
                                    System.Type.Missing, System.Type.Missing, atIndex, true);
             ctl.Click += delegate(CommandBarButton btn, ref bool Cancel)
                 {
-                    command.Execute(_buildContext()); 
+                    command.Execute(_buildContext());
                 };
             ctl.Caption = command.Caption;
             ctl.Visible = true;
@@ -63,8 +80,16 @@ namespace NPanday.VisualStudio.Addin.Com
 
             command = new TCommand();
             command.Application = _application;
-            _commands[typeof (TCommand)] = command;
+            _commands[typeof(TCommand)] = command;
             return (TCommand)command;
         }
+
+        public void UnregisterAll()
+        {
+            foreach (var commandBarControl in _keepReferences.ToArray())
+            {
+                _logger.Log(Level.DEBUG, "Removing control " + commandBarControl.Caption + " on " + commandBarControl.HelpContextId + " at index " + commandBarControl.Index);
+            }
+        }
     }
 }

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/IButtonCommandContext.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/IButtonCommandContext.cs?rev=1199326&r1=1199325&r2=1199326&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/IButtonCommandContext.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/IButtonCommandContext.cs Tue Nov  8 16:13:24 2011
@@ -7,11 +7,11 @@ namespace NPanday.VisualStudio.Addin.Com
 {
     public interface IButtonCommandContext
     {
-        FileInfo CurrentSelectedProjectPom { get; }
-        ArtifactContext ArtifactContext { get; }
         Logger Logger { get; }
-        OutputWindowPane OutputWindowPane { get; }
+        ArtifactContext ArtifactContext { get; }
+        FileInfo CurrentSelectedProjectPom { get; }
 
-        bool ExecuteCommand(string barAndCaption);
+        void ExecuteCommand(string visualStudioCommandName);
+        void ExecuteCommand<TCommand>() where TCommand : ButtonCommand, new();
     }
 }

Added: incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/ImportSelectedProjectCommand.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/ImportSelectedProjectCommand.cs?rev=1199326&view=auto
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/ImportSelectedProjectCommand.cs (added)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Commands/ImportSelectedProjectCommand.cs Tue Nov  8 16:13:24 2011
@@ -0,0 +1,18 @@
+namespace NPanday.VisualStudio.Addin.Commands
+{
+    public class ImportSelectedProjectCommand : ButtonCommand
+    {
+        public override string Caption
+        {
+            get { return Messages.MSG_C_IMPORT_PROJECT; }
+        }
+
+        public override void Execute(IButtonCommandContext context)
+        {
+            context.ExecuteCommand("File.SaveAll");
+
+            NPandayImportProjectForm frm = new NPandayImportProjectForm(Application, context.Logger);
+            frm.ShowDialog();
+        }
+    }
+}
\ No newline at end of file

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Connect.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Connect.cs?rev=1199326&r1=1199325&r2=1199326&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Connect.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Connect.cs Tue Nov  8 16:13:24 2011
@@ -414,58 +414,68 @@ namespace NPanday.VisualStudio.Addin
         /// <seealso class='IDTExtensibility2' />
         public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
         {
-            _applicationObject = (DTE2)application;
-            mavenRunner = new MavenRunner(_applicationObject);
-            mavenRunner.RunnerStopped += new EventHandler(mavenRunner_RunnerStopped);
-            _addInInstance = (AddIn)addInInst;
-            EnvDTE.Command command = null;
-            mavenConnected = true;
+            if (_applicationObject == null)
+            {
+                // this should only be done once!
 
-            string paneName = "NPanday Build System";
+                _applicationObject = (DTE2)application;
+                mavenRunner = new MavenRunner(_applicationObject);
+                mavenRunner.RunnerStopped += new EventHandler(mavenRunner_RunnerStopped);
+                _addInInstance = (AddIn)addInInst;
+                mavenConnected = true;
 
-            outputWindowPane = getOrCreateOutputPane(paneName);
+                string paneName = "NPanday Build System";
 
-            OutputWindowPaneHandler handler = new OutputWindowPaneHandler();
-            handler.SetOutputWindowPaneHandler(outputWindowPane);
+                outputWindowPane = getOrCreateOutputPane(paneName);
 
-            logger = NPanday.Logging.Logger.GetLogger("UC");
-            logger.AddHandler(handler);
+                OutputWindowPaneHandler handler = new OutputWindowPaneHandler();
+                handler.SetOutputWindowPaneHandler(outputWindowPane);
 
-            if (_addInInstance.Name.Contains("SNAPSHOT"))
-            {
-                OutputWindowPaneHandler debugHandler = new OutputWindowPaneHandler();
-                debugHandler.SetOutputWindowPaneHandler(getOrCreateOutputPane(paneName + " (DEBUG)"));
-                debugHandler.SetLevel(Level.DEBUG);
-                logger.AddHandler(debugHandler);
-            }
+                logger = NPanday.Logging.Logger.GetLogger("UC");
+                logger.AddHandler(handler);
 
-            logger.Log(Level.DEBUG, "Intialized panes; connect mode is " + connectMode);
+                if (_addInInstance.Name.Contains("SNAPSHOT"))
+                {
+                    OutputWindowPaneHandler debugHandler = new OutputWindowPaneHandler();
+                    debugHandler.SetOutputWindowPaneHandler(getOrCreateOutputPane(paneName + " (DEBUG)"));
+                    debugHandler.SetLevel(Level.DEBUG);
+                    logger.AddHandler(debugHandler);
+                }
 
-            _buttonCommandRegistry = new ButtonCommandRegistry(_applicationObject, buildCommandContext);
+                logger.Log(Level.DEBUG, "Intialized panes");
 
-            _finder = new BuiltinCommandFinder(_applicationObject, logger);
+                _buttonCommandRegistry = new ButtonCommandRegistry(_applicationObject, buildCommandContext, logger);
 
+                _finder = new VisualStudioControlsFinder(_applicationObject, logger);
+                _finder.IndexCommands();
 
-            globalSolutionEvents = (EnvDTE.SolutionEvents)((Events2)_applicationObject.Events).SolutionEvents;
-            globalSolutionEvents.BeforeClosing += new _dispSolutionEvents_BeforeClosingEventHandler(SolutionEvents_BeforeClosing);
-            globalSolutionEvents.Opened += new _dispSolutionEvents_OpenedEventHandler(SolutionEvents_Opened);
-            globalSolutionEvents.ProjectAdded += new _dispSolutionEvents_ProjectAddedEventHandler(SolutionEvents_ProjectAdded);
+                globalSolutionEvents = (EnvDTE.SolutionEvents)((Events2)_applicationObject.Events).SolutionEvents;
+                globalSolutionEvents.BeforeClosing += new _dispSolutionEvents_BeforeClosingEventHandler(SolutionEvents_BeforeClosing);
+                globalSolutionEvents.Opened += new _dispSolutionEvents_OpenedEventHandler(SolutionEvents_Opened);
+                globalSolutionEvents.ProjectAdded += new _dispSolutionEvents_ProjectAddedEventHandler(SolutionEvents_ProjectAdded);
 
-            projectItemsEvents = (EnvDTE.ProjectItemsEvents)((Events2)_applicationObject.Events).ProjectItemsEvents;
-            projectItemsEvents.ItemAdded += new _dispProjectItemsEvents_ItemAddedEventHandler(ProjectItemEvents_ItemAdded);
-            projectItemsEvents.ItemRemoved += new _dispProjectItemsEvents_ItemRemovedEventHandler(ProjectItemEvents_ItemRemoved);
-            projectItemsEvents.ItemRenamed += new _dispProjectItemsEvents_ItemRenamedEventHandler(ProjectItemEvents_ItemRenamed);
+                projectItemsEvents = (EnvDTE.ProjectItemsEvents)((Events2)_applicationObject.Events).ProjectItemsEvents;
+                projectItemsEvents.ItemAdded += new _dispProjectItemsEvents_ItemAddedEventHandler(ProjectItemEvents_ItemAdded);
+                projectItemsEvents.ItemRemoved += new _dispProjectItemsEvents_ItemRemovedEventHandler(ProjectItemEvents_ItemRemoved);
+                projectItemsEvents.ItemRenamed += new _dispProjectItemsEvents_ItemRenamedEventHandler(ProjectItemEvents_ItemRenamed);
+            }
 
+            logger.Log(Level.DEBUG, "OnConnetion() called with connect mode " + connectMode);
+
+            // this is only called once per installation
             if (connectMode == ext_ConnectMode.ext_cm_UISetup)
             {
+                logger.Log(Level.DEBUG, "Registering Startup-Command in Tools-Menu");
 
+                Command toolsMenuCommand = null;
                 object[] contextGUIDS = new object[] { };
                 Commands2 commands = (Commands2)_applicationObject.Commands;
+
                 string toolsMenuName = VSCommandCaptions.Tools;
 
                 //Place the command on the tools menu.
                 //Find the MenuBar command bar, which is the top-level command bar holding all the main menu items:
-                Microsoft.VisualStudio.CommandBars.CommandBar menuBarCommandBar = ((Microsoft.VisualStudio.CommandBars.CommandBars)_applicationObject.CommandBars)["MenuBar"];
+                CommandBar menuBarCommandBar = ((CommandBars)_applicationObject.CommandBars)["MenuBar"];
 
                 //Find the Tools command bar on the MenuBar command bar:
                 CommandBarControl toolsControl = menuBarCommandBar.Controls[toolsMenuName];
@@ -483,16 +493,16 @@ namespace NPanday.VisualStudio.Addin
                 try
                 {
                     //Add a command to the Commands collection:
-                    command = commands.AddNamedCommand2(_addInInstance, "NPandayAddin",
+                    toolsMenuCommand = commands.AddNamedCommand2(_addInInstance, "NPandayAddin",
                         Messages.MSG_D_NPANDAY_BUILD_SYSTEM, Messages.MSG_T_NPANDAY_BUILDSYSTEM, true, 480, ref contextGUIDS,
                         (int)vsCommandStatus.vsCommandStatusSupported + (int)vsCommandStatus.vsCommandStatusEnabled,
                         (int)vsCommandStyle.vsCommandStylePictAndText,
                         vsCommandControlType.vsCommandControlTypeButton);
 
                     //Add a control for the command to the tools menu:
-                    if ((command != null) && (toolsPopup != null))
+                    if ((toolsMenuCommand != null) && (toolsPopup != null))
                     {
-                        command.AddControl(toolsPopup.CommandBar, 1);
+                        toolsMenuCommand.AddControl(toolsPopup.CommandBar, 1);
                     }
                     else
                     {
@@ -510,7 +520,9 @@ namespace NPanday.VisualStudio.Addin
                 }
 
             }
-            else if (connectMode == ext_ConnectMode.ext_cm_AfterStartup)
+
+
+            if (connectMode == ext_ConnectMode.ext_cm_AfterStartup)
             {
                 launchNPandayBuildSystem();
             }
@@ -534,51 +546,43 @@ namespace NPanday.VisualStudio.Addin
 
         private IButtonCommandContext buildCommandContext()
         {
-            return new ButtonCommandContext(this);
+            return new ButtonCommandContext(this, _applicationObject);
         }
 
         private class ButtonCommandContext : IButtonCommandContext
         {
-            private Connect _this;
-            public ButtonCommandContext(Connect connect)
+            private Connect _connect;
+            private readonly DTE2 _application;
+
+            public ButtonCommandContext(Connect connect, DTE2 application)
             {
-                _this = connect;
+                _connect = connect;
+                _application = application;
             }
 
             public FileInfo CurrentSelectedProjectPom
             {
-                get { return _this.CurrentSelectedProjectPom; }
+                get { return _connect.CurrentSelectedProjectPom; }
             }
 
             public ArtifactContext ArtifactContext
             {
-                get { return _this.container; }
+                get { return _connect.container; }
             }
 
             public Logger Logger
             {
-                get { return _this.logger; }
+                get { return _connect.logger; }
             }
 
-            public OutputWindowPane OutputWindowPane
+            public void ExecuteCommand(string visualStudioCommandName)
             {
-                get { return _this.outputWindowPane; }
+                _application.ExecuteCommand(visualStudioCommandName, "");
             }
 
-            public bool ExecuteCommand(string barAndCaption)
+            public void ExecuteCommand<TCommand>() where TCommand : ButtonCommand, new()
             {
-                CommandBarControl[] controls;
-                if (_this._finder.TryFindCommands(barAndCaption, out controls))
-                {
-                    // best guess
-                    controls[0].Execute();
-                    return true;
-                }
-                else
-                {
-                    Logger.Log(Level.SEVERE, "Could not find and execute command: " + barAndCaption);
-                    return false;
-                }
+                _connect._buttonCommandRegistry.Excecute<TCommand>(this);
             }
         }
 
@@ -1158,6 +1162,8 @@ namespace NPanday.VisualStudio.Addin
 
         private void launchNPandayBuildSystem()
         {
+            logger.Log(Level.DEBUG, "launchNPandayBuildSystem() called, _npandayLaunched is " + _npandayLaunched);
+
             try
             {
                 // just to be safe, check if NPanday is already launched
@@ -1183,8 +1189,6 @@ namespace NPanday.VisualStudio.Addin
                 bool placedNPandayMenus = false;
                 bool placedAllProjectMenu = false;
 
-                _finder.IndexCommands();
-
                 CommandBarControl[] barControls;
 
                 if (_finder.TryFindCommands(VSCommandCaptions.AddReference, out barControls))
@@ -1203,19 +1207,7 @@ namespace NPanday.VisualStudio.Addin
                 {
                     foreach (CommandBarControl control in commandBar.Controls)
                     {
-                        if (control.Caption.Equals(Messages.MSG_C_ADD_REFERENCE))
-                        {
-                            CommandBarButton ctl = (CommandBarButton)
-                                                   commandBar.Controls.Add(MsoControlType.msoControlButton,
-                                                                           System.Type.Missing, System.Type.Missing,
-                                                                           control.Index, true);
-                            ctl.Click += new _CommandBarButtonEvents_ClickEventHandler(cbShowAddArtifactsForm_Click);
-                            ctl.Caption = Messages.MSG_C_ADD_MAVEN_ARTIFACT;
-                            ctl.Visible = true;
-                            addReferenceControls.Add(ctl);
-
-                        }
-                        else if (control.Caption.Equals("C&onfiguration Manager..."))
+                        if (control.Caption.Equals("C&onfiguration Manager..."))
                         {
                             //add solution menu
                             createStopBuildMenu(commandBar, control);
@@ -1291,6 +1283,8 @@ namespace NPanday.VisualStudio.Addin
 
             if (_applicationObject.Solution != null)
                 attachReferenceEvent();
+
+            logger.Log(Level.DEBUG, "launchNPandayBuildSystem() exited, _npandayLaunched is " + _npandayLaunched);
         }
 
         CommandBarButton cleanButton;
@@ -1431,7 +1425,6 @@ namespace NPanday.VisualStudio.Addin
 
         CommandBarButton ctlSettingsXml;
         CommandBarButton ctlSignAssembly;
-        CommandBarButton ctlProjectImport;
 
         private void createNPandayMenus(CommandBar commandBar, CommandBarControl control)
         {
@@ -1460,18 +1453,7 @@ namespace NPanday.VisualStudio.Addin
             ctlSignAssembly.Visible = true;
             buildControls.Add(ctlSignAssembly);
 
-            ctlProjectImport = (CommandBarButton)
-            commandBar.Controls.Add(MsoControlType.msoControlButton,
-                                      System.Type.Missing,
-                                      System.Type.Missing,
-                                      control.Index + 1,
-                                      true);
-            ctlProjectImport.Click +=
-                new _CommandBarButtonEvents_ClickEventHandler(cbChangeProjectImportForm_Click);
-            ctlProjectImport.Caption = Messages.MSG_C_IMPORT_PROJECT;
-            ctlProjectImport.Visible = true;
-
-            buildControls.Add(ctlProjectImport);
+            _buttonCommandRegistry.Add<ImportSelectedProjectCommand>(commandBar, control.Index + 1);
         }
 
         CommandBarPopup ctlAll;
@@ -1730,6 +1712,8 @@ namespace NPanday.VisualStudio.Addin
             addReferenceControls = new List<CommandBarButton>();
             buildControls = new List<CommandBarControl>();
 
+            _buttonCommandRegistry.UnregisterAll();
+
             outputWindowPane.Clear();
             mavenRunner.ClearOutputWindow();
 
@@ -2279,40 +2263,6 @@ namespace NPanday.VisualStudio.Addin
         }
         #endregion
 
-        #region cbShowAddArtifactsForm_Click(CommandBarButton,bool)
-        private void cbShowAddArtifactsForm_Click(CommandBarButton btn, ref bool Cancel)
-        {
-            //First selected project
-            foreach (Project project in (Array)_applicationObject.ActiveSolutionProjects)
-            {
-                FileInfo currentPom = this.CurrentSelectedProjectPom;
-                if (currentPom == null || Path.GetDirectoryName(currentPom.FullName) != Path.GetDirectoryName(project.FullName))
-                {
-                    DialogResult result = MessageBox.Show("Pom file not found, do you want to import the projects first before adding Maven Artifact?", "Add Maven Artifact", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
-                    if (result == DialogResult.Cancel)
-                        return;
-                    else if (result == DialogResult.OK)
-                    {
-                        SaveAllDocuments();
-                        NPandayImportProjectForm frm = new NPandayImportProjectForm(_applicationObject, logger);
-                        frm.SetOutputWindowPane(outputWindowPane);
-                        frm.ShowDialog();
-                        currentPom = this.CurrentSelectedProjectPom;
-
-                        // if import failed
-                        if (currentPom == null || Path.GetDirectoryName(currentPom.FullName) != Path.GetDirectoryName(project.FullName))
-                        {
-                            return;
-                        }
-                    }
-                }
-                AddArtifactsForm form = new AddArtifactsForm(project, container, logger, currentPom);
-                form.Show();
-                break;
-            }
-        }
-        #endregion
-
         // by jan ancajas
         #region cbChangeSettingsXmlForm_Click(CommandBarButton, bool)
         private void cbChangeSettingsXmlForm_Click(CommandBarButton btn, ref bool Cancel)
@@ -2341,16 +2291,6 @@ namespace NPanday.VisualStudio.Addin
 
         #endregion
 
-        #region cbChangeProjectImportForm_Click(CommandBarButton, bool)
-        private void cbChangeProjectImportForm_Click(CommandBarButton btn, ref bool Cancel)
-        {
-            SaveAllDocuments();
-            NPandayImportProjectForm frm = new NPandayImportProjectForm(_applicationObject, logger);
-            frm.SetOutputWindowPane(outputWindowPane);
-            frm.ShowDialog();
-        }
-        #endregion
-
         #region OnBeginShutdown(Array)
         /// <summary>Implements the OnBeginShutdown method of the IDTExtensibility2 interface. Receives notification that the host application is being unloaded.</summary>
         /// <param term='custom'>Array of parameters that are host application specific.</param>
@@ -2428,7 +2368,7 @@ namespace NPanday.VisualStudio.Addin
         private CommandBarButton stopButton;
 
         private ButtonCommandRegistry _buttonCommandRegistry;
-        private BuiltinCommandFinder _finder;
+        private VisualStudioControlsFinder _finder;
 
 
         List<WebServicesReferenceWatcher> wsRefWatcher = new List<WebServicesReferenceWatcher>();

Copied: incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Helper/VisualStudioControlsFinder.cs (from r1198920, incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Helper/BuiltinCommandFinder.cs)
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Helper/VisualStudioControlsFinder.cs?p2=incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Helper/VisualStudioControlsFinder.cs&p1=incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Helper/BuiltinCommandFinder.cs&r1=1198920&r2=1199326&rev=1199326&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Helper/BuiltinCommandFinder.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/Helper/VisualStudioControlsFinder.cs Tue Nov  8 16:13:24 2011
@@ -9,20 +9,20 @@ using NPanday.Logging;
 
 namespace NPanday.VisualStudio.Addin.Helper
 {
-    public class BuiltinCommandFinder
+    public class VisualStudioControlsFinder
     {
         private readonly DTE2 _application;
         private readonly Logger _logger;
 
-        IDictionary<string, List<string>> _containingCommandBarsByControlCaption = new Dictionary<string, List<string>>();
-        IDictionary<string, List<string>> _containingCommandBarsByCammandName = new Dictionary<string, List<string>>();
+        readonly IDictionary<string, List<string>> _containingCommandBarsByControlCaption = new Dictionary<string, List<string>>();
+        readonly IDictionary<string, List<string>> _containingCommandBarsByCammandName = new Dictionary<string, List<string>>();
 
-        IDictionary<string, CommandBarControl> _controlByCaptionPath = new Dictionary<string, CommandBarControl>();
-        IDictionary<string, CommandBarControl> _controlByBarAndCommandNamePath = new Dictionary<string, CommandBarControl>();
-        private bool _indexed = false;
+        readonly IDictionary<string, CommandBarControl> _controlByCaptionPath = new Dictionary<string, CommandBarControl>();
+        readonly IDictionary<string, CommandBarControl> _controlByBarAndCommandNamePath = new Dictionary<string, CommandBarControl>();
+        private bool _indexed;
 
 
-        public BuiltinCommandFinder(DTE2 application, Logger logger)
+        public VisualStudioControlsFinder(DTE2 application, Logger logger)
         {
             _application = application;
             _logger = logger;
@@ -117,25 +117,21 @@ namespace NPanday.VisualStudio.Addin.Hel
             ensureIsIndexed();
             CommandBarControl control;
 
-            if (_controlByBarAndCommandNamePath.TryGetValue(buildCommandCaptionPath(commandBar, controlCaptionOrCommandName), out control))
+            var commandNamePath = buildCommandCaptionPath(commandBar, controlCaptionOrCommandName);
+            if (_controlByBarAndCommandNamePath.TryGetValue(commandNamePath, out control))
             {
-                string commandName = getButtonTargetCommand(control).Name;
-                if (!string.IsNullOrEmpty(commandName))
-                {
-                    _logger.Log(Level.DEBUG,
-                                "Control found using it's caption; its better to use the command name: " + commandName);
-                }
                 return control;
             }
 
 
-            if (_controlByCaptionPath.TryGetValue(buildCommandCaptionPath(commandBar, controlCaptionOrCommandName), out control))
+            var commandCaptionPath = buildCommandCaptionPath(commandBar, controlCaptionOrCommandName);
+            if (_controlByCaptionPath.TryGetValue(commandCaptionPath, out control))
             {
                 string commandName = getButtonTargetCommand(control).Name;
                 if (!string.IsNullOrEmpty(commandName))
                 {
                     _logger.Log(Level.DEBUG,
-                                "Control found using it's caption; its better to use the command name: " + commandName);
+                                "Control found using it's caption path '" + commandCaptionPath + "'; its better to use the command name path: " + commandNamePath);
                 }
                 return control;
             }

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/NPandayImportProjectForm.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/NPandayImportProjectForm.cs?rev=1199326&r1=1199325&r2=1199326&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/NPandayImportProjectForm.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPanday/VisualStudio/Addin/NPandayImportProjectForm.cs Tue Nov  8 16:13:24 2011
@@ -43,10 +43,9 @@ namespace NPanday.VisualStudio.Addin
     public partial class NPandayImportProjectForm : Form
     {
         private DTE2 applicationObject;
-        private OutputWindowPane outputWindowPane;
         private NPanday.Logging.Logger logger;
 
-		public static string FilterID(string partial)
+        public static string FilterID(string partial)
         {
             string filtered = string.Empty;
             if (partial.EndsWith("."))
@@ -81,16 +80,16 @@ namespace NPanday.VisualStudio.Addin
             {
                 txtBrowseDotNetSolutionFile.Text = applicationObject.Solution.FileName;
                 try
-                {                    
-                    string companyId = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows NT\CurrentVersion").GetValue("RegisteredOrganization","mycompany").ToString();
+                {
+                    string companyId = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows NT\CurrentVersion").GetValue("RegisteredOrganization", "mycompany").ToString();
                     string groupId = string.Empty;
-                    
+
                     if (companyId != string.Empty)
                     {
-                        groupId = FilterID( ConvertToPascalCase(companyId) )+ ".";
+                        groupId = FilterID(ConvertToPascalCase(companyId)) + ".";
                     }
-                    
-                    groupId = groupId +  FilterID(ConvertToPascalCase(new FileInfo(applicationObject.Solution.FileName).Name.Replace(".sln", "")));
+
+                    groupId = groupId + FilterID(ConvertToPascalCase(new FileInfo(applicationObject.Solution.FileName).Name.Replace(".sln", "")));
                     txtGroupId.Text = groupId;
                     string scmTag = string.Empty;  //getSCMTag(applicationObject.Solution.FileName);
                     string version = "1.0-SNAPSHOT";
@@ -114,7 +113,7 @@ namespace NPanday.VisualStudio.Addin
                         }
                     }
 
-                    if(! string.IsNullOrEmpty(scmTag))
+                    if (!string.IsNullOrEmpty(scmTag))
                     {
                         txtSCMTag.Text = scmTag;
                     }
@@ -153,11 +152,6 @@ namespace NPanday.VisualStudio.Addin
             return strBuild.ToString();
         }
 
-        public void SetOutputWindowPane(OutputWindowPane pane)
-        {
-            outputWindowPane = pane;
-        }
-
         private void btnBrowse_Click(object sender, EventArgs e)
         {
             OpenFileDialog ofd = new OpenFileDialog();
@@ -196,8 +190,8 @@ namespace NPanday.VisualStudio.Addin
                 MessageBox.Show(exception.Message, "NPanday Import Error:", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
         }
-        
-         protected void GeneratePom(String solutionFile, String groupId, String version, String scmTag)
+
+        protected void GeneratePom(String solutionFile, String groupId, String version, String scmTag)
         {
             string warningMsg = string.Empty;
             String mavenVerRegex = "^[0-9]+(" + Regex.Escape(".") + "?[0-9]+){0,3}$";
@@ -205,12 +199,12 @@ namespace NPanday.VisualStudio.Addin
             String singleMavenVer = "[0-9]+";
             bool isMatch = false;
 
-             if (version.Length > 1)
+            if (version.Length > 1)
             {
 
                 if (Regex.IsMatch(version, hasAlpha) && version.ToUpper().EndsWith("-SNAPSHOT"))
                 {
-                    isMatch = Regex.IsMatch(version.ToUpper().Replace("-SNAPSHOT",""), mavenVerRegex, RegexOptions.Singleline);
+                    isMatch = Regex.IsMatch(version.ToUpper().Replace("-SNAPSHOT", ""), mavenVerRegex, RegexOptions.Singleline);
                 }
                 else
                 {
@@ -318,15 +312,15 @@ namespace NPanday.VisualStudio.Addin
                 {
                     message += Environment.NewLine + "Version is empty.";
                 }
-                
+
                 else if (!isMatch)
                 {
                     message += Environment.NewLine + "Version should be in the form major.minor.build.revision-SNAPSHOT";
                 }
-                
+
                 throw new Exception(message);
             }
-            
+
         }
 
         private void btnCancel_Click(object sender, EventArgs e)
@@ -337,7 +331,7 @@ namespace NPanday.VisualStudio.Addin
 
         private void txtSCMTag_TextChanged(object sender, EventArgs e)
         {
-           
+
         }
 
         private void txtSCMTag_Click(object sender, EventArgs e)
@@ -379,7 +373,7 @@ namespace NPanday.VisualStudio.Addin
                 if (refManagers.Count > 0)
                 {
                     refManagerHasError = false;
-                    outputWindowPane.OutputString("\n[INFO] Re-syncing artifacts... ");
+                    logger.Log(Level.INFO, "Re-syncing artifacts... ");
                     try
                     {
                         foreach (IReferenceManager mgr in refManagers)
@@ -390,18 +384,18 @@ namespace NPanday.VisualStudio.Addin
 
                         if (!refManagerHasError)
                         {
-                            outputWindowPane.OutputString(string.Format("done [{0}]", DateTime.Now.ToString("hh:mm tt")));
+                            logger.Log(Level.INFO, string.Format("done [{0}]", DateTime.Now.ToString("hh:mm tt")));
                         }
                     }
                     catch (Exception ex)
                     {
                         if (refManagerHasError)
                         {
-                            outputWindowPane.OutputString(string.Format("\n[WARNING] {0}\n\n{1}\n\n", ex.Message, ex.StackTrace));
+                            logger.Log(Level.WARNING, string.Format("{0}\n\n{1}\n\n", ex.Message, ex.StackTrace));
                         }
                         else
                         {
-                            outputWindowPane.OutputString(string.Format("failed: {0}\n\n{1}\n\n", ex.Message, ex.StackTrace));
+                            logger.Log(Level.SEVERE, (string.Format("failed: {0}\n\n{1}\n\n", ex.Message, ex.StackTrace)));
                         }
                     }
                 }
@@ -412,7 +406,7 @@ namespace NPanday.VisualStudio.Addin
         {
             Solution2 solution = (Solution2)applicationObject.Solution;
             string solutionDir = Path.GetDirectoryName(solution.FullName);
-            bool isFlatSingleModule = (solution.Projects.Count == 1 
+            bool isFlatSingleModule = (solution.Projects.Count == 1
                 && Path.GetExtension(solution.Projects.Item(1).FullName).EndsWith("proj")
                 && solutionDir == Path.GetDirectoryName(solution.Projects.Item(1).FullName));
 
@@ -435,10 +429,10 @@ namespace NPanday.VisualStudio.Addin
                     else
                     {
                         // This check seems too arbitrary - removed for now
-//                        if (solutionDir != Path.GetDirectoryName(projDir))
-//                        {
-//                            throw new Exception("Project Importer failed with project " + project.Name + ". Project directory structure may not be supported: in a multi-module project, the project must be in a direct subdirectory of the solution");
-//                        }
+                        //                        if (solutionDir != Path.GetDirectoryName(projDir))
+                        //                        {
+                        //                            throw new Exception("Project Importer failed with project " + project.Name + ". Project directory structure may not be supported: in a multi-module project, the project must be in a direct subdirectory of the solution");
+                        //                        }
                     }
                 }
             }
@@ -448,7 +442,7 @@ namespace NPanday.VisualStudio.Addin
         void refmanager_OnError(object sender, ReferenceErrorEventArgs e)
         {
             refManagerHasError = true;
-            outputWindowPane.OutputString("\n[WARNING] " + e.Message);
+            logger.Log(Level.WARNING, e.Message);
         }
 
         private const string WEB_PROJECT_KIND_GUID = "{E24C65DC-7377-472B-9ABA-BC803B73C61A}";

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio/src/main/csharp/NPanday/VisualStudio/Logging/OutputWindowPaneHandler.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio/src/main/csharp/NPanday/VisualStudio/Logging/OutputWindowPaneHandler.cs?rev=1199326&r1=1199325&r2=1199326&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio/src/main/csharp/NPanday/VisualStudio/Logging/OutputWindowPaneHandler.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio/src/main/csharp/NPanday/VisualStudio/Logging/OutputWindowPaneHandler.cs Tue Nov  8 16:13:24 2011
@@ -26,44 +26,44 @@ using NPanday.Logging;
 
 namespace NPanday.VisualStudio.Logging
 {
-	/// <summary>
-	/// Description of OutputWindowPaneHandler.
-	/// </summary>
-	public class OutputWindowPaneHandler : IHandler
-	{
-		private Level level;
-		
-		private OutputWindowPane outputWindowPane;
-				
-		public OutputWindowPaneHandler()
-		{
-			this.level = Level.INFO;
-		}
-		
-		public void SetOutputWindowPaneHandler(OutputWindowPane outputWindowPane)
-		{
-			this.outputWindowPane = outputWindowPane;	
-		}
-		
-		[MethodImpl(MethodImplOptions.Synchronized)]
-		public void publish(LogRecord record)
-		{
-			if(record.GetLevel().GetValue() >= level.GetValue())
-			{
-				outputWindowPane.OutputString(record.GetMessage().Trim() + Environment.NewLine);
-			}
-		}
-		
-		[MethodImpl(MethodImplOptions.Synchronized)]
-		public void SetLevel(Level level)
-		{
-			this.level = level;
-		}
-		
-		[MethodImpl(MethodImplOptions.Synchronized)]
-		public Level GetLevel()
-		{
-			return level;
-		}
-	}		
+    /// <summary>
+    /// Description of OutputWindowPaneHandler.
+    /// </summary>
+    public class OutputWindowPaneHandler : IHandler
+    {
+        private Level level;
+
+        private OutputWindowPane outputWindowPane;
+
+        public OutputWindowPaneHandler()
+        {
+            this.level = Level.INFO;
+        }
+
+        public void SetOutputWindowPaneHandler(OutputWindowPane outputWindowPane)
+        {
+            this.outputWindowPane = outputWindowPane;
+        }
+
+        [MethodImpl(MethodImplOptions.Synchronized)]
+        public void publish(LogRecord record)
+        {
+            if (record.GetLevel().GetValue() >= level.GetValue())
+            {
+                outputWindowPane.OutputString(record.ToString().Trim() + Environment.NewLine);
+            }
+        }
+
+        [MethodImpl(MethodImplOptions.Synchronized)]
+        public void SetLevel(Level level)
+        {
+            this.level = level;
+        }
+
+        [MethodImpl(MethodImplOptions.Synchronized)]
+        public Level GetLevel()
+        {
+            return level;
+        }
+    }
 }