PageRenderTime 18ms CodeModel.GetById 12ms app.highlight 3ms RepoModel.GetById 1ms app.codeStats 0ms

/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeModelContext.cs

https://github.com/ajadex/SharpDevelop
C# | 65 lines | 37 code | 8 blank | 20 comment | 4 complexity | 8ddaab54847404a010af4f956fe213b0 MD5 | raw file
 1// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team
 2// 
 3// Permission is hereby granted, free of charge, to any person obtaining a copy of this
 4// software and associated documentation files (the "Software"), to deal in the Software
 5// without restriction, including without limitation the rights to use, copy, modify, merge,
 6// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
 7// to whom the Software is furnished to do so, subject to the following conditions:
 8// 
 9// The above copyright notice and this permission notice shall be included in all copies or
10// substantial portions of the Software.
11// 
12// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
13// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
15// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
16// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
17// DEALINGS IN THE SOFTWARE.
18
19using System;
20using ICSharpCode.SharpDevelop.Project;
21using ICSharpCode.SharpDevelop.Refactoring;
22
23namespace ICSharpCode.PackageManagement.EnvDTE
24{
25	public class CodeModelContext
26	{
27		ICodeGenerator codeGenerator;
28		IDocumentLoader documentLoader;
29		
30		public Project DteProject { get; set; }
31		public IProject CurrentProject { get; set; }
32		
33		public IDocumentLoader DocumentLoader {
34			get {
35				if (documentLoader == null) {
36					documentLoader = new DocumentLoader();
37				}
38				return documentLoader;
39			}
40			
41			set { documentLoader = value; }
42		}
43		
44		public ICodeGenerator CodeGenerator {
45			get {
46				if (codeGenerator == null) {
47					codeGenerator = new ThreadSafeCodeGenerator(CurrentProject.LanguageBinding.CodeGenerator);
48				}
49				return codeGenerator;
50			}
51		}
52		
53		/// <summary>
54		/// Specifies the file name if this code model context refers to
55		/// </summary>
56		public string FilteredFileName { get; set; }
57		
58		public CodeModelContext WithFilteredFileName(string fileName)
59		{
60			var newContext = (CodeModelContext)MemberwiseClone();
61			newContext.FilteredFileName = fileName;
62			return newContext;
63		}
64	}
65}