Author: brett
Date: Fri Jan 13 15:28:44 2012
New Revision: 1231130

URL: http://svn.apache.org/viewvc?rev=1231130&view=rev
Log:
give better control over the project importer checkbox for Web Deploy 2.0 for 
when it is needed

Modified:
    
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/AddArtifactsForm.cs
    
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/Connect.cs
    
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPandayImportProjectForm.cs

Modified: 
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/AddArtifactsForm.cs
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/AddArtifactsForm.cs?rev=1231130&r1=1231129&r2=1231130&view=diff
==============================================================================
--- 
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/AddArtifactsForm.cs
 (original)
+++ 
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/AddArtifactsForm.cs
 Fri Jan 13 15:28:44 2012
@@ -478,7 +478,7 @@ namespace NPanday.VisualStudio.Addin
                 if (!addVSProjectReference(artifact, text))
                     return;
             }
-            else if (Connect.IsWebProject(project))
+            else if (Connect.IsWebSite(project))
             {
                 if (!addVSWebProjectReference(artifact, text))
                     return;

Modified: 
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/Connect.cs
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/Connect.cs?rev=1231130&r1=1231129&r2=1231130&view=diff
==============================================================================
--- 
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/Connect.cs
 (original)
+++ 
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/Connect.cs
 Fri Jan 13 15:28:44 2012
@@ -522,8 +522,27 @@ namespace NPanday.VisualStudio.Addin
             //stopButton.Enabled = false;
         }
 
+        public static bool IsWebSite(Project project)
+        {
+            return 
project.Kind.Equals(VisualStudioProjectType.GetVisualStudioProjectTypeGuid(VisualStudioProjectTypeEnum.Web_Site),
 StringComparison.OrdinalIgnoreCase);
+        }
+
         public static bool IsWebProject(Project project)
         {
+            // quick check for the right extender, in lieu of full GUID 
availability (see below)
+            try
+            {
+                if (project.Extender["WebApplication"] != null)
+                {
+                    return true;
+                }
+            }
+            catch
+            {
+                // ignore
+            }
+
+            // project Kind is only the main one, so the below is not often 
correct. A more definitive query would be to get all the subtype GUIDs for a 
project (see http://www.mztools.com/articles/2007/mz2007016.aspx)
             return 
project.Kind.Equals(VisualStudioProjectType.GetVisualStudioProjectTypeGuid(VisualStudioProjectTypeEnum.Web_Site),
 StringComparison.OrdinalIgnoreCase) ||
                 
project.Kind.Equals(VisualStudioProjectType.GetVisualStudioProjectTypeGuid(VisualStudioProjectTypeEnum.Web_Application),
 StringComparison.OrdinalIgnoreCase);
         }
@@ -696,7 +715,7 @@ namespace NPanday.VisualStudio.Addin
                 string referenceFolder = string.Empty;
                 string serviceRefFolder = string.Empty;
 
-                if (IsWebProject(project))
+                if (IsWebSite(project))
                 {
                     VsWebSite.VSWebSite website = 
(VsWebSite.VSWebSite)project.Object;
                     referenceFolder = Path.Combine(website.Project.FullName, 
"App_WebReferences");
@@ -1063,7 +1082,7 @@ namespace NPanday.VisualStudio.Addin
         string projectReferenceFolder(Project project)
         {
             string wsPath = null;
-            if (IsWebProject(project))
+            if (IsWebSite(project))
             {
                 VsWebSite.VSWebSite website = 
(VsWebSite.VSWebSite)project.Object;
                 wsPath = Path.Combine(website.Project.FullName, 
"App_WebReferences");
@@ -1466,7 +1485,7 @@ namespace NPanday.VisualStudio.Addin
                     Solution2 solution = 
(Solution2)_applicationObject.Solution;
                     foreach (Project project in solution.Projects)
                     {
-                        if (!IsWebProject(project) && !IsFolder(project) && 
!IsCloudProject(project) && project.Object != null)
+                        if (!IsWebSite(project) && !IsFolder(project) && 
!IsCloudProject(project) && project.Object != null)
                         {
                             IReferenceManager mgr = new ReferenceManager();
                             mgr.OnError += new 
EventHandler<ReferenceErrorEventArgs>(refmanager_OnError);
@@ -1862,7 +1881,7 @@ namespace NPanday.VisualStudio.Addin
                 bool asked = false;
                 foreach (Project project in solution.Projects)
                 {
-                    if (!IsWebProject(project) && 
ProjectHasWebReferences(project))
+                    if (!IsWebSite(project) && 
ProjectHasWebReferences(project))
                     {
                         if (!asked && MessageBox.Show("Do you want to update 
webservice references?", "NPanday Build", MessageBoxButtons.YesNo, 
MessageBoxIcon.Question) != DialogResult.Yes)
                         {

Modified: 
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPandayImportProjectForm.cs
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPandayImportProjectForm.cs?rev=1231130&r1=1231129&r2=1231130&view=diff
==============================================================================
--- 
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPandayImportProjectForm.cs
 (original)
+++ 
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/NPandayImportProjectForm.cs
 Fri Jan 13 15:28:44 2012
@@ -112,8 +112,25 @@ namespace NPanday.VisualStudio.Addin
 
                     txtVersion.Text = version;
 
+                    bool hasWebProjects = false, hasCloudProjects = false;
+                    Solution2 solution = (Solution2)applicationObject.Solution;
+                    foreach (Project project in solution.Projects)
+                    {
+                        if (isWebProject(project))
+                        {
+                            hasWebProjects = true;
+                        }
+                        if (isCloudProject(project))
+                        {
+                            hasCloudProjects = true;
+                        }
+                    }
+                    // disabled if there are cloud projects (must be on), or 
if there are no web projects (not useful)
+                    useMsDeployCheckBox.Enabled = hasWebProjects && 
!hasCloudProjects;
+
                     // TODO: remember this, or have a default
-                    useMsDeployCheckBox.Checked = true;
+                    // force to false if no web projects, force to true if 
cloud projects
+                    useMsDeployCheckBox.Checked = hasWebProjects || 
hasCloudProjects;
                 }
                 catch { /*do nothing*/}
 
@@ -442,26 +459,34 @@ namespace NPanday.VisualStudio.Addin
             log.Warn(e.Message);
         }
 
-        private const string WEB_PROJECT_KIND_GUID = 
"{E24C65DC-7377-472B-9ABA-BC803B73C61A}";
         private static bool isWebProject(Project project)
         {
             // make sure there's a project item
             if (project == null)
                 return false;
 
-            // compare the project kind to the web project guid
-            return (String.Compare(project.Kind, WEB_PROJECT_KIND_GUID, true) 
== 0);
+            // TODO: better location for utility
+            return Connect.IsWebProject(project);
+        }
+
+        private static bool isCloudProject(Project project)
+        {
+            // make sure there's a project item
+            if (project == null)
+                return false;
+
+            // TODO: better location for utility
+            return Connect.IsCloudProject(project);
         }
 
-        private const string FOLDER_KIND_GUID = 
"{66A26720-8FB5-11D2-AA7E-00C04F688DDE}";
         private static bool isFolder(Project project)
         {
             // make sure there's a project item
             if (project == null)
                 return false;
 
-            // compare the project kind to the folder guid
-            return (String.Compare(project.Kind, FOLDER_KIND_GUID, true) == 0);
+            // TODO: better location for utility
+            return Connect.IsFolder(project);
         }
     }
 }


Reply via email to