Example #1
0
        /// <summary>
        /// Move the selection end to the buffer offset physically below
        /// the current selection end.
        /// </summary>
        /// <remarks>
        /// Move the selection end to the buffer offset physically below
        /// the current selection end.
        /// </remarks>
        public static bool extendDown(android.text.Spannable text, android.text.Layout layout
                                      )
        {
            int end  = getSelectionEnd(text);
            int line = layout.getLineForOffset(end);

            if (line < layout.getLineCount() - 1)
            {
                int move;
                if (layout.getParagraphDirection(line) == layout.getParagraphDirection(line + 1))
                {
                    float h = layout.getPrimaryHorizontal(end);
                    move = layout.getOffsetForHorizontal(line + 1, h);
                }
                else
                {
                    move = layout.getLineStart(line + 1);
                }
                extendSelection(text, move);
                return(true);
            }
            else
            {
                if (end != text.Length)
                {
                    extendSelection(text, text.Length);
                    return(true);
                }
            }
            return(true);
        }
Example #2
0
 private bool deleteLine(android.view.View view, android.text.Editable content)
 {
     if (view is android.widget.TextView)
     {
         android.text.Layout layout = ((android.widget.TextView)view).getLayout();
         if (layout != null)
         {
             int line = layout.getLineForOffset(android.text.Selection.getSelectionStart(content
                                                                                         ));
             int start = layout.getLineStart(line);
             int end   = layout.getLineEnd(line);
             if (end != start)
             {
                 content.delete(start, end);
                 return(true);
             }
         }
     }
     return(false);
 }
Example #3
0
        /// <summary>
        /// Move the cursor to the buffer offset physically below the current
        /// offset, or return false if the cursor is already on the bottom line.
        /// </summary>
        /// <remarks>
        /// Move the cursor to the buffer offset physically below the current
        /// offset, or return false if the cursor is already on the bottom line.
        /// </remarks>
        public static bool moveDown(android.text.Spannable text, android.text.Layout layout
                                    )
        {
            int start = getSelectionStart(text);
            int end   = getSelectionEnd(text);

            if (start != end)
            {
                int min = System.Math.Min(start, end);
                int max = System.Math.Max(start, end);
                setSelection(text, max);
                if (min == 0 && max == text.Length)
                {
                    return(false);
                }
                return(true);
            }
            else
            {
                int line = layout.getLineForOffset(end);
                if (line < layout.getLineCount() - 1)
                {
                    int move;
                    if (layout.getParagraphDirection(line) == layout.getParagraphDirection(line + 1))
                    {
                        float h = layout.getPrimaryHorizontal(end);
                        move = layout.getOffsetForHorizontal(line + 1, h);
                    }
                    else
                    {
                        move = layout.getLineStart(line + 1);
                    }
                    setSelection(text, move);
                    return(true);
                }
            }
            return(false);
        }
Example #4
0
        private static int findEdge(android.text.Spannable text, android.text.Layout layout
                                    , int dir)
        {
            int pt   = getSelectionEnd(text);
            int line = layout.getLineForOffset(pt);
            int pdir = layout.getParagraphDirection(line);

            if (dir * pdir < 0)
            {
                return(layout.getLineStart(line));
            }
            else
            {
                int end = layout.getLineEnd(line);
                if (line == layout.getLineCount() - 1)
                {
                    return(end);
                }
                else
                {
                    return(end - 1);
                }
            }
        }