public void FixtureSetup()
        {
            ProjectContentRegistry r = new ProjectContentRegistry();

            msc = r.Mscorlib;
            swf = r.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms");

            DefaultProjectContent dpc = new DefaultProjectContent();

            dpc.ReferencedContents.Add(msc);
            DefaultCompilationUnit cu = new DefaultCompilationUnit(dpc);

            dummyClass = new DefaultClass(cu, "DummyClass");
            cu.Classes.Add(dummyClass);
            methodForGenericCalls = new DefaultMethod(dummyClass, "DummyMethod");
            dummyClass.Methods.Add(methodForGenericCalls);
        }
        public void FixtureSetup()
        {
            var r = new ProjectContentRegistry();

            msc = r.Mscorlib;
            swf = r.GetProjectContentForReference("System.Windows.Forms", typeof(Form).Module.FullyQualifiedName);

            var dpc = new DefaultProjectContent();

            dpc.ReferencedContents.Add(msc);
            var cu = new DefaultCompilationUnit(dpc);

            dummyClass = new DefaultClass(cu, "DummyClass");
            cu.Classes.Add(dummyClass);
            methodForGenericCalls = new DefaultMethod(dummyClass, "DummyMethod");
            dummyClass.Methods.Add(methodForGenericCalls);
        }
Esempio n. 3
0
        public void SetupIntellisense(TextEditorControl control)
        {
            _control = control;

            control.SetHighlighting((SupportedLanguage == SupportedLanguage.CSharp) ? "C#" : "VBNET");
            control.ShowEOLMarkers   = false;
            control.ShowInvalidLines = false;

            HostCallbackImplementation.Register(this);
            CodeCompletionKeyHandler.Attach(this, control);
            ToolTipProvider.Attach(this, control);

            ProjectContentRegistry = new ProjectContentRegistry();             // Default .NET 2.0 registry

            // Persistence lets SharpDevelop.Dom create a cache file on disk so that
            // future starts are faster.
            // It also caches XML documentation files in an on-disk hash table, thus
            // reducing memory usage.
            try
            {
                if (Settings.Default.CacheFiles)
                {
                    var persistencePath  = Path.Combine(Path.GetTempPath(), ReflexilPersistence);
                    var persistenceCheck = Path.Combine(persistencePath, ReflexilPersistenceCheck);

                    Directory.CreateDirectory(persistencePath);             // Check write/access to directory
                    File.WriteAllText(persistenceCheck, @"Using cache!");   // Check write file rights
                    File.ReadAllText(persistenceCheck);                     // Check read file rights

                    ProjectContentRegistry.ActivatePersistence(persistencePath);
                }
            }
            // ReSharper disable once EmptyGeneralCatchClause
            catch (Exception)
            {
                // don't use cache file
            }

            ProjectContent = new DefaultProjectContent {
                Language = LanguageProperties
            };
            ParseInformation = new ParseInformation(new DefaultCompilationUnit(ProjectContent));
        }
        public void CodeGeneratorMethods()
        {
            ProjectContentRegistry registry = new ProjectContentRegistry();
            IProjectContent        mscorlibProjectContent = registry.Mscorlib;
            IClass collectionClass = mscorlibProjectContent.GetClass("System.Collections.ObjectModel.Collection", 1);

            DefaultProjectContent  projectContent = new DefaultProjectContent();
            DefaultCompilationUnit unit           = new DefaultCompilationUnit(projectContent);
            DefaultClass           c = new DefaultClass(unit, "MyCollection");

            c.BaseTypes.Add(new DefaultReturnType(collectionClass));

            MockProject project = new MockProject();

            ProjectService.CurrentProject = project;

            OverrideMethodsCodeGenerator codeGenerator = new OverrideMethodsCodeGenerator();

            codeGenerator.Initialize(c);

            List <string> methods = new List <string>();

            foreach (object o in codeGenerator.Content)
            {
                methods.Add(o.ToString());
            }

            List <string> expectedMethods = new List <string>();

            expectedMethods.Add("ClearItems");
            expectedMethods.Add("Equals");
            expectedMethods.Add("Finalize");
            expectedMethods.Add("GetHashCode");
            expectedMethods.Add("InsertItem");
            expectedMethods.Add("RemoveItem");
            expectedMethods.Add("SetItem");
            expectedMethods.Add("ToString");

            Assert.AreEqual(expectedMethods.ToArray(), methods.ToArray());
        }
Esempio n. 5
0
        public Solution(Uri location, MappingRegistry registry)
            : base(Path.GetFileName(location.LocalPath), location, true)
        {
            FRegistry = registry;
            Mapper    = new ModelMapper(this, registry);

            // Do not allow rename on add. Rename triggers save/delete in case of PersistentIDContainer.
            Projects = new EditableIDList <IProject>("Projects", false);
            Add(Projects);

            ProjectContentRegistry = new ProjectContentRegistry();
            var tempPath = Shell.TempPath.ConcatPath("ProjectContentRegistry");

            if (!Directory.Exists(tempPath))
            {
                Directory.CreateDirectory(tempPath);
            }
            ProjectContentRegistry.ActivatePersistence(tempPath);

            Projects.Added   += Projects_Added;
            Projects.Removed += Projects_Removed;
        }
Esempio n. 6
0
 public static ProjectContentRegistry GetRegistryForReference(ReferenceProjectItem item)
 {
     if (item is ProjectReferenceProjectItem || item.Project == null)
     {
         return(defaultProjectContentRegistry);
     }
     foreach (ProjectContentRegistryDescriptor registry in registries)
     {
         if (registry.UseRegistryForProject(item.Project))
         {
             ProjectContentRegistry r = registry.Registry;
             if (r != null)
             {
                 return(r);
             }
             else
             {
                 return(defaultProjectContentRegistry);                        // fallback when registry class not found
             }
         }
     }
     return(defaultProjectContentRegistry);
 }
        public void CodeGeneratorProperties()
        {
            ProjectContentRegistry registry = new ProjectContentRegistry();
            IProjectContent        mscorlibProjectContent = registry.Mscorlib;
            IClass exceptionClass = mscorlibProjectContent.GetClass("System.Exception", 0);

            DefaultProjectContent  projectContent = new DefaultProjectContent();
            DefaultCompilationUnit unit           = new DefaultCompilationUnit(projectContent);
            DefaultClass           c = new DefaultClass(unit, "MyException");

            c.BaseTypes.Add(new DefaultReturnType(exceptionClass));

            MockProject project = new MockProject();

            ProjectService.CurrentProject = project;

            OverridePropertiesCodeGenerator codeGenerator = new OverridePropertiesCodeGenerator();

            codeGenerator.Initialize(c);

            List <string> properties = new List <string>();

            foreach (object o in codeGenerator.Content)
            {
                properties.Add(o.ToString());
            }

            List <string> expectedProperties = new List <string>();

            expectedProperties.Add("Data");
            expectedProperties.Add("HelpLink");
            expectedProperties.Add("Message");
            expectedProperties.Add("Source");
            expectedProperties.Add("StackTrace");

            Assert.AreEqual(expectedProperties.ToArray(), properties.ToArray());
        }
Esempio n. 8
0
        void ParserThread()
        {
            //BeginInvoke(new MethodInvoker(delegate { parserThreadLabel.Text = "Loading mscorlib..."; }));
            m_projectcontent.AddReferencedContent(ProjectContentRegistry.Mscorlib);

            // do one initial parser step to enable code-completion while other
            // references are loading
            ParseStep();

            foreach (string assemblyName in GetReferences(false))
            {
                string assemblyNameCopy = assemblyName; // copy for anonymous method
                //BeginInvoke(new MethodInvoker(delegate { parserThreadLabel.Text = "Loading " + assemblyNameCopy + "..."; }));
                IProjectContent referenceProjectContent = ProjectContentRegistry.GetProjectContentForReference(assemblyName, assemblyName);
                ProjectContent.AddReferencedContent(referenceProjectContent);
                if (referenceProjectContent is ReflectionProjectContent)
                {
                    (referenceProjectContent as ReflectionProjectContent).InitializeReferences();
                }
            }
            if (SupportedLanguage == ESupportedLanguage.VisualBasic)
            {
                ProjectContent.DefaultImports = new DefaultUsing(ProjectContent);
                ProjectContent.DefaultImports.Usings.Add("System");
                ProjectContent.DefaultImports.Usings.Add("System.Text");
                ProjectContent.DefaultImports.Usings.Add("Microsoft.VisualBasic");
            }
            //BeginInvoke(new MethodInvoker(delegate { parserThreadLabel.Text = "Ready"; }));

            // Parse the current file every 2 seconds
            while (!IsDisposed)
            {
                ParseStep();

                Thread.Sleep(2000);
            }
        }
Esempio n. 9
0
        static void UnloadReferencedContent(HashSet <IProject> projectsToRefresh, HashSet <IProjectContent> unloadedReferenceContents, ProjectContentRegistry referencedContentRegistry, IProjectContent referencedContent)
        {
            LoggingService.Debug("Unload referenced content " + referencedContent);

            List <RegistryContentPair> otherContentsToUnload = new List <RegistryContentPair>();

            foreach (ProjectContentRegistryDescriptor registry in registries)
            {
                if (registry.IsRegistryLoaded)
                {
                    foreach (IProjectContent pc in registry.Registry.GetLoadedProjectContents())
                    {
                        if (pc.ReferencedContents.Contains(referencedContent))
                        {
                            if (unloadedReferenceContents.Add(pc))
                            {
                                LoggingService.Debug("Mark dependent content for unloading " + pc);
                                otherContentsToUnload.Add(new RegistryContentPair(registry.Registry, pc));
                            }
                        }
                    }
                }
            }

            foreach (IProjectContent pc in ParserService.AllProjectContents)
            {
                IProject project = (IProject)pc.Project;
                if (projectsToRefresh.Contains(project))
                {
                    continue;
                }
                if (pc.ReferencedContents.Remove(referencedContent))
                {
                    LoggingService.Debug("UnloadReferencedContent: Mark project for reparsing " + project.Name);
                    projectsToRefresh.Add(project);
                }
            }

            foreach (RegistryContentPair pair in otherContentsToUnload)
            {
                UnloadReferencedContent(projectsToRefresh, unloadedReferenceContents, pair.Key, pair.Value);
            }

            referencedContentRegistry.UnloadProjectContent(referencedContent);
        }
 public ReflectionLayerTests()
 {
     mscorlib = new ProjectContentRegistry().Mscorlib;
 }
 public void Init()
 {
     _projectContentRegistry = new ProjectContentRegistry();
     ef = new CSharpExpressionFinder(null);
 }
Esempio n. 12
0
        public PDDLTabItem(string moduleName)
        {
            InitializeComponent();
            AddEventHandlerForButtons();

            toolStripContainer1.Visible = false;

            textEditorControl                  = new SharpDevelopTextAreaControl();
            textEditorControl.Dock             = DockStyle.Fill;
            textEditorControl.ContextMenuStrip = EditorContextMenuStrip;
            textEditorControl.BorderStyle      = BorderStyle.Fixed3D;
            textEditorControl.Visible          = true;

            splitContainer1.Panel2.Controls.Add(textEditorControl);

            TabText = "Document " + counter;
            counter++;

            textEditorControl.FileNameChanged += _EditorControl_FileNameChanged;
            textEditorControl.TextChanged     += textEditorControl_TextChanged;
            textEditorControl.Tag              = this;


            Padding       = new Padding(2, 2, 2, 2);
            DockableAreas = DockAreas.Document;

            secondaryViewContentCollection = new SecondaryViewContentCollection(this);
            InitFiles();

            file                       = FileService.CreateUntitledOpenedFile(TabText, new byte[] { });
            file.CurrentView           = this;
            textEditorControl.FileName = file.FileName;
            files.Clear();
            files.Add(file);

            SetSyntaxLanguage(moduleName);

            textEditorControl.Document.FoldingManager.FoldingStrategy = new FoldingStrategy();

            // Highlight the matching bracket or not...
            textEditorControl.ShowMatchingBracket  = true;
            textEditorControl.BracketMatchingStyle = BracketMatchingStyle.Before;


            HostCallbackImplementation.Register(this);
            CodeCompletionKeyHandler.Attach(this, textEditorControl);
            ToolTipProvider.Attach(this, textEditorControl);

            pcRegistry = new ProjectContentRegistry(); // Default .NET 2.0 registry

            // Persistence lets SharpDevelop.Dom create a cache file on disk so that
            // future starts are faster.
            // It also caches XML documentation files in an on-disk hash table, thus
            // reducing memory usage.
            pcRegistry.ActivatePersistence(Path.Combine(Path.GetTempPath(), "CSharpCodeCompletion"));

            myProjectContent          = new DefaultProjectContent();
            myProjectContent.Language = LanguageProperties.CSharp;

            TreeView_Structure.HideSelection = false;
            splitContainer1.SplitterDistance = 100;
            TreeView_Structure.ExpandAll();
            ProblemsNode.ExpandAll();
        }