public GenerateNamespaceImport GetResult (ProjectDom dom, ICompilationUnit unit, IType type, TextEditorData data)
		{
			GenerateNamespaceImport result;
			if (cache.TryGetValue (type.Namespace, out result))
				return result;
			result = new GenerateNamespaceImport ();
			cache[type.Namespace] = result;
			
			result.InsertNamespace  = false;
			
			DomLocation location = new DomLocation (data.Caret.Line, data.Caret.Column);
			foreach (IUsing u in unit.Usings.Where (u => u.ValidRegion.Contains (location))) {
				if (u.Namespaces.Any (ns => type.Namespace == ns)) {
					result.GenerateUsing = false;
					return result;
				}
			}
			result.GenerateUsing = true;
			string name = type.DecoratedFullName.Substring (type.Namespace.Length + 1);
			
			foreach (IUsing u in unit.Usings.Where (u => u.ValidRegion.Contains (location))) {
				foreach (string ns in u.Namespaces) {
					if (dom.SearchType (unit, unit.GetTypeAt (location), unit.GetMemberAt (location), ns + "." + name) != null) {
						result.GenerateUsing = false;
						result.InsertNamespace = true;
						return result;
					}
				}
			}
			return result;
		}
		public GenerateNamespaceImport GetResult (IUnresolvedFile unit, IType type, MonoDevelop.Ide.Gui.Document doc)
		{
			GenerateNamespaceImport result;
			if (cache.TryGetValue (type.Namespace, out result))
				return result;
			result = new GenerateNamespaceImport ();
			cache[type.Namespace] = result;
			TextEditorData data = doc.Editor;
			
			result.InsertNamespace  = false;
			var loc = new TextLocation (data.Caret.Line, data.Caret.Column);
			foreach (var ns in RefactoringOptions.GetUsedNamespaces (doc, loc)) {
				if (type.Namespace == ns) {
					result.GenerateUsing = false;
					return result;
				}
			}
			
			result.GenerateUsing = true;
			string name = type.Name;
			
			foreach (string ns in RefactoringOptions.GetUsedNamespaces (doc, loc)) {
				if (doc.Compilation.MainAssembly.GetTypeDefinition (ns, name, type.TypeParameterCount) != null) {
					result.GenerateUsing = false;
					result.InsertNamespace = true;
					return result;
				}
			}
			return result;
		}
Example #3
0
        public GenerateNamespaceImport GetResult(ProjectDom dom, ICompilationUnit unit, IType type, TextEditorData data)
        {
            GenerateNamespaceImport result;

            if (cache.TryGetValue(type.Namespace, out result))
            {
                return(result);
            }
            result = new GenerateNamespaceImport();
            cache[type.Namespace] = result;

            result.InsertNamespace = false;

            DomLocation location = new DomLocation(data.Caret.Line, data.Caret.Column);

            foreach (IUsing u in unit.Usings.Where(u => u.ValidRegion.Contains(location)))
            {
                if (u.Namespaces.Any(ns => type.Namespace == ns))
                {
                    result.GenerateUsing = false;
                    return(result);
                }
            }
            result.GenerateUsing = true;
            string name = type.DecoratedFullName.Substring(type.Namespace.Length + 1);

            foreach (IUsing u in unit.Usings.Where(u => u.ValidRegion.Contains(location)))
            {
                foreach (string ns in u.Namespaces)
                {
                    if (dom.SearchType(unit, unit.GetTypeAt(location), location, ns + "." + name) != null)
                    {
                        result.GenerateUsing   = false;
                        result.InsertNamespace = true;
                        return(result);
                    }
                }
            }
            return(result);
        }
        public GenerateNamespaceImport GetResult(IUnresolvedFile unit, IType type, MonoDevelop.Ide.Gui.Document doc)
        {
            GenerateNamespaceImport result;

            if (cache.TryGetValue(type.Namespace, out result))
            {
                return(result);
            }
            result = new GenerateNamespaceImport();
            cache[type.Namespace] = result;
            TextEditorData data = doc.Editor;

            result.InsertNamespace = false;
            var loc = new TextLocation(data.Caret.Line, data.Caret.Column);

            foreach (var ns in RefactoringOptions.GetUsedNamespaces(doc, loc))
            {
                if (type.Namespace == ns)
                {
                    result.GenerateUsing = false;
                    return(result);
                }
            }

            result.GenerateUsing = true;
            string name = type.Name;

            foreach (string ns in RefactoringOptions.GetUsedNamespaces(doc, loc))
            {
                if (doc.Compilation.MainAssembly.GetTypeDefinition(ns, name, type.TypeParameterCount) != null)
                {
                    result.GenerateUsing   = false;
                    result.InsertNamespace = true;
                    return(result);
                }
            }
            return(result);
        }