// // // // // $Revision$ // using System; using System.IO; using System.Text; using ICSharpCode.AvalonEdit.Highlighting; using ICSharpCode.AvalonEdit.Utils; using ICSharpCode.Core; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Gui; namespace ICSharpCode.AvalonEdit.AddIn { public class AvalonEditDisplayBinding : IDisplayBinding { static bool addInHighlightingDefinitionsRegistered; internal static void RegisterAddInHighlightingDefinitions() { WorkbenchSingleton.AssertMainThread(); if (!addInHighlightingDefinitionsRegistered) { foreach (AddInTreeSyntaxMode syntaxMode in AddInTree.BuildItems(SyntaxModeDoozer.Path, null, false)) { syntaxMode.Register(HighlightingManager.Instance); } addInHighlightingDefinitionsRegistered = true; } } public bool CanCreateContentForFile(string fileName) { return true; } public IViewContent CreateContentForFile(OpenedFile file) { return new AvalonEditViewContent(file); } } public class ChooseEncodingDisplayBinding : IDisplayBinding { public bool CanCreateContentForFile(string fileName) { return true; } public IViewContent CreateContentForFile(OpenedFile file) { ChooseEncodingDialog dlg = new ChooseEncodingDialog(); dlg.Owner = WorkbenchSingleton.MainWindow; using (Stream stream = file.OpenRead()) { using (StreamReader reader = FileReader.OpenStream(stream, FileService.DefaultFileEncoding.GetEncoding())) { reader.Peek(); // force reader to auto-detect encoding dlg.Encoding = reader.CurrentEncoding; } } if (dlg.ShowDialog() == true) { return new AvalonEditViewContent(file, dlg.Encoding); } else { return null; } } } }