[svn] r6540: vs-plugin/trunk/Nemerle.VsIntegration: NemerleFileNode.cs Project/NemerleProjectNode.cs Utils...

VladD2 svnadmin at nemerle.org
Wed Aug 16 22:23:40 CEST 2006


Log:
Some refactoring.

Author: VladD2
Date: Wed Aug 16 22:23:33 2006
New Revision: 6540

Modified:
   vs-plugin/trunk/Nemerle.VsIntegration/NemerleFileNode.cs
   vs-plugin/trunk/Nemerle.VsIntegration/Project/NemerleProjectNode.cs
   vs-plugin/trunk/Nemerle.VsIntegration/Utils.cs

Modified: vs-plugin/trunk/Nemerle.VsIntegration/NemerleFileNode.cs
==============================================================================
--- vs-plugin/trunk/Nemerle.VsIntegration/NemerleFileNode.cs	(original)
+++ vs-plugin/trunk/Nemerle.VsIntegration/NemerleFileNode.cs	Wed Aug 16 22:23:33 2006
@@ -106,6 +106,7 @@
 		{
 			if (selectionChangedListener != null)
 				selectionChangedListener.Dispose();
+
 			return base.Close();
 		}
 
@@ -115,14 +116,17 @@
 		/// <returns></returns>
 		public override object GetAutomationObject()
 		{
-			return
-				new OANemerleFileItem(ProjectMgr.GetAutomationObject() as OAProject, this);
+			return new OANemerleFileItem((OAProject)ProjectMgr.GetAutomationObject(), this);
 		}
 
 		// Called since the FileNode.ImageIndex returns -1 by default.
-		public override object GetIconHandle(bool open) {
-			if(this.FileName.ToLower().EndsWith(GlobalConstants.FileExtension))
-				return PackageUtilities.GetIntPointerFromImage(NemerleProjectNode.NemerleImageList.Images[(int)GlobalConstants.ImageListIndex.NemerleSource]);
+		public override object GetIconHandle(bool open)
+		{
+			if(FileName.EndsWith(GlobalConstants.FileExtension, StringComparison.InvariantCultureIgnoreCase))
+				return PackageUtilities.GetIntPointerFromImage(
+					NemerleProjectNode.NemerleImageList.Images[
+					(int)GlobalConstants.ImageListIndex.NemerleSource]);
+
 			return base.GetIconHandle(open);
 		}
 
@@ -157,8 +161,8 @@
 						NemerleProjectFileConstants.MainFile, GetRelativePath());
 					return VSConstants.S_OK;
 				}
-			return
-				base.ExecCommandOnNode(guidCmdGroup, cmd, nCmdexecopt, pvaIn, pvaOut);
+
+			return base.ExecCommandOnNode(guidCmdGroup, cmd, nCmdexecopt, pvaIn, pvaOut);
 		}
 
 		/// <summary>
@@ -187,6 +191,7 @@
 					result |= QueryStatusResult.SUPPORTED | QueryStatusResult.ENABLED;
 					return VSConstants.S_OK;
 				}
+
 			return base.QueryStatusOnNode(guidCmdGroup, cmd, pCmdText, ref result);
 		}
 

Modified: vs-plugin/trunk/Nemerle.VsIntegration/Project/NemerleProjectNode.cs
==============================================================================
--- vs-plugin/trunk/Nemerle.VsIntegration/Project/NemerleProjectNode.cs	(original)
+++ vs-plugin/trunk/Nemerle.VsIntegration/Project/NemerleProjectNode.cs	Wed Aug 16 22:23:33 2006
@@ -12,6 +12,7 @@
 using VSLangProj;
 using System.Reflection;
 using System.Windows.Forms;
+using Microsoft.VisualStudio.Shell;
 
 namespace Nemerle.VsIntegration.Project
 {
@@ -19,15 +20,10 @@
 	public class NemerleProjectNode : ProjectNode, IVsProjectSpecificEditorMap2
 	{
 		NemerlePackage _package;
-		static ImageList _nemerleImageList;
+		static ImageList _nemerleImageList = LoadProjectImajeList();
 		
 		#region ctor
 
-		static NemerleProjectNode()
-        {
-            NemerleImageList = Utilities.GetImageList(typeof(NemerleProjectNode).Assembly.GetManifestResourceStream("Nemerle.VsIntegration.Resources.NemerleImageList.bmp"));
-        }
-
 		public NemerleProjectNode(NemerlePackage pkg)
 		{
 			FileTemplateProcessor = new TokenProcessorEx();
@@ -40,20 +36,22 @@
 			InitializeCATIDs();
 		}
 
-		// Needed since ProjectNode.ImageIndex returns ProjectNode.ImageName.Application.
-		public override int ImageIndex {
-			get { return HierarchyNode.NoImage; }
-		}
+		private static ImageList LoadProjectImajeList()
+		{
+			// Make the name of resource bitmap.
+			// It's bitmap used in project ImageList.
+			Type type = typeof(NemerleProjectNode);
+			Assembly resourceAssembly = type.Assembly;
+			// "<assambly name>.Resources.NemerleImageList.bmp"
+			string resourceName = Utils.GetModuleName(type) + "."
+				+ GlobalConstants.ProjectImageListName;
 
-		// We have to override ImageIndex to be called.
-		public override object GetIconHandle(bool open) {
-			return Microsoft.VisualStudio.Shell.PackageUtilities.GetIntPointerFromImage(NemerleProjectNode.NemerleImageList.Images[(int)GlobalConstants.ImageListIndex.NemerleProject]);
-		}
+			Stream imageStream = resourceAssembly.GetManifestResourceStream(
+				resourceName);
 
-		private static string GetModuleName(Type type)
-		{
-			string fileName = Path.GetFileNameWithoutExtension(type.Module.Name);
-			return fileName;
+			Trace.Assert(imageStream != null);
+
+			return Utilities.GetImageList(imageStream);
 		}
 
 		/// <summary>
@@ -167,15 +165,22 @@
 		/// <summary>
 		/// Nemerle specific project images.
 		/// </summary>
-		public static ImageList NemerleImageList {
+		public static ImageList NemerleImageList
+		{
 			get { return _nemerleImageList; }
-			set { _nemerleImageList = value; }
 		}
 
 		#endregion
 
 		#region overridden properties
 
+		// Needed since ProjectNode.ImageIndex returns 
+		// ProjectNode.ImageName.Application.
+		public override int ImageIndex
+		{
+			get { return HierarchyNode.NoImage; }
+		}
+
 		public override Guid ProjectGuid
 		{
 			 get { return typeof(NemerleProjectFactory).GUID; }
@@ -193,6 +198,14 @@
 
 		#region overridden methods
 
+		// We have to override ImageIndex to be called.
+		public override object GetIconHandle(bool open)
+		{
+			return PackageUtilities.GetIntPointerFromImage(
+				NemerleProjectNode.NemerleImageList.Images[
+				(int)GlobalConstants.ImageListIndex.NemerleProject]);
+		}
+
 		public override int Close()
 		{
 			if (null != Site)

Modified: vs-plugin/trunk/Nemerle.VsIntegration/Utils.cs
==============================================================================
--- vs-plugin/trunk/Nemerle.VsIntegration/Utils.cs	(original)
+++ vs-plugin/trunk/Nemerle.VsIntegration/Utils.cs	Wed Aug 16 22:23:33 2006
@@ -13,6 +13,12 @@
 	{
 		static class Utils
 		{
+			public static string GetModuleName(Type type)
+			{
+				string fileName = Path.GetFileNameWithoutExtension(type.Module.Name);
+				return fileName;
+			}
+
 			public static T GetService<T>(IServiceProvider provider)
 					where T : class
 			{



More information about the svn mailing list