void ShowImportNamespaceSmartTagMenu(AssemblyNamespaceList assemblyNamespaces)
        {
            _ImportNamespaceItems = GetImportNamespaceSmartTagItems(assemblyNamespaces);
            SynchronizationContext.Current.Post(delegate(object state)
            {
                Point point = CodeRush.SmartTags.GetPopupMenuPoint();
                TextView textView = CodeRush.TextViews.Active;
                if (textView != null)
                    point.Offset(0, textView.LineHeight);

                CodeRush.SmartTags.ShowPopupMenu(point, stImportNamespace);
            }, null);
        }
        static TypeToAssemblyNamespaceMap ScanProjectTypes(List<ProjectElement> projectsToGetTypes)
        {
            TypeToAssemblyNamespaceMap result = new TypeToAssemblyNamespaceMap();
            if (projectsToGetTypes == null)
                return result;

            foreach (ProjectElement projectToGetTypes in projectsToGetTypes)
            {
                ITypeElement[] projectTypes = GetTypesDeclaredInProject(projectToGetTypes);
                if (projectTypes == null)
                    continue;

                foreach (ITypeElement typeElement in projectTypes)
                {
                    if (typeElement == null)
                        continue;

                    if (typeElement.ParentNamespace == null)
                        continue;

                    string typeNamespace = typeElement.ParentNamespace.FullName;
                    if (String.IsNullOrEmpty(typeNamespace))
                        continue;

                    AssemblyNamespaceList namespaceList;
                    if (!result.TryGetValue(typeElement.Name, out namespaceList))
                    {
                        namespaceList = new AssemblyNamespaceList();
                        result.Add(typeElement.Name, namespaceList);
                    }

                    AssemblyNamespace nameSpace = new AssemblyNamespace();
                    nameSpace.ReferenceProject = projectToGetTypes;
                    nameSpace.Namespace = typeNamespace;
                    namespaceList.Add(nameSpace);
                }
            }
            return result;
        }
 // private methods...
 List<ISmartTagItem> GetImportNamespaceSmartTagItems(AssemblyNamespaceList assemblyNamespaces)
 {
     List<ISmartTagItem> result = new List<ISmartTagItem>();
     foreach (AssemblyNamespace assemblyNamespace in assemblyNamespaces)
     {
         ImportNamespaceSmartTagItem item = new ImportNamespaceSmartTagItem(assemblyNamespace);
         item.Execute += delegate(object sender, EventArgs e)
         {
             Project envDteProject = CodeRush.Project.Active;
             if (envDteProject == null)
                 return;
             AssemblyNamespace itemAssemblyNamespace = item.AssemblyNamespace;
             AddReference(envDteProject, itemAssemblyNamespace.Assembly);
             CodeRush.Source.DeclareNamespaceReference(itemAssemblyNamespace.Namespace);
         };
         result.Add(item);
     }
     return result;
 }
        static TypeToAssemblyNamespaceMap ScanAssemblyReferenceTypes(List<AssemblyReference> assemblyReferences)
        {
            TypeToAssemblyNamespaceMap result = new TypeToAssemblyNamespaceMap();
            if (assemblyReferences == null)
                return result;

            foreach (AssemblyReference assemblyReference in assemblyReferences)
            {
                ITypeElement[] types = GetTypesDeclaredInAssembly(assemblyReference);
                if (types == null)
                    continue;

                foreach (ITypeElement typeElement in types)
                {
                    if (typeElement == null)
                        continue;

                    if (typeElement.ParentNamespace == null)
                        continue;

                    string typeNamespace = typeElement.ParentNamespace.FullName;
                    if (String.IsNullOrEmpty(typeNamespace))
                        continue;

                    AssemblyNamespaceList namespaceList;
                    if (!result.TryGetValue(typeElement.Name, out namespaceList))
                    {
                        namespaceList = new AssemblyNamespaceList();
                        result.Add(typeElement.Name, namespaceList);
                    }

                    AssemblyNamespace nameSpace = new AssemblyNamespace();
                    nameSpace.AssemblyFilePath = assemblyReference.FilePath;
                    nameSpace.Namespace = typeNamespace;
                    namespaceList.Add(nameSpace);
                }
            }
            return result;
        }
        static NamespacesResult CombineResults(NamespacesResult first, NamespacesResult second)
        {
            NamespacesResult combinedResult = new NamespacesResult();
            if (first.State == LoadState.TypeFound || second.State == LoadState.TypeFound)
                combinedResult.State = LoadState.TypeFound;

            if (combinedResult.State != LoadState.TypeFound)
                if (first.State == LoadState.FrameworkNotLoaded || second.State == LoadState.FrameworkNotLoaded)
                    combinedResult.State = LoadState.FrameworkNotLoaded;

            AssemblyNamespaceList combinedList = new AssemblyNamespaceList();
            combinedList.AddUnique(first.Namespaces);
            combinedList.AddUnique(second.Namespaces);

            combinedResult.Namespaces = combinedList;

            return combinedResult;
        }
 public void Add(string key, AssemblyNamespaceList namespaceList)
 {
     _CaseSensitiveData.Add(key, namespaceList);
       _CaseInSensitiveData[key] = namespaceList;
 }
 public bool TryGetValue(string key, bool caseSensitive, out AssemblyNamespaceList result)
 {
     Dictionary<string, AssemblyNamespaceList> dictionary = GetDataDictionary(caseSensitive);
       return dictionary.TryGetValue(key, out result);
 }
 public bool TryGetValue(string key, out AssemblyNamespaceList result)
 {
     return TryGetValue(key, true, out result);
 }