Browse Source

Implemented Options for ColumnRulerRenderer

pull/26/merge
Tobias Ibounig 14 years ago committed by Siegfried Pammer
parent
commit
5e4ec9c472
  1. 44
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs
  2. 14
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ColumnRulerRenderer.cs
  3. 17
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/TextViewOptions.xaml

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

@ -47,7 +47,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -47,7 +47,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
CaretReferencesRenderer caretReferencesRenderer;
ContextActionsRenderer contextActionsRenderer;
HiddenDefinition.HiddenDefinitionRenderer hiddenDefinitionRenderer;
ColumnRulerRenderer columnRoulerRenderer;
ColumnRulerRenderer columnRulerRenderer;
public CodeEditorView()
{
@ -57,7 +57,8 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -57,7 +57,8 @@ namespace ICSharpCode.AvalonEdit.AddIn
this.caretReferencesRenderer = new CaretReferencesRenderer(this);
this.contextActionsRenderer = new ContextActionsRenderer(this);
this.hiddenDefinitionRenderer = new HiddenDefinition.HiddenDefinitionRenderer(this);
this.columnRoulerRenderer = new ColumnRulerRenderer(this.TextArea.TextView);
this.columnRulerRenderer = new ColumnRulerRenderer(this.TextArea.TextView);
this.columnRulerRenderer.SetRuler(CodeEditorOptions.Instance.ColumnRulerPosition, ColumnRulerBrush);
UpdateCustomizedHighlighting();
@ -91,17 +92,24 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -91,17 +92,24 @@ namespace ICSharpCode.AvalonEdit.AddIn
protected override void OnOptionChanged(PropertyChangedEventArgs e)
{
base.OnOptionChanged(e);
if (e.PropertyName == "HighlightBrackets")
HighlightBrackets(null, e);
else if (e.PropertyName == "EnableFolding")
UpdateParseInformationForFolding();
else if (e.PropertyName == "HighlightSymbol") {
if (this.caretReferencesRenderer != null)
this.caretReferencesRenderer.ClearHighlight();
}
else if(e.PropertyName == "ShowColumnRuler")
{
switch (e.PropertyName) {
case "HighlightBrackets":
HighlightBrackets(null, e);
break;
case "EnableFolding":
UpdateParseInformationForFolding();
break;
case "HighlightSymbol":
if (this.caretReferencesRenderer != null)
this.caretReferencesRenderer.ClearHighlight();
break;
case "ShowColumnRuler":
case "ColumRulerPosition":
if (CodeEditorOptions.Instance.ShowColumnRuler)
columnRulerRenderer.SetRuler(CodeEditorOptions.Instance.ColumnRulerPosition, ColumnRulerBrush);
else
columnRulerRenderer.SetRuler(-1, ColumnRulerBrush);
break;
}
}
@ -597,12 +605,18 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -597,12 +605,18 @@ namespace ICSharpCode.AvalonEdit.AddIn
}
public static readonly DependencyProperty ColumnRulerBrushProperty =
DependencyProperty.Register("ColumnRulerBrush", typeof(Brush), typeof(TextView),
new FrameworkPropertyMetadata());
DependencyProperty.Register("ColumnRulerBrush", typeof(Brush), typeof(CodeEditorView),
new FrameworkPropertyMetadata(Brushes.LightGray, OnUpdateBrushes));
public Brush ColumnRulerBrush {
get { return (Brush)GetValue(ColumnRulerBrushProperty); }
set { SetValue(ColumnRulerBrushProperty, value); }
}
static void OnUpdateBrushes(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (e.Property.Name == ColumnRulerBrushProperty.Name)
((CodeEditorView)d).columnRulerRenderer.SetRuler(CodeEditorOptions.Instance.ColumnRulerPosition, (Brush)e.NewValue);
}
}
}

14
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ColumnRulerRenderer.cs

@ -16,14 +16,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -16,14 +16,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
{
Pen pen;
int column;
public int Column {
get { return column; }
set { column = value; }
}
TextView textView;
public ColumnRulerRenderer(TextView textView)
@ -31,8 +24,8 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -31,8 +24,8 @@ namespace ICSharpCode.AvalonEdit.AddIn
if (textView == null)
throw new ArgumentNullException("textView");
Pen pen = new Pen(Brushes.LightGray, 1);
pen.Freeze();
this.pen = new Pen(Brushes.LightGray, 1);
this.pen.Freeze();
this.textView = textView;
this.textView.BackgroundRenderers.Add(this);
}
@ -52,6 +45,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -52,6 +45,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
if (pen.Brush != brush) {
this.pen = new Pen(brush, 1);
this.pen.Freeze();
textView.InvalidateLayer(this.Layer);
}
}
@ -64,7 +58,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -64,7 +58,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
System.Windows.Size pixelSize = PixelSnapHelpers.GetPixelSize(textView);
double markerXPos = PixelSnapHelpers.PixelAlign(offset, pixelSize.Width);
Point start = new Point(markerXPos, 0);
Point end = new Point(markerXPos, textView.DocumentHeight);
Point end = new Point(markerXPos, Math.Max(textView.DocumentHeight, textView.ActualHeight));
drawingContext.DrawLine(pen, start, end);
}

17
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/TextViewOptions.xaml

@ -29,5 +29,22 @@ @@ -29,5 +29,22 @@
Content="{core:Localize Dialog.Options.IDEOptions.TextEditor.Markers.EnableAnimationsCheckBox}" />
</widgets:StackPanelWithSpacing>
</GroupBox>
<GroupBox
Header="{core:Localize Dialog.Options.IDEOptions.TextEditor.Markers.MarkersGroupBox}">
<widgets:StackPanelWithSpacing SpaceBetweenItems="5">
<StackPanel Orientation="Horizontal">
<CheckBox
Margin="0, 10"
IsChecked="{core:OptionBinding local:CodeEditorOptions.ShowColumnRuler}"
Content="{core:Localize Dialog.Options.IDEOptions.TextEditor.Markers.VerticalRulerCheckBox}" />
<Label
Margin="0, 5"
Content="{core:Localize Dialog.Options.IDEOptions.TextEditor.Markers.AtRowLabel}" />
<widgets:NumericUpDown
Margin="0, 5"
Value="{core:OptionBinding local:CodeEditorOptions.ColumnRulerPosition}" />
</StackPanel>
</widgets:StackPanelWithSpacing>
</GroupBox>
</StackPanel>
</gui:OptionPanel>
Loading…
Cancel
Save