From: Chris M. <cm...@us...> - 2006-05-02 21:33:45
|
User: cmicali Date: 06/05/02 14:33:43 Modified: etc/andromda-dotnet/AndroMDA.VS80AddIn AndroMDA VS2005 Add-In Readme.rtf etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn AndroMDA.VS80AddIn.csproj Connect.cs MDASolutionManager.cs VS80AddIn.cs etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Commands AboutCommand.cs AddInCommandBase.cs OpenModelCommand.cs ResyncCommand.cs RunSchemaExportCommand.cs StopCommand.cs etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Utils VSSolutionUtils.cs Added: etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Commands AndroMDALogoCommand.cs GenerateCodeCommand.cs Log: - Updated toolbar so if show/hide button settings are changed the buttons will show/hide immediately w/o a restart of visual studio - Added schema export button to toolbar - Added better error handling when projects are not available on solution load - Added better tooltips to the buttons on the tool bar - Added AndroMDA text when no buttons are visible on the tool bar Revision Changes Path No revision No revision No revision No revision 1.6 +4 -1 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn.csproj Index: AndroMDA.VS80AddIn.csproj =================================================================== RCS file: /cvsroot/andromdaplugins/plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn.csproj,v retrieving revision 1.5 retrieving revision 1.6 diff -u -w -r1.5 -r1.6 --- AndroMDA.VS80AddIn.csproj 2 May 2006 04:47:10 -0000 1.5 +++ AndroMDA.VS80AddIn.csproj 2 May 2006 21:33:42 -0000 1.6 @@ -34,6 +34,8 @@ </PropertyGroup> <ItemGroup> <Reference Include="Extensibility, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> + <Reference Include="Microsoft.VisualStudio.VCProject, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> + <Reference Include="Microsoft.VisualStudio.VCProjectEngine, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <Reference Include="System" /> <Reference Include="System.Data" /> <Reference Include="System.Design" /> @@ -48,11 +50,12 @@ </Compile> <Compile Include="Commands\AboutCommand.cs" /> <Compile Include="Commands\AddInCommandBase.cs" /> + <Compile Include="Commands\AndroMDALogoCommand.cs" /> <Compile Include="Commands\RunSchemaExportCommand.cs" /> <Compile Include="Commands\ReloadMDAConfigCommand.cs" /> <Compile Include="Commands\OpenModelCommand.cs" /> <Compile Include="Commands\ResyncCommand.cs" /> - <Compile Include="Commands\RunMavenCommand.cs" /> + <Compile Include="Commands\GenerateCodeCommand.cs" /> <Compile Include="Commands\RunSolutionWizardCommand.cs" /> <Compile Include="Commands\StopCommand.cs" /> <Compile Include="ConfigFile.cs" /> 1.2 +3 -0 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Connect.cs Index: Connect.cs =================================================================== RCS file: /cvsroot/andromdaplugins/plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Connect.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- Connect.cs 18 Apr 2006 16:14:43 -0000 1.1 +++ Connect.cs 2 May 2006 21:33:42 -0000 1.2 @@ -12,6 +12,7 @@ using System.Resources; using System.Reflection; using System.Globalization; +using System.Runtime.InteropServices; #endregion @@ -19,6 +20,8 @@ { /// <summary>The object for implementing an Add-in.</summary> /// <seealso class='IDTExtensibility2' /> + /// + [GuidAttribute("C40038DE-DA1D-11DA-9B41-B622A1EF5492"), ProgId("AndroMDA.VS80AddIn.Connect")] public class Connect : IDTExtensibility2, IDTCommandTarget { 1.4 +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.3 retrieving revision 1.4 diff -u -w -r1.3 -r1.4 --- MDASolutionManager.cs 2 May 2006 04:47:10 -0000 1.3 +++ MDASolutionManager.cs 2 May 2006 21:33:42 -0000 1.4 @@ -11,6 +11,7 @@ using EnvDTE; using EnvDTE80; using Microsoft.VisualStudio.CommandBars; +using Microsoft.VisualStudio.VCProject; using System.Resources; using System.Reflection; using System.Globalization; @@ -283,16 +284,34 @@ public void RunSchemaExport() { + try + { if (m_projectProperties["maven.andromda.schemaexport.available"].ToLower().Trim() == "true") { - string schemaExportProject = FileUtils.CleanDirectory(m_projectProperties["maven.andromda.schemaexport.available"]); - string schamaExportName = FileUtils.GetFilename(schemaExportProject); + string schemaExportProjectPath = FileUtils.CleanDirectory(m_projectProperties["maven.andromda.schemaexport.dir"]); string solutionName = VSSolutionUtils.GetSolutionName(m_applicationObject.Solution); - - //m_applicationObject.ActiveWindow.ite - m_applicationObject.ExecuteCommand("Debug.StartNewInstance", "WindowsApplication1.SchemaExport"); - + Project schemaExportProject = VSSolutionUtils.FindProjectByDirectory(schemaExportProjectPath, m_applicationObject.Solution); + if (schemaExportProject != null) + { + string schamaExportName = FileUtils.GetFilename(schemaExportProject.FileName).Replace(".csproj", string.Empty); + // Activate the solution explorer window + m_applicationObject.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate(); + // Grab the UIHierarchy object for the schema export project + UIHierarchyItem item = ((UIHierarchy)m_applicationObject.ActiveWindow.Object).GetItem(solutionName + "\\" + schamaExportName); + // Select the project + item.Select(vsUISelectionType.vsUISelectionTypeSelect); + // Execute the Debug.StartNewInstance command + m_applicationObject.ExecuteCommand("ClassViewContextMenus.ClassViewProject.Debug.Startnewinstance", string.Empty); + return; + } } + AddInUtils.ShowWarning("The schema export for this project could not be found.\nPlease ensure the following variables are set correctly in mda\\project.properties\n\nmaven.andromda.schemaexport.available: true\nmaven.andromda.schemaexport.dir: <path to schema export project>"); + } + catch (Exception e) + { + AddInUtils.ShowError(e.Message); + } + } #endregion 1.5 +24 -8 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.4 retrieving revision 1.5 diff -u -w -r1.4 -r1.5 --- VS80AddIn.cs 2 May 2006 04:47:10 -0000 1.4 +++ VS80AddIn.cs 2 May 2006 21:33:42 -0000 1.5 @@ -51,6 +51,7 @@ private ArrayList m_commands = null; + private AndroMDALogoCommand m_logoCommand = null; #endregion #region Properties @@ -77,6 +78,8 @@ m_commands.Clear(); // Add commands to the add-in + m_logoCommand = new AndroMDALogoCommand(); + m_commands.Add(m_logoCommand); m_commands.Add(new ReloadMDAConfigCommand()); m_commands.Add(new RunSolutionWizardCommand()); m_commands.Add(new RunMavenCommand()); @@ -317,6 +320,18 @@ return null; } + public bool AreAnyToolbarButtonsVisible() + { + foreach (AddInCommandBase cmd in m_commands) + { + if (cmd.IsToolbarButtonVisible) + { + return true; + } + } + return false; + } + public void QueryStatus(string commandName, vsCommandStatusTextWanted neededText, ref vsCommandStatus status, ref object commandText) { if (m_connected && neededText == vsCommandStatusTextWanted.vsCommandStatusTextWantedNone) @@ -324,6 +339,7 @@ AddInCommandBase cmd = GetCommand(commandName); if (cmd != null) { + m_logoCommand.Visible = !AreAnyToolbarButtonsVisible(); cmd.QueryStatus(commandName, neededText, ref status, ref commandText); if (!IsAvailable) { 1.3 +10 -10 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Commands/AboutCommand.cs Index: AboutCommand.cs =================================================================== RCS file: /cvsroot/andromdaplugins/plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Commands/AboutCommand.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -u -w -r1.2 -r1.3 --- AboutCommand.cs 2 May 2006 04:47:10 -0000 1.2 +++ AboutCommand.cs 2 May 2006 21:33:43 -0000 1.3 @@ -18,10 +18,18 @@ { public AboutCommand() { - Init("About", "About", "About AndroMDA", 487, AddInCommandBase.AddInCommandType.AlwaysEnabled); + Init("About", "About", "About AndroMDA Add-In", 487, AddInCommandBase.AddInCommandType.AlwaysEnabled); m_isStartOfGroup = true; } + public override bool IsToolbarButtonVisible + { + get + { + return base.IsToolbarButtonVisible && m_addInSettings.ShowAboutButton; + } + } + public override void Exec(vsCommandExecOption executeOption, ref object varIn, ref object varOut) { Dialogs.AboutDialog a = new Dialogs.AboutDialog(); @@ -34,15 +42,7 @@ base.QueryStatus(commandName, neededText, ref status, ref commandText); if (!m_addInSettings.ShowAboutButton) { - status = vsCommandStatus.vsCommandStatusSupported | vsCommandStatus.vsCommandStatusInvisible; - } - } - - public override void AddToToolbar(CommandBar toolbar, int position) - { - if (m_addInSettings.ShowAboutButton) - { - base.AddToToolbar(toolbar, position); + status = status | vsCommandStatus.vsCommandStatusInvisible; } } 1.4 +29 -3 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Commands/AddInCommandBase.cs Index: AddInCommandBase.cs =================================================================== RCS file: /cvsroot/andromdaplugins/plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Commands/AddInCommandBase.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -u -w -r1.3 -r1.4 --- AddInCommandBase.cs 2 May 2006 04:47:10 -0000 1.3 +++ AddInCommandBase.cs 2 May 2006 21:33:43 -0000 1.4 @@ -20,7 +20,7 @@ #region Enumerations - public enum AddInCommandType { AlwaysEnabled, NoMDAAlwaysEnabled, MDADisabled, MDAAlwaysEnabled, MDAEnabledWhileMavenNotRunning, MDAEnabledWhileMavenRunning } + public enum AddInCommandType { AlwaysEnabled, AlwaysDisabled, NoMDAAlwaysEnabled, MDADisabled, MDAAlwaysEnabled, MDAEnabledWhileMavenNotRunning, MDAEnabledWhileMavenRunning } #endregion @@ -43,6 +43,8 @@ protected AddInCommandType m_commandType = AddInCommandType.AlwaysEnabled; + protected vsCommandStatus m_lastStatus = vsCommandStatus.vsCommandStatusUnsupported; + #endregion #region Properties @@ -62,6 +64,16 @@ get { return m_commandBarButton; } } + public virtual bool IsToolbarButtonVisible + { + get + { + bool enabled = (m_lastStatus & vsCommandStatus.vsCommandStatusEnabled) > 0; + bool supported = (m_lastStatus & vsCommandStatus.vsCommandStatusSupported) > 0; + return enabled && supported; + } + } + #endregion public AddInCommandBase() @@ -101,6 +113,15 @@ if (m_command != null) { m_commandBarButton = (CommandBarButton)m_command.AddControl(toolbar, position); + m_commandBarButton.TooltipText = m_toolTip; + if (m_bitmapNumber == -1) + { + m_commandBarButton.Style = MsoButtonStyle.msoButtonCaption; + } + else + { + m_commandBarButton.Style = MsoButtonStyle.msoButtonIconAndCaption; + } if (m_isStartOfGroup) { m_commandBarButton.BeginGroup = true; @@ -143,9 +164,13 @@ { if (commandName == m_fullName && neededText == vsCommandStatusTextWanted.vsCommandStatusTextWantedNone) { + switch (m_commandType) { + case AddInCommandType.AlwaysDisabled: + status = (vsCommandStatus)vsCommandStatus.vsCommandStatusSupported; + break; case AddInCommandType.AlwaysEnabled: status = (vsCommandStatus)vsCommandStatus.vsCommandStatusSupported | vsCommandStatus.vsCommandStatusEnabled; break; @@ -211,6 +236,7 @@ } break; } + m_lastStatus = status; } } 1.4 +10 -10 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Commands/OpenModelCommand.cs Index: OpenModelCommand.cs =================================================================== RCS file: /cvsroot/andromdaplugins/plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Commands/OpenModelCommand.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -u -w -r1.3 -r1.4 --- OpenModelCommand.cs 2 May 2006 04:47:10 -0000 1.3 +++ OpenModelCommand.cs 2 May 2006 21:33:43 -0000 1.4 @@ -19,9 +19,10 @@ { public OpenModelCommand() { - Init("OpenUMLModel", "Open Model", "Open Model", 589, AddInCommandBase.AddInCommandType.MDAAlwaysEnabled); + Init("OpenModel", "Open Model", "Open Model", 589, AddInCommandBase.AddInCommandType.MDAAlwaysEnabled); m_isStartOfGroup = true; } + public override void Exec(vsCommandExecOption executeOption, ref object varIn, ref object varOut) { string magicDrawPath = m_addInSettings.MagicDrawPath; @@ -51,21 +52,20 @@ } } - - public override void QueryStatus(string commandName, vsCommandStatusTextWanted neededText, ref vsCommandStatus status, ref object commandText) + public override bool IsToolbarButtonVisible { - base.QueryStatus(commandName, neededText, ref status, ref commandText); - if (!m_addInSettings.ShowOpenModelButton) + get { - status = vsCommandStatus.vsCommandStatusSupported | vsCommandStatus.vsCommandStatusInvisible; + return base.IsToolbarButtonVisible && m_addInSettings.ShowOpenModelButton; } } - public override void AddToToolbar(CommandBar toolbar, int position) + public override void QueryStatus(string commandName, vsCommandStatusTextWanted neededText, ref vsCommandStatus status, ref object commandText) { - if (m_addInSettings.ShowOpenModelButton) + base.QueryStatus(commandName, neededText, ref status, ref commandText); + if (!m_addInSettings.ShowOpenModelButton) { - base.AddToToolbar(toolbar, position); + status = status | vsCommandStatus.vsCommandStatusInvisible; } } 1.2 +1 -1 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Commands/ResyncCommand.cs Index: ResyncCommand.cs =================================================================== RCS file: /cvsroot/andromdaplugins/plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Commands/ResyncCommand.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- ResyncCommand.cs 18 Apr 2006 16:14:44 -0000 1.1 +++ ResyncCommand.cs 2 May 2006 21:33:43 -0000 1.2 @@ -17,7 +17,7 @@ { public ResyncCommand() { - Init("Resync", "Resync", "Resync generated files", 37, AddInCommandBase.AddInCommandType.MDAEnabledWhileMavenNotRunning); + Init("ResyncFiles", "Resync", "Resync Generated Files", 37, AddInCommandBase.AddInCommandType.MDAEnabledWhileMavenNotRunning); } public override void Exec(vsCommandExecOption executeOption, ref object varIn, ref object varOut) 1.2 +9 -10 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Commands/RunSchemaExportCommand.cs Index: RunSchemaExportCommand.cs =================================================================== RCS file: /cvsroot/andromdaplugins/plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Commands/RunSchemaExportCommand.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- RunSchemaExportCommand.cs 2 May 2006 04:47:10 -0000 1.1 +++ RunSchemaExportCommand.cs 2 May 2006 21:33:43 -0000 1.2 @@ -20,7 +20,7 @@ { public RunSchemaExportCommand() { - Init("RunSchemaExport", "Export Schema", "Export Schema", 4005, AddInCommandBase.AddInCommandType.MDAEnabledWhileMavenNotRunning); + Init("ExportSchema", "Export Schema", "Export Database Schema", 4005, AddInCommandBase.AddInCommandType.MDAEnabledWhileMavenNotRunning); m_isStartOfGroup = true; } @@ -29,21 +29,20 @@ m_solutionManager.RunSchemaExport(); } - - public override void QueryStatus(string commandName, vsCommandStatusTextWanted neededText, ref vsCommandStatus status, ref object commandText) + public override bool IsToolbarButtonVisible { - base.QueryStatus(commandName, neededText, ref status, ref commandText); - if (!m_addInSettings.ShowSchemaExportButton) + get { - status = vsCommandStatus.vsCommandStatusSupported | vsCommandStatus.vsCommandStatusInvisible; + return base.IsToolbarButtonVisible && m_addInSettings.ShowSchemaExportButton; } } - public override void AddToToolbar(CommandBar toolbar, int position) + public override void QueryStatus(string commandName, vsCommandStatusTextWanted neededText, ref vsCommandStatus status, ref object commandText) { - if (m_addInSettings.ShowSchemaExportButton) + base.QueryStatus(commandName, neededText, ref status, ref commandText); + if (!m_addInSettings.ShowSchemaExportButton) { - base.AddToToolbar(toolbar, position); + status = vsCommandStatus.vsCommandStatusSupported | vsCommandStatus.vsCommandStatusInvisible; } } 1.2 +1 -1 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Commands/StopCommand.cs Index: StopCommand.cs =================================================================== RCS file: /cvsroot/andromdaplugins/plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Commands/StopCommand.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- StopCommand.cs 18 Apr 2006 16:14:44 -0000 1.1 +++ StopCommand.cs 2 May 2006 21:33:43 -0000 1.2 @@ -18,7 +18,7 @@ public StopCommand() { - Init("Stop", "Stop", "Stop the currently running operation", 1670, AddInCommandBase.AddInCommandType.MDAEnabledWhileMavenRunning); + Init("StopGeneration", "Stop", "Stop Code Generation", 1670, AddInCommandBase.AddInCommandType.MDAEnabledWhileMavenRunning); } public override void Exec(vsCommandExecOption executeOption, ref object varIn, ref object varOut) 1.1 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Commands/AndroMDALogoCommand.cs Index: AndroMDALogoCommand.cs =================================================================== // AndroMDA Visual Studio 2005 Add-In // (c)2006 Sapient Corporation #region Using statements using System; using Microsoft.VisualStudio.CommandBars; using EnvDTE; #endregion namespace AndroMDA.VS80AddIn { public class AndroMDALogoCommand : AddInCommandBase { private bool m_visible = true; public bool Visible { get { return m_visible; } set { m_visible = value; } } public override bool IsToolbarButtonVisible { get { return false; } } public AndroMDALogoCommand() { Init("AndroMDALogo", "AndroMDA", "AndroMDA", -1, AddInCommandBase.AddInCommandType.AlwaysDisabled); m_isStartOfGroup = true; } public override void Exec(vsCommandExecOption executeOption, ref object varIn, ref object varOut) { } public override void QueryStatus(string commandName, vsCommandStatusTextWanted neededText, ref vsCommandStatus status, ref object commandText) { base.QueryStatus(commandName, neededText, ref status, ref commandText); if (!Visible) { status = vsCommandStatus.vsCommandStatusSupported | vsCommandStatus.vsCommandStatusInvisible; } } } } 1.1 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Commands/GenerateCodeCommand.cs Index: GenerateCodeCommand.cs =================================================================== // AndroMDA Visual Studio 2005 Add-In // (c)2006 Sapient Corporation #region Using statements using System; using System.Collections.Generic; using System.Text; using EnvDTE; #endregion namespace AndroMDA.VS80AddIn { public class RunMavenCommand : AddInCommandBase { public RunMavenCommand() { Init("GenerateCode", "Generate", "Generate Code From Model", 2138, AddInCommandBase.AddInCommandType.MDAEnabledWhileMavenNotRunning); } public override void Exec(vsCommandExecOption executeOption, ref object varIn, ref object varOut) { m_solutionManager.RunMaven(); } } } 1.2 +14 -0 plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Utils/VSSolutionUtils.cs Index: VSSolutionUtils.cs =================================================================== RCS file: /cvsroot/andromdaplugins/plugins/etc/andromda-dotnet/AndroMDA.VS80AddIn/AndroMDA.VS80AddIn/Utils/VSSolutionUtils.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -u -w -r1.1 -r1.2 --- VSSolutionUtils.cs 18 Apr 2006 16:14:47 -0000 1.1 +++ VSSolutionUtils.cs 2 May 2006 21:33:43 -0000 1.2 @@ -111,5 +111,19 @@ return null; } + public static Project FindProjectByDirectory(string projectPath, Solution currentSolution) + { + //string path = FileUtils.GetPathFromFilename(projectPath); + if (!currentSolution.IsOpen || projectPath == string.Empty) return null; + foreach (Project p in currentSolution.Projects) + { + if (FileUtils.GetPathFromFilename(p.FileName) == projectPath) + { + return p; + } + } + return null; + } + } } |