/// <summary>
        /// Call corresponding on changed method when the depependency property
        /// for this <seealso cref="ITextBoxController"/> is changed.
        /// </summary>
        /// <param name="d"></param>
        /// <param name="e"></param>
        private static void OnTextBoxControllerChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var fileDoc = d as EdiTextEditor;

            if (fileDoc == null)
            {
                return;
            }
            ////throw new ArgumentNullException("Object of type FileDocument is not available!");

            var txtBox = fileDoc as EdiTextEditor;

            // Remove event handler from old if OldValue is available
            if (e.OldValue is ITextBoxController)
            {
                ITextBoxController oldController = e.OldValue as ITextBoxController;

                elements.Remove(oldController);
                oldController.SelectAll             -= SelectAll;
                oldController.Select                -= Select;
                oldController.ScrollToLineEvent     -= ScrollToLine;
                oldController.CurrentSelectionEvent -= CurrentSelection;
                oldController.BeginChangeEvent      -= EdiTextEditor.BeginChange;
                oldController.EndChangeEvent        -= EdiTextEditor.EndChange;
                oldController.GetSelectedTextEvent  -= EdiTextEditor.GetSelectedText;
            }

            // Add new eventhandler for each event declared in the interface declaration
            if (e.NewValue is ITextBoxController)
            {
                ITextBoxController newController = e.NewValue as ITextBoxController;

                // Sometime the newController is already there but the event handling is not working
                // Remove controller and event handling and install a new one instead.
                TextEditor test;
                if (elements.TryGetValue(newController, out test) == true)
                {
                    elements.Remove(newController);

                    newController.SelectAll             -= EdiTextEditor.SelectAll;
                    newController.Select                -= EdiTextEditor.Select;
                    newController.ScrollToLineEvent     -= EdiTextEditor.ScrollToLine;
                    newController.CurrentSelectionEvent -= EdiTextEditor.CurrentSelection;
                    newController.BeginChangeEvent      -= EdiTextEditor.BeginChange;
                    newController.EndChangeEvent        -= EdiTextEditor.EndChange;
                    newController.GetSelectedTextEvent  -= EdiTextEditor.GetSelectedText;
                }

                elements.Add(newController, txtBox);
                newController.SelectAll             += SelectAll;
                newController.Select                += Select;
                newController.ScrollToLineEvent     += ScrollToLine;
                newController.CurrentSelectionEvent += CurrentSelection;
                newController.BeginChangeEvent      += EdiTextEditor.BeginChange;
                newController.EndChangeEvent        += EdiTextEditor.EndChange;
                newController.GetSelectedTextEvent  += EdiTextEditor.GetSelectedText;
            }
        }
Example #2
0
        private static void GetSelectedText(ITextBoxController sender, out string selectedText)
        {
            if (!elements.TryGetValue(sender, out TextEditor element))
            {
                throw new ArgumentException("Unable to get element for sender in GetSelectedText");
            }

            selectedText = element.SelectedText;
        }
        private static void EndChange(ITextBoxController sender)
        {
            TextEditor element;

              if (!elements.TryGetValue(sender, out element))
            throw new ArgumentException("sender");

              element.EndChange();
        }
Example #4
0
        private static void EndChange(ITextBoxController sender)
        {
            if (!elements.TryGetValue(sender, out TextEditor element))
            {
                throw new ArgumentException("Unable to get element for sender in EndChange");
            }

            element.EndChange();
        }
Example #5
0
        /// <summary>
        /// Scroll to a specific line in the currently displayed editor text
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="line"></param>
        private static void ScrollToLine(ITextBoxController sender, int line)
        {
            if (!elements.TryGetValue(sender, out TextEditor element))
            {
                throw new ArgumentException("Unable to get element from sender for ScrollToline method");
            }

            element.Focus();
            element.ScrollToLine(line);
        }
Example #6
0
        /// <summary>
        /// Select all text in the editor
        /// </summary>
        /// <param name="sender"></param>
        private static void SelectAll(ITextBoxController sender)
        {
            if (!elements.TryGetValue(sender, out TextEditor element))
            {
                throw new ArgumentException("Unable to get element from sender for SelecteAll method");
            }

            element.Focus();
            element.SelectAll();
        }
        private static void SelectAll(ITextBoxController sender)
        {
            TextBox element;

            if (!elements.TryGetValue(sender, out element))
            {
                throw new ArgumentException("sender");
            }
            element.Focus();
            element.SelectAll();
        }
        private static void EndChange(ITextBoxController sender)
        {
            if (!elements.TryGetValue(sender, out TextEditor element))
#pragma warning disable CA1303 // Do not pass literals as localized parameters
            {
                throw new ArgumentException("Unable to get element for sender in EndChange");
            }
#pragma warning restore CA1303 // Do not pass literals as localized parameters

            element.EndChange();
        }
Example #9
0
        private static void EndChange(ITextBoxController sender)
        {
            TextEditor element;

            if (!elements.TryGetValue(sender, out element))
            {
                throw new ArgumentException("sender");
            }

            element.EndChange();
        }
        private static void GetSelectedText(ITextBoxController sender, out string selectedText)
        {
            if (!elements.TryGetValue(sender, out TextEditor element))
#pragma warning disable CA1303 // Do not pass literals as localized parameters
            {
                throw new ArgumentException("Unable to get element for sender in GetSelectedText");
            }
#pragma warning restore CA1303 // Do not pass literals as localized parameters

            selectedText = element.SelectedText;
        }
Example #11
0
        /// <summary>
        /// Scroll to a specific line in the currently displayed editor text
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="line"></param>
        private static void ScrollToLine(ITextBoxController sender, int line)
        {
            TextEditor element;

            if (!elements.TryGetValue(sender, out element))
            {
                throw new ArgumentException("sender");
            }

            element.Focus();
            element.ScrollToLine(line);
        }
        /// <summary>
        /// Select all text in the editor
        /// </summary>
        /// <param name="sender"></param>
        private static void SelectAll(ITextBoxController sender)
        {
            if (!elements.TryGetValue(sender, out TextEditor element))
#pragma warning disable CA1303 // Do not pass literals as localized parameters
            {
                throw new ArgumentException("Unable to get element from sender for SelecteAll method");
            }
#pragma warning restore CA1303 // Do not pass literals as localized parameters

            element.Focus();
            element.SelectAll();
        }
Example #13
0
        private static void GetSelectedText(ITextBoxController sender, out string selectedText)
        {
            TextEditor element;

            selectedText = string.Empty;

            if (!elements.TryGetValue(sender, out element))
            {
                throw new ArgumentException("sender");
            }

            selectedText = element.SelectedText;
        }
Example #14
0
        /// <summary>
        /// Select the text in the editor as indicated by <paramref name="start"/>
        /// and <paramref name="length"/>.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="start"></param>
        /// <param name="length"></param>
        private static void Select(ITextBoxController sender, int start, int length)
        {
            if (!elements.TryGetValue(sender, out TextEditor element))
            {
                throw new ArgumentException("Unable to get element from sender for Select method");
            }

            // element.Focus();

            element.Select(start, length);
            TextLocation loc = element.Document.GetLocation(start);

            element.ScrollTo(loc.Line, loc.Column);
        }
Example #15
0
        /// <summary>
        /// Get the state of the current selection start, end and whether its rectangular or not.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="start"></param>
        /// <param name="length"></param>
        /// <param name="IsRectangularSelection"></param>
        private static void CurrentSelection(ITextBoxController sender,
                                             out int start, out int length, out bool IsRectangularSelection)
        {
            if (!elements.TryGetValue(sender, out TextEditor element))
            {
                throw new ArgumentException("Unable to get Element for sender in CurrentSelection method");
            }

            start  = element.SelectionStart;
            length = element.SelectionLength;
            IsRectangularSelection = element.TextArea.Selection.EnableVirtualSpace;

            // element.TextArea.Selection = RectangleSelection.Create(element.TextArea, start, length);
        }
        /// <summary>
        /// Get the state of the current selection start, end and whether its rectangular or not.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="start"></param>
        /// <param name="length"></param>
        /// <param name="IsRectangularSelection"></param>
        private static void CurrentSelection(ITextBoxController sender,
                                         out int start, out int length, out bool IsRectangularSelection)
        {
            TextEditor element;

              if (!elements.TryGetValue(sender, out element))
            throw new ArgumentException("sender");

              start = element.SelectionStart;
              length = element.SelectionLength;
              IsRectangularSelection = element.TextArea.Selection.EnableVirtualSpace;

              // element.TextArea.Selection = RectangleSelection.Create(element.TextArea, start, length);
        }
        /// <summary>
        /// Select the text in the editor as indicated by <paramref name="start"/>
        /// and <paramref name="length"/>.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="start"></param>
        /// <param name="length"></param>
        private static void Select(ITextBoxController sender, int start, int length)
        {
            if (!elements.TryGetValue(sender, out TextEditor element))
#pragma warning disable CA1303 // Do not pass literals as localized parameters
            {
                throw new ArgumentException("Unable to get element from sender for Select method");
            }
#pragma warning restore CA1303 // Do not pass literals as localized parameters

            // element.Focus();

            element.Select(start, length);
            TextLocation loc = element.Document.GetLocation(start);
            element.ScrollTo(loc.Line, loc.Column);
        }
        /// <summary>
        /// Get the state of the current selection start, end and whether its rectangular or not.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="start"></param>
        /// <param name="length"></param>
        /// <param name="IsRectangularSelection"></param>
        private static void CurrentSelection(ITextBoxController sender,
                                             out int start, out int length, out bool IsRectangularSelection)
        {
            if (!elements.TryGetValue(sender, out TextEditor element))
#pragma warning disable CA1303 // Do not pass literals as localized parameters
            {
                throw new ArgumentException("Unable to get Element for sender in CurrentSelection method");
            }
#pragma warning restore CA1303 // Do not pass literals as localized parameters

            start  = element.SelectionStart;
            length = element.SelectionLength;
            IsRectangularSelection = element.TextArea.Selection.EnableVirtualSpace;

            // element.TextArea.Selection = RectangleSelection.Create(element.TextArea, start, length);
        }
 internal static void SetTextBoxController(UIElement element, ITextBoxController value)
 {
     element.SetValue(DAXEditor.TextBoxControllerProperty, value);
 }
        /// <summary>
        /// Select all text in the editor
        /// </summary>
        /// <param name="sender"></param>
        private static void SelectAll(ITextBoxController sender)
        {
            TextEditor element;
              if (!elements.TryGetValue(sender, out element))
            throw new ArgumentException("sender");

              element.Focus();
              element.SelectAll();
        }
        /// <summary>
        /// Scroll to a specific line in the currently displayed editor text
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="line"></param>
        private static void ScrollToLine(ITextBoxController sender, int line)
        {
            TextEditor element;
              if (!elements.TryGetValue(sender, out element))
            throw new ArgumentException("sender");

              element.Focus();
              element.ScrollToLine(line);
        }
 /// <summary>
 /// Get method for TextBoxController dependency property is set.
 /// </summary>
 /// <param name="element"></param>
 /// <param name="value"></param>
 public static void SetTextBoxController(UIElement element, ITextBoxController value)
 {
     element.SetValue(EdiTextEditor.TextBoxControllerProperty, value);
 }
 public static void SetTextBoxController(UIElement element, ITextBoxController value)
 {
     element.SetValue(TextBoxControllerProperty, value);
 }
        /// <summary>
        /// Select the text in the editor as indicated by <paramref name="start"/>
        /// and <paramref name="length"/>.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="start"></param>
        /// <param name="length"></param>
        private static void Select(ITextBoxController sender, int start, int length)
        {
            TextEditor element;
              if (!elements.TryGetValue(sender, out element))
            throw new ArgumentException("sender");

              // element.Focus();

              element.Select(start, length);
              TextLocation loc = element.Document.GetLocation(start);
              element.ScrollTo(loc.Line, loc.Column);
        }
        private static void GetSelectedText(ITextBoxController sender, out string selectedText)
        {
            TextEditor element;
              selectedText = string.Empty;

              if (!elements.TryGetValue(sender, out element))
            throw new ArgumentException("sender");

              selectedText = element.SelectedText;
        }