/// <summary>
        /// Shows SaveFileDialog to specify new document location.
        /// </summary>
        /// <returns>New document.</returns>
        public ITextEditorDocument New()
        {
            Microsoft.Win32.SaveFileDialog sfd = new Microsoft.Win32.SaveFileDialog();

            if (sfd.ShowDialog() == false)
            {
                return null;
            }
            TextEditorDocument document = new TextEditorDocument(sfd.FileName);
            return new TextEditorDocumentProxy(document);
        }
        void AddImplementInterfaceCommandItems(List <ToolStripItem> subItems, IClass c, bool explicitImpl)
        {
            CodeGenerator codeGen  = c.ProjectContent.Language.CodeGenerator;
            IAmbience     ambience = AmbienceService.CurrentAmbience;

            ambience.ConversionFlags = ConversionFlags.None;
            foreach (IReturnType rt in c.BaseTypes)
            {
                IClass interf = rt.GetUnderlyingClass();
                if (interf != null && interf.ClassType == ClassType.Interface)
                {
                    IReturnType  rtCopy = rt;                    // copy for access by anonymous method
                    EventHandler eh     = delegate {
                        TextEditorDocument d = new TextEditorDocument(GetDocument(c));
                        if (d != null)
                        {
                            codeGen.ImplementInterface(rtCopy, d, explicitImpl, c);
                        }
                        ParserService.ParseCurrentViewContent();
                    };
                    subItems.Add(new MenuCommand(ambience.Convert(interf), eh));
                }
            }
        }
Beispiel #3
0
        public override void Run()
        {
            TaskView view = (TaskView)Owner;

            foreach (Task t in new List <Task>(view.SelectedTasks))
            {
                FxCopTaskTag tag = t.Tag as FxCopTaskTag;
                if (tag == null)
                {
                    continue;
                }
                CodeGenerator codegen = tag.ProjectContent.Language.CodeGenerator;
                if (codegen == null)
                {
                    continue;
                }
                FilePosition p;
                if (tag.MemberName == null)
                {
                    p = GetAssemblyAttributeInsertionPosition(tag.ProjectContent);
                }
                else
                {
                    p = GetPosition(tag.ProjectContent, tag.TypeName, tag.MemberName);
                }
                if (p.CompilationUnit == null || p.FileName == null || p.Line <= 0)
                {
                    continue;
                }
                IViewContent viewContent            = FileService.OpenFile(p.FileName);
                ITextEditorControlProvider provider = viewContent as ITextEditorControlProvider;
                if (provider == null)
                {
                    continue;
                }
                IDocument document = new TextEditorDocument(provider.TextEditorControl.Document);
                if (p.Line >= document.TotalNumberOfLines)
                {
                    continue;
                }
                IDocumentLine line        = document.GetLine(p.Line);
                StringBuilder indentation = new StringBuilder();
                for (int i = line.Offset; i < document.TextLength; i++)
                {
                    char c = document.GetCharAt(i);
                    if (c == ' ' || c == '\t')
                    {
                        indentation.Append(c);
                    }
                    else
                    {
                        break;
                    }
                }
                string code = codegen.GenerateCode(CreateSuppressAttribute(p.CompilationUnit, tag), indentation.ToString());
                if (!code.EndsWith("\n"))
                {
                    code += Environment.NewLine;
                }
                document.Insert(line.Offset, code);
                provider.TextEditorControl.ActiveTextAreaControl.Caret.Line = p.Line - 1;
                provider.TextEditorControl.ActiveTextAreaControl.ScrollToCaret();
                document.UpdateView();
                TaskService.Remove(t);
                ParserService.ParseViewContent(viewContent);
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="TextEditorDocument"/> class.
 /// </summary>
 /// <param name="fileName">Path to document.</param>
 public TextEditorDocumentProxy(TextEditorDocument realDocument)
     : base()
 {
     this.realDocument = realDocument;
 }
        private ITextEditorDocument readWithReaderStrategy(string filename, FileReaderStrategy strategy)
        {
            string[] text = strategy.Read();
            TextEditorDocument result = new TextEditorDocument(filename);
            foreach (string line in text)
            {
                result.Lines.Add(line);
            }

            return new TextEditorDocumentProxy(result);
        }