public FormsDesignerContent(FormsDesignerExtension parent, OpenedFile sourceFile) : base(parent) { _language = (NetLanguageDescriptor)LanguageDescriptor.GetLanguageByPath(sourceFile.FilePath); if (!(_language is NetLanguageDescriptor)) { throw new ArgumentException("File must be a .NET source file."); } _extensionHost = parent.ExtensionHost; _extensionHost.ControlManager.AppearanceChanged += ControlManager_AppearanceChanged; _propertyContainer = new PropertyContainer(); _serviceContainer = new ServiceContainer(); _surfaceManager = parent.DesignerSurfaceManager; _codeReader = new DesignerCodeReader(_extensionHost, _language); _codeWriter = new DesignerCodeWriter(_language); this.Text = sourceFile.FilePath.FileName + sourceFile.FilePath.Extension + " [Design]"; this.AssociatedFile = sourceFile; this.AssociatedFile.FilePathChanged += AssociatedFile_FilePathChanged; _errorControl = new ErrorControl() { Dock = DockStyle.Fill, }; _errorControl.ReloadRequested += _errorControl_ReloadRequested; SetupDesigner(); }
private void InitializeEditorLayout() { _autoCompleteMenu = new AutocompleteMenu(this.TextBox); var language = LanguageDescriptor.GetLanguageByPath(_file.FilePath); _layoutData = EditorLayoutData.GetLayout(language); if (_layoutData != null) { _autoCompletionMap = _layoutData.CreateAutoCompletionMap(_autoCompleteMenu); } if (_autoCompletionMap != null) { this.TextBox_TextChangedDelayed(this, null); _autoCompleteMenu.Items.SetAutocompleteItems(_itemEnumerator = new InternalAutoCompletionMap(_autoCompletionMap)); _autoCompleteMenu.AppearInterval = 10; _autoCompleteMenu.MinFragmentLength = 1; _autoCompleteMenu.Opening += _autoCompleteMenu_Opening; _autoCompleteMenu.Opened += _autoCompleteMenu_Opened; _autoCompleteMenu.SearchPattern = _autoCompletionMap.SearchPattern; _autoCompleteMenu.Selecting += _autoCompleteMenu_Selecting; } else { _itemEnumerator = new InternalAutoCompletionMap(null); } }
/// <inheritdoc /> protected override TemplateResult CreateFileCore(IFileService fileService, Project parentProject, FilePath filePath) { string @namespace = "MyNamespace"; if (parentProject != null && parentProject is NetProject) { @namespace = (parentProject as NetProject).RootNamespace; var relativePath = filePath.ParentDirectory.GetRelativePath(parentProject); if (!string.IsNullOrEmpty(relativePath)) { @namespace += "." + relativePath.Replace(Path.DirectorySeparatorChar, '.'); } } var language = (LanguageDescriptor.GetLanguageByPath(filePath) as NetLanguageDescriptor); var codeProvider = language.CodeProvider; var fileName = filePath.FileName; using (var stringWriter = new StringWriter()) { // generate source using (var writer = new IndentedTextWriter(stringWriter)) { codeProvider.GenerateCodeFromCompileUnit(CompileUnit, writer, new CodeGeneratorOptions() { BlankLinesBetweenMembers = true, BracingStyle = "C", }); } string source = stringWriter.ToString(); // replace auto generated message. var match = Regex.Match(source, string.Format("{0}[^\r\n]+\r\n[^{0}]", language.CommentPrefix)); if (match.Success) { source = source.Remove(0, match.Index + match.Length); } // VbCodeProvider adds two option statements which should be removed as well because they are specified by default in the project settings. if (language.Name == LanguageDescriptor.GetLanguage <VisualBasicLanguage>().Name) { match = Regex.Match(source, @"Option\s+\w+\s+\w+\s+Option\s+\w+\s+\w+"); if (match.Success) { source = source.Remove(0, match.Index + match.Length); } } // create file instance. source = source.Replace("%folder%", @namespace) .Replace("%file%", (string.IsNullOrEmpty(ObjectName) ? fileName : ObjectName)); var file = fileService.CreateFile(filePath, Encoding.UTF8.GetBytes(source)); return(new TemplateResult(new CreatedFile(file, ExtensionToUse))); } }