From 5e4ec9c472a1535149ac7018e614f8eade5a7093 Mon Sep 17 00:00:00 2001 From: Tobias Ibounig Date: Sat, 2 Jun 2012 18:41:04 +0200 Subject: [PATCH] Implemented Options for ColumnRulerRenderer --- .../AvalonEdit.AddIn/Src/CodeEditorView.cs | 44 ++++++++++++------- .../Src/ColumnRulerRenderer.cs | 14 ++---- .../Src/Options/TextViewOptions.xaml | 17 +++++++ 3 files changed, 50 insertions(+), 25 deletions(-) diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs index 394b3d629f..3725757dd7 100755 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/CodeEditorView.cs @@ -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 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 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 } 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); + } } } diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ColumnRulerRenderer.cs b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ColumnRulerRenderer.cs index df29939d8f..c1bbed66c6 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ColumnRulerRenderer.cs +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ColumnRulerRenderer.cs @@ -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 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 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 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); } diff --git a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/TextViewOptions.xaml b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/TextViewOptions.xaml index 7308c0a67f..3e97ec3bb9 100644 --- a/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/TextViewOptions.xaml +++ b/src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/Options/TextViewOptions.xaml @@ -29,5 +29,22 @@ Content="{core:Localize Dialog.Options.IDEOptions.TextEditor.Markers.EnableAnimationsCheckBox}" /> + + + + + + + \ No newline at end of file