Class RMTextEditor

  • All Implemented Interfaces:
    RMPropertyChanger, RMTypes, RMTextTypes, java.beans.PropertyChangeListener, java.lang.CharSequence, java.lang.Cloneable, java.util.EventListener
    Direct Known Subclasses:
    RMEditorTextEditor

    public class RMTextEditor
    extends RMObject
    implements RMTextTypes, java.lang.CharSequence, java.beans.PropertyChangeListener
    This class provides all of the event and drawing code necessary to edit text in the form of an RMXString (separated from an actual UI Component).
    • Constructor Summary

      Constructors 
      Constructor Description
      RMTextEditor()
      Creates a plain text editor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      char charAt​(int anIndex)
      Returns the individual character at given index.
      void copy()
      Copies the current selection onto the clipboard.
      RMTextLayout createLayout()
      Creates a configured text layout used to layout text.
      void cut()
      Copies the current selection onto the clip board, then deletes the current selection.
      void delete()
      Deletes the current selection.
      void delete​(int aStart, int anEnd, boolean doUpdateSelection)
      Deletes the given range of chars.
      void deleteForward()
      Deletes the character in front of the insertion point.
      void deleteToLineEnd()
      Deletes the characters from the insertion point to the end of the line.
      RMTypes.AlignX getAlignmentX()
      Returns the alignment for current selection.
      java.awt.geom.Rectangle2D getBounds()
      Returns the text editor bounds.
      int getCharIndex​(java.awt.geom.Point2D aPoint)
      Returns the char index for given point in text coordinate space.
      float getCharSpacing()
      Returns the character spacing of the current selection or cursor.
      RMColor getColor()
      Returns the color of the current selection or cursor.
      RMFont getFont()
      Returns the font of the current selection or cursor.
      double getFontScale()
      Returns the scale applied to text when editing.
      RMFormat getFormat()
      Returns the format of the current selection or cursor.
      double getHeight()
      Returns the bounds height.
      float getHeightToFit()
      Returns the height needed to display all characters.
      RMParagraph getInputParagraph()
      Returns the paragraph of the current selection or cursor position.
      RMTextStyle getInputStyle()
      Returns the text style applied to any input characters.
      RMTextLayout getLayout()
      Returns the configured text layout used to layout text.
      RMTextLine getLine​(int anIndex)
      Returns the individual line at given index.
      int getLineCount()
      Returns the number of lines.
      RMTextLine getLineForChar​(int anIndex)
      Returns the line index for the given character index.
      float getLineGap()
      Returns the line gap for current selection.
      float getLineHeightMax()
      Returns the maximum line height for a line of text (even if font size would dictate higher).
      float getLineHeightMin()
      Returns the min line height for current selection.
      float getLineSpacing()
      Returns the line spacing for current selection.
      RMXString.Outline getOutline()
      Returns whether current selection is outlined.
      RMTextSel getSel()
      Returns the text editor selection.
      RMTextSel getSel​(double p1x, double p1y, double p2x, double p2y)
      Returns the selected range that would result from the given two points.
      int getSelAnchor()
      Returns the character index of the last explicitly selected char (confined to the bounds of the selection).
      int getSelEnd()
      Returns the character index of the end of the text selection.
      java.awt.geom.GeneralPath getSelPath()
      Returns the path for the current selection.
      int getSelStart()
      Returns the character index of the start of the text selection.
      RMTextLine getSelStartLine()
      Returns the line at selection start.
      java.awt.geom.GeneralPath getSpellingPath()
      Returns a path for misspelled word underlining.
      java.lang.String getString()
      Returns the plain string of the xstring being edited.
      RMUndoer getUndoer()
      Returns the undoer.
      protected java.lang.Object getUndoSelection()
      Returns a selection object for undoer.
      double getWidth()
      Returns the bounds width.
      float getWidthToFit()
      Returns the width needed to display all characters.
      double getX()
      Returns the bounds x.
      RMXString getXString()
      Returns the xstring that is being edited.
      double getY()
      Returns the bounds y.
      boolean isHyphenating()
      Returns whether editor tries to hyphenate wrapped words.
      boolean isSelEmpty()
      Returns whether the selection is empty.
      boolean isSpellChecking()
      Returns whether editor is doing check-as-you-type spelling.
      boolean isUnderlined()
      Returns whether current selection is underlined.
      void keyBackward​(boolean isShiftDown)
      Moves the insertion point backward a character (or if a range is selected, moves to beginning of range).
      void keyDown​(boolean shiftDown)
      Moves the insertion point down a line, trying preserve distance from beginning of line.
      void keyForward​(boolean isShiftDown)
      Moves the insertion point forward a character (or if a range is selected, moves to end of range).
      protected void keyPressed​(java.awt.event.KeyEvent anEvent)
      Handle keyPressed.
      protected void keyTyped​(java.awt.event.KeyEvent anEvent)
      Handle keyTyped.
      void keyUp​(boolean shiftDown)
      Moves the insertion point up a line, trying to preserve distance from beginning of line.
      int length()
      Returns the number of characters in the text string.
      void mouseDragged​(java.awt.event.MouseEvent anEvent)
      Handles mouse dragged.
      void mousePressed​(java.awt.event.MouseEvent anEvent)
      Handles mouse pressed.
      void mouseReleased​(java.awt.event.MouseEvent anEvent)
      Handles mouse released.
      void paint​(java.awt.Graphics2D g)
      Paints a given layout in a given graphics.
      void paste()
      Pasts the current clipboard data over the current selection.
      void processKeyEvent​(java.awt.event.KeyEvent anEvent)
      Handles key events.
      void propertyChange​(java.beans.PropertyChangeEvent anEvent)
      Called when characters where added, updated or deleted.
      void redo()
      Called to redo the last undo operation in the editor.
      void relayout()
      Tells editor to rebuild layout.
      void replace​(RMXString anXString)
      Replaces the current selection with the given xstring.
      void replace​(RMXString anXString, int aStart, int anEnd, boolean doUpdateSelection)
      Replaces the current selection with the given xstring.
      void replace​(java.lang.String aString)
      Replaces the current selection with the given string.
      void replace​(java.lang.String aString, int aStart, int anEnd, boolean doUpdateSelection)
      Replaces the current selection with the given string.
      void replace​(java.lang.String aString, RMTextStyle aStyle, int aStart, int anEnd, boolean doUpdateSelection)
      Replaces the current selection with the given string.
      void replace​(java.lang.String aString, java.util.Map theAttrs, int aStart, int anEnd, boolean doUpdateSelection)
      Replaces the current selection with the given string.
      void selectAll()
      Selects all the characters in the text editor.
      void selectLineEnd()
      Moves the insertion point to next newline or text end.
      void selectLineStart()
      Moves the insertion point to the beginning of line.
      void setAlignmentX​(RMTypes.AlignX anAlignmentX)
      Sets the alignment for current selection.
      void setBounds​(double anX, double aY, double aWidth, double aHeight)
      Sets the text editor bounds.
      void setBounds​(java.awt.geom.Rectangle2D aRect)
      Sets the text editor bounds.
      void setCharSpacing​(float aValue)
      Returns the character spacing of the current selection or cursor.
      void setColor​(RMColor color)
      Sets the color of the current selection or cursor.
      void setFont​(RMFont font)
      Sets the font of the current selection or cursor.
      void setFontScale​(double aScale)
      Sets the scale applied to text when editing.
      void setFormat​(RMFormat aFormat)
      Sets the format of the current selection or cursor, after trying to expand the selection to encompass currently selected, @-sign delineated key.
      void setInputAttribute​(java.lang.String aKey, java.lang.Object aValue)
      Sets the attributes that are applied to current selection or newly typed chars.
      void setInputParagraph​(RMParagraph ps)
      Sets the paragraph of the current selection or cursor position.
      void setLineGap​(float aHeight)
      Sets the line gap for current selection.
      void setLineHeightMax​(float aHeight)
      Sets the maximum line height for a line of text (even if font size would dictate higher).
      void setLineHeightMin​(float aHeight)
      Sets the min line height for current selection.
      void setLineSpacing​(float aHeight)
      Sets the line spacing for current selection.
      void setOutline​(RMXString.Outline anOutline)
      Sets whether current selection is outlined.
      void setSel​(int newStartEnd)
      Sets the character index of the text cursor.
      void setSel​(int aStart, int anEnd)
      Sets the character index of the start and end of the text selection.
      void setSel​(int aStart, int anEnd, int anAnchor)
      Sets the character index of the start and end of the text selection.
      void setSubscript()
      Sets current selection to subscript.
      void setSuperscript()
      Sets current selection to superscript.
      void setUnderlined​(boolean aFlag)
      Sets whether current selection is underlined.
      void setXString​(RMXString aString)
      Sets the xstring that is to be edited.
      java.lang.CharSequence subSequence​(int aStart, int anEnd)
      Returns a new CharSequence that is a subsequence of this sequence.
      void undo()
      Called to undo the last edit operation in the editor.
      protected void undoerAddPropertyChange​(java.beans.PropertyChangeEvent anEvent)
      Adds a property change to undoer.
      protected void undoerSaveChanges()
      Saves changes to undoer.
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.lang.CharSequence

        chars, codePoints, toString
    • Field Detail

      • isSpellChecking

        public static boolean isSpellChecking
      • isHyphenating

        public static boolean isHyphenating
    • Constructor Detail

      • RMTextEditor

        public RMTextEditor()
        Creates a plain text editor.
    • Method Detail

      • getXString

        public RMXString getXString()
        Returns the xstring that is being edited.
      • setXString

        public void setXString​(RMXString aString)
        Sets the xstring that is to be edited.
      • getBounds

        public java.awt.geom.Rectangle2D getBounds()
        Returns the text editor bounds.
      • setBounds

        public void setBounds​(java.awt.geom.Rectangle2D aRect)
        Sets the text editor bounds.
      • setBounds

        public void setBounds​(double anX,
                              double aY,
                              double aWidth,
                              double aHeight)
        Sets the text editor bounds.
      • getX

        public double getX()
        Returns the bounds x.
      • getY

        public double getY()
        Returns the bounds y.
      • getWidth

        public double getWidth()
        Returns the bounds width.
      • getHeight

        public double getHeight()
        Returns the bounds height.
      • length

        public int length()
        Returns the number of characters in the text string.
        Specified by:
        length in interface java.lang.CharSequence
      • charAt

        public char charAt​(int anIndex)
        Returns the individual character at given index.
        Specified by:
        charAt in interface java.lang.CharSequence
      • subSequence

        public java.lang.CharSequence subSequence​(int aStart,
                                                  int anEnd)
        Returns a new CharSequence that is a subsequence of this sequence.
        Specified by:
        subSequence in interface java.lang.CharSequence
      • isSpellChecking

        public boolean isSpellChecking()
        Returns whether editor is doing check-as-you-type spelling.
      • isHyphenating

        public boolean isHyphenating()
        Returns whether editor tries to hyphenate wrapped words.
      • isSelEmpty

        public boolean isSelEmpty()
        Returns whether the selection is empty.
      • getSel

        public RMTextSel getSel()
        Returns the text editor selection.
      • setSel

        public void setSel​(int newStartEnd)
        Sets the character index of the text cursor.
      • setSel

        public void setSel​(int aStart,
                           int anEnd)
        Sets the character index of the start and end of the text selection.
      • setSel

        public void setSel​(int aStart,
                           int anEnd,
                           int anAnchor)
        Sets the character index of the start and end of the text selection.
      • getSelStart

        public int getSelStart()
        Returns the character index of the start of the text selection.
      • getSelEnd

        public int getSelEnd()
        Returns the character index of the end of the text selection.
      • getSelAnchor

        public int getSelAnchor()
        Returns the character index of the last explicitly selected char (confined to the bounds of the selection).
      • selectAll

        public void selectAll()
        Selects all the characters in the text editor.
      • getSel

        public RMTextSel getSel​(double p1x,
                                double p1y,
                                double p2x,
                                double p2y)
        Returns the selected range that would result from the given two points.
      • getLineCount

        public int getLineCount()
        Returns the number of lines.
      • getLine

        public RMTextLine getLine​(int anIndex)
        Returns the individual line at given index.
      • getLineForChar

        public RMTextLine getLineForChar​(int anIndex)
        Returns the line index for the given character index.
      • getSelStartLine

        public RMTextLine getSelStartLine()
        Returns the line at selection start.
      • getFontScale

        public double getFontScale()
        Returns the scale applied to text when editing.
      • setFontScale

        public void setFontScale​(double aScale)
        Sets the scale applied to text when editing.
      • getLayout

        public RMTextLayout getLayout()
        Returns the configured text layout used to layout text.
      • createLayout

        public RMTextLayout createLayout()
        Creates a configured text layout used to layout text.
      • relayout

        public void relayout()
        Tells editor to rebuild layout.
      • getCharIndex

        public int getCharIndex​(java.awt.geom.Point2D aPoint)
        Returns the char index for given point in text coordinate space.
      • getInputStyle

        public RMTextStyle getInputStyle()
        Returns the text style applied to any input characters.
      • setInputAttribute

        public void setInputAttribute​(java.lang.String aKey,
                                      java.lang.Object aValue)
        Sets the attributes that are applied to current selection or newly typed chars.
      • getInputParagraph

        public RMParagraph getInputParagraph()
        Returns the paragraph of the current selection or cursor position.
      • setInputParagraph

        public void setInputParagraph​(RMParagraph ps)
        Sets the paragraph of the current selection or cursor position.
      • getString

        public java.lang.String getString()
        Returns the plain string of the xstring being edited.
      • getColor

        public RMColor getColor()
        Returns the color of the current selection or cursor.
      • setColor

        public void setColor​(RMColor color)
        Sets the color of the current selection or cursor.
      • getFont

        public RMFont getFont()
        Returns the font of the current selection or cursor.
      • setFont

        public void setFont​(RMFont font)
        Sets the font of the current selection or cursor.
      • getFormat

        public RMFormat getFormat()
        Returns the format of the current selection or cursor.
      • setFormat

        public void setFormat​(RMFormat aFormat)
        Sets the format of the current selection or cursor, after trying to expand the selection to encompass currently selected, @-sign delineated key.
      • isUnderlined

        public boolean isUnderlined()
        Returns whether current selection is underlined.
      • setUnderlined

        public void setUnderlined​(boolean aFlag)
        Sets whether current selection is underlined.
      • getOutline

        public RMXString.Outline getOutline()
        Returns whether current selection is outlined.
      • setOutline

        public void setOutline​(RMXString.Outline anOutline)
        Sets whether current selection is outlined.
      • setSuperscript

        public void setSuperscript()
        Sets current selection to superscript.
      • setSubscript

        public void setSubscript()
        Sets current selection to subscript.
      • getAlignmentX

        public RMTypes.AlignX getAlignmentX()
        Returns the alignment for current selection.
      • setAlignmentX

        public void setAlignmentX​(RMTypes.AlignX anAlignmentX)
        Sets the alignment for current selection.
      • getCharSpacing

        public float getCharSpacing()
        Returns the character spacing of the current selection or cursor.
      • setCharSpacing

        public void setCharSpacing​(float aValue)
        Returns the character spacing of the current selection or cursor.
      • getLineSpacing

        public float getLineSpacing()
        Returns the line spacing for current selection.
      • setLineSpacing

        public void setLineSpacing​(float aHeight)
        Sets the line spacing for current selection.
      • getLineGap

        public float getLineGap()
        Returns the line gap for current selection.
      • setLineGap

        public void setLineGap​(float aHeight)
        Sets the line gap for current selection.
      • getLineHeightMin

        public float getLineHeightMin()
        Returns the min line height for current selection.
      • setLineHeightMin

        public void setLineHeightMin​(float aHeight)
        Sets the min line height for current selection.
      • getLineHeightMax

        public float getLineHeightMax()
        Returns the maximum line height for a line of text (even if font size would dictate higher).
      • setLineHeightMax

        public void setLineHeightMax​(float aHeight)
        Sets the maximum line height for a line of text (even if font size would dictate higher).
      • delete

        public void delete()
        Deletes the current selection.
      • delete

        public void delete​(int aStart,
                           int anEnd,
                           boolean doUpdateSelection)
        Deletes the given range of chars.
      • replace

        public void replace​(@Nonnull
                            java.lang.String aString)
        Replaces the current selection with the given string.
      • replace

        public void replace​(java.lang.String aString,
                            int aStart,
                            int anEnd,
                            boolean doUpdateSelection)
        Replaces the current selection with the given string.
      • replace

        public void replace​(@Nonnull
                            java.lang.String aString,
                            java.util.Map theAttrs,
                            int aStart,
                            int anEnd,
                            boolean doUpdateSelection)
        Replaces the current selection with the given string.
      • replace

        public void replace​(@Nonnull
                            java.lang.String aString,
                            RMTextStyle aStyle,
                            int aStart,
                            int anEnd,
                            boolean doUpdateSelection)
        Replaces the current selection with the given string.
      • replace

        public void replace​(RMXString anXString)
        Replaces the current selection with the given xstring.
      • replace

        public void replace​(RMXString anXString,
                            int aStart,
                            int anEnd,
                            boolean doUpdateSelection)
        Replaces the current selection with the given xstring.
      • cut

        public void cut()
        Copies the current selection onto the clip board, then deletes the current selection.
      • copy

        public void copy()
        Copies the current selection onto the clipboard.
      • paste

        public void paste()
        Pasts the current clipboard data over the current selection.
      • getUndoer

        public RMUndoer getUndoer()
        Returns the undoer.
      • undo

        public void undo()
        Called to undo the last edit operation in the editor.
      • redo

        public void redo()
        Called to redo the last undo operation in the editor.
      • propertyChange

        public void propertyChange​(java.beans.PropertyChangeEvent anEvent)
        Called when characters where added, updated or deleted.
        Specified by:
        propertyChange in interface java.beans.PropertyChangeListener
      • undoerAddPropertyChange

        protected void undoerAddPropertyChange​(java.beans.PropertyChangeEvent anEvent)
        Adds a property change to undoer.
      • undoerSaveChanges

        protected void undoerSaveChanges()
        Saves changes to undoer.
      • getUndoSelection

        protected java.lang.Object getUndoSelection()
        Returns a selection object for undoer.
      • keyForward

        public void keyForward​(boolean isShiftDown)
        Moves the insertion point forward a character (or if a range is selected, moves to end of range).
      • keyBackward

        public void keyBackward​(boolean isShiftDown)
        Moves the insertion point backward a character (or if a range is selected, moves to beginning of range).
      • keyUp

        public void keyUp​(boolean shiftDown)
        Moves the insertion point up a line, trying to preserve distance from beginning of line.
      • keyDown

        public void keyDown​(boolean shiftDown)
        Moves the insertion point down a line, trying preserve distance from beginning of line.
      • selectLineStart

        public void selectLineStart()
        Moves the insertion point to the beginning of line.
      • selectLineEnd

        public void selectLineEnd()
        Moves the insertion point to next newline or text end.
      • deleteForward

        public void deleteForward()
        Deletes the character in front of the insertion point.
      • deleteToLineEnd

        public void deleteToLineEnd()
        Deletes the characters from the insertion point to the end of the line.
      • getWidthToFit

        public float getWidthToFit()
        Returns the width needed to display all characters.
      • getHeightToFit

        public float getHeightToFit()
        Returns the height needed to display all characters.
      • processKeyEvent

        public void processKeyEvent​(java.awt.event.KeyEvent anEvent)
        Handles key events.
      • keyPressed

        protected void keyPressed​(java.awt.event.KeyEvent anEvent)
        Handle keyPressed.
      • keyTyped

        protected void keyTyped​(java.awt.event.KeyEvent anEvent)
        Handle keyTyped.
      • mousePressed

        public void mousePressed​(java.awt.event.MouseEvent anEvent)
        Handles mouse pressed.
      • mouseDragged

        public void mouseDragged​(java.awt.event.MouseEvent anEvent)
        Handles mouse dragged.
      • mouseReleased

        public void mouseReleased​(java.awt.event.MouseEvent anEvent)
        Handles mouse released.
      • paint

        public void paint​(java.awt.Graphics2D g)
        Paints a given layout in a given graphics.
      • getSelPath

        public java.awt.geom.GeneralPath getSelPath()
        Returns the path for the current selection.
      • getSpellingPath

        public java.awt.geom.GeneralPath getSpellingPath()
        Returns a path for misspelled word underlining.