Browse Source

SD2-1601 (Implement disabled text editor settings): enable "Folding" option.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5415 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Daniel Grunwald 16 years ago
parent
commit
574cf24a63
  1. 26
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs
  2. 30
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs
  3. 16
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/CodeEditorOptions.cs
  4. 3
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/GeneralEditorOptions.xaml

26
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditor.cs

@ -499,29 +499,9 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -499,29 +499,9 @@ namespace ICSharpCode.AvalonEdit.AddIn
}
}
iconBarManager.UpdateClassMemberBookmarks(parseInfo);
UpdateFolding(primaryTextEditorAdapter, parseInfo);
UpdateFolding(secondaryTextEditorAdapter, parseInfo);
}
void UpdateFolding(ITextEditor editor, ParseInformation parseInfo)
{
if (editor != null) {
IServiceContainer container = editor.GetService(typeof(IServiceContainer)) as IServiceContainer;
ParserFoldingStrategy folding = container.GetService(typeof(ParserFoldingStrategy)) as ParserFoldingStrategy;
if (parseInfo == null) {
if (folding != null) {
folding.Dispose();
container.RemoveService(typeof(ParserFoldingStrategy));
}
} else {
if (folding == null) {
TextArea textArea = editor.GetService(typeof(TextArea)) as TextArea;
folding = new ParserFoldingStrategy(textArea);
container.AddService(typeof(ParserFoldingStrategy), folding);
}
folding.UpdateFoldings(parseInfo);
}
}
primaryTextEditor.UpdateParseInformation(parseInfo);
if (secondaryTextEditor != null)
secondaryTextEditor.UpdateParseInformation(parseInfo);
}
public void Dispose()

30
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs

@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.IO;
using System.Linq;
@ -63,6 +64,8 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -63,6 +64,8 @@ namespace ICSharpCode.AvalonEdit.AddIn
base.OnOptionChanged(e);
if (e.PropertyName == "HighlightBrackets")
TextArea_PositionChanged(null, e);
else if (e.PropertyName == "EnableFolding")
UpdateParseInformation();
}
void TextArea_PositionChanged(object sender, EventArgs e)
@ -335,5 +338,32 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -335,5 +338,32 @@ namespace ICSharpCode.AvalonEdit.AddIn
this.Adapter.JumpTo(line, column);
this.Focus();
}
void UpdateParseInformation()
{
UpdateParseInformation(ParserService.GetExistingParseInformation(this.Adapter.FileName));
}
public void UpdateParseInformation(ParseInformation parseInfo)
{
if (!CodeEditorOptions.Instance.EnableFolding)
parseInfo = null;
IServiceContainer container = this.Adapter.GetService(typeof(IServiceContainer)) as IServiceContainer;
ParserFoldingStrategy folding = container.GetService(typeof(ParserFoldingStrategy)) as ParserFoldingStrategy;
if (parseInfo == null) {
if (folding != null) {
folding.Dispose();
container.RemoveService(typeof(ParserFoldingStrategy));
}
} else {
if (folding == null) {
TextArea textArea = this.Adapter.GetService(typeof(TextArea)) as TextArea;
folding = new ParserFoldingStrategy(textArea);
container.AddService(typeof(ParserFoldingStrategy), folding);
}
folding.UpdateFoldings(parseInfo);
}
}
}
}

16
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/CodeEditorOptions.cs

@ -122,8 +122,9 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options @@ -122,8 +122,9 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options
}
}
bool useSmartIndentation;
bool useSmartIndentation = true;
[DefaultValue(true)]
public bool UseSmartIndentation {
get { return useSmartIndentation; }
set {
@ -134,6 +135,19 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options @@ -134,6 +135,19 @@ namespace ICSharpCode.AvalonEdit.AddIn.Options
}
}
bool enableFolding = true;
[DefaultValue(true)]
public bool EnableFolding {
get { return enableFolding; }
set {
if (enableFolding != value) {
enableFolding = value;
OnPropertyChanged("EnableFolding");
}
}
}
public void BindToTextEditor(TextEditor editor)
{
editor.Options = this;

3
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/GeneralEditorOptions.xaml

@ -15,8 +15,7 @@ @@ -15,8 +15,7 @@
IsChecked="{core:OptionBinding local:CodeEditorOptions.WordWrap}"
Content="(TODO: translate) Word-wrap" />
<CheckBox
IsEnabled="False"
IsChecked="True"
IsChecked="{core:OptionBinding local:CodeEditorOptions.EnableFolding}"
Content="{core:Localize Dialog.Options.IDEOptions.TextEditor.General.FoldingCheckBox}" />
<CheckBox
IsEnabled="False"

Loading…
Cancel
Save