Class RMXString

  • All Implemented Interfaces:
    Archivable, RMPropertyChanger, RMTypes, RMTextTypes, java.lang.CharSequence, java.lang.Cloneable

    public class RMXString
    extends RMObject
    implements java.lang.CharSequence, RMTextTypes, Archivable
    An RMXString is like a String that lets you apply attributes, like fonts and colors, to character ranges. These character ranges with common attributes are represented internally as the inner class Run.

    You might use it like this:

     RMXString xstring = new RMXString("Hello World", RMColor.red);
     xstring.addAttribute(RMFont.getFont("Arail Bold", 12), 0, 5);
     xstring.addAttribute(RMFont.getFont("Arial BoldItalic", 12), 6, xstring.length());
     

    Advanced applications, that need to dissect or render strings, might iterate over the runs like this:

    for(int i=0; i<xstring.getRunCount(); i++) { RMXString.Run run = xstring.getRun(i); graphics.setFont(run.getFont().awt()); graphics.setColor(run.getColor().awt()); graphics.drawString(xstring.substring(run.start(), run.end())); }

    • Constructor Summary

      Constructors 
      Constructor Description
      RMXString()
      Creates an empty RMXString.
      RMXString​(java.lang.CharSequence theChars)
      Creates an RMXString initialized with the given String and no attributes.
      RMXString​(java.lang.CharSequence theChars, RMTextStyle aStyle)
      Creates an RMXString initialized with the given String with all characters set to the given style.
      RMXString​(java.lang.CharSequence theChars, java.lang.Object... theAttrs)
      Creates an RMXString initialized with the given String with all characters set to the given attributes.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addChars​(java.lang.CharSequence theChars)
      Appends the given String to the end of this XString.
      void addChars​(java.lang.CharSequence theChars, int anIndex)
      Adds chars at index.
      void addChars​(java.lang.CharSequence theChars, RMTextStyle aStyle, int anIndex)
      Appends the given string to this XString, with the given attributes, at the given index.
      void addChars​(java.lang.CharSequence theChars, java.lang.Object... theAttrs)
      Appends the given chars with the given attribute(s).
      void addChars​(java.lang.CharSequence theChars, java.util.Map theAttrs)
      Appends the given string to the end of this XString, with the given attributes.
      void addChars​(java.lang.CharSequence theChars, java.util.Map theAttrs, int anIndex)
      Appends the given string to this XString, with the given attributes, at the given index.
      void addString​(RMXString aString, int anIndex)
      Adds an XString to this string at given index.
      char charAt​(int anIndex)
      Returns the char at given index.
      RMXString clone()
      Returns a clone of this x string.
      boolean equals​(java.lang.Object anObj)
      Standard Object equals implementation.
      protected void firePropertyChange​(java.beans.PropertyChangeEvent anEvent, java.lang.String aName, java.lang.Object oldVal, java.lang.Object newVal, int anIndex)
      Override so RMXStringRun can reach this and to reset representable string and version.
      RMXString fromXML​(RXArchiver anArchiver, RXElement anElement)
      XML unarchival.
      RMTypes.AlignX getAlignX()
      Returns the horizontal alignment of the first paragraph of the xstring.
      RMDateFormat getDateFormat()  
      java.lang.Object getDefaultAttribute​(java.lang.String aKey)
      Returns the default for a given key.
      RMColor getDefaultColor()
      Returns the default color for this string.
      RMFont getDefaultFont()
      Returns the default font for this string.
      RMFormat getDefaultFormat()
      Returns the default format for this string.
      RMParagraph getDefaultParagraph()
      Returns the default paragraph for this string.
      RMFont getFontAt​(int anIndex)
      Returns the current font at the given character index.
      RMNumberFormat getNumberFormat()  
      RMParagraph getParagraphAt​(int anIndex)
      Returns the current paragraph at the given character index.
      RMXString getRepresentableString()
      Returns a version of this string that substitutes alternate fonts for any characters that cannot be displayed in their associated fonts (simply returns the receiver if all characters are valid).
      RMXStringRun getRun()
      Returns the XString head run.
      RMXStringRun getRun​(int anIndex)
      Returns the specific Run at the given index in this XString.
      RMXStringRun getRunAt​(int anIndex)
      Returns the XString run that contains or ends at given index.
      RMXStringRun getRunAt​(int anIndex, boolean isInclusive)
      Returns the XString run that contains or ends (if given option is true) at given index.
      int getRunCount()
      Returns the number of runs in this XString.
      RMXStringRun getRunLast()
      Returns the last run in this XString (convenience).
      RMTextStyle getStyleAt​(int anIndex)
      Returns the text style for the run at the given character index.
      RMTextStyle getStyleAt​(int anIndex, boolean isInclusive)
      Returns the text style for the run at the given character index.
      java.lang.String getText()
      Returns the simple String represented by this RMXString.
      boolean hasListeners()
      Override to return false if FirePropertyChangeEnabled is off.
      int indexOf​(java.lang.String aString)
      Returns the index within this string of the first occurrence of the given substring.
      int indexOf​(java.lang.String aString, int aStart)
      Returns the index within this string of first occurrence of given substring, starting at given index.
      int length()
      The length.
      void removeChars​(int aStart, int anEnd)
      Removes characters in given range.
      void replaceChars​(java.lang.CharSequence theChars, int aStart, int anEnd)
      Replaces chars in given range, with given String.
      void replaceChars​(java.lang.CharSequence theChars, RMTextStyle aStyle, int aStart, int anEnd)
      Replaces chars in given range, with given String, using the given attributes.
      void replaceString​(RMXString xString, int aStart, int anEnd)
      Replaces the chars in given range, with given XString.
      RMXString rpgClone​(ReportOwner anRptOwner, java.lang.Object userInfo, RMShape aShape, boolean doCopy)
      Creates a clone of the receiver, with substitution performed on @-sign delineated keys.
      void setAlignX​(RMTypes.AlignX anAlignX)
      Sets the horizontal alignment of the xstring.
      void setAttribute​(java.lang.Object anAttr)
      Applies the given attribute to whole xstring, assuming it's a basic attr types (font, color, etc.).
      void setAttribute​(java.lang.Object anAttr, int aStart, int anEnd)
      Applies the given attribute to the given character range, assuming it's a basic attr type (font, color, etc.).
      void setAttribute​(java.lang.String aKey, java.lang.Object anAttr)
      Adds a given attribute of given type to the whole string.
      void setAttribute​(java.lang.String aKey, java.lang.Object aValue, int aStart, int anEnd)
      Sets a given attribute to a given value for a given range.
      void setDateFormat​(RMDateFormat dateFormat)  
      void setDateFormat​(java.lang.String dateFormatString)  
      void setFirePropertyChangeEnabled​(boolean aValue)
      Sets whether string fires property change events.
      void setFormat​(RMFormat format)  
      void setNumberFormat​(RMNumberFormat numberFormat)  
      void setNumberFormat​(java.lang.String numberFormatString)  
      void setParagraph​(RMParagraph ps, int start, int end)
      Sets the paragraph for the given character index range.
      void setStyle​(RMTextStyle aStyle, int aStart, int anEnd)
      Sets the text style for given range.
      void setText​(java.lang.String aString)
      Sets the simple String represented by this RMXString.
      void setUnderlined​(boolean aFlag)
      Sets the xstring to be underlined.
      java.lang.CharSequence subSequence​(int aStart, int anEnd)
      Returns a subsequence.
      RMXString substring​(int aStart)
      Returns an XString for given char range.
      RMXString substring​(int aStart, int anEnd)
      Returns an XString for given char range.
      java.lang.String toString()
      Standard toString implementation.
      RXElement toXML​(RXArchiver anArchiver)
      XML archival.
      • Methods inherited from class java.lang.Object

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

        chars, codePoints
    • Constructor Detail

      • RMXString

        public RMXString()
        Creates an empty RMXString.
      • RMXString

        public RMXString​(java.lang.CharSequence theChars)
        Creates an RMXString initialized with the given String and no attributes.
      • RMXString

        public RMXString​(java.lang.CharSequence theChars,
                         RMTextStyle aStyle)
        Creates an RMXString initialized with the given String with all characters set to the given style.
      • RMXString

        public RMXString​(java.lang.CharSequence theChars,
                         java.lang.Object... theAttrs)
        Creates an RMXString initialized with the given String with all characters set to the given attributes.
    • Method Detail

      • getText

        public java.lang.String getText()
        Returns the simple String represented by this RMXString.
      • length

        public int length()
        The length.
        Specified by:
        length in interface java.lang.CharSequence
      • charAt

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

        public java.lang.CharSequence subSequence​(int aStart,
                                                  int anEnd)
        Returns a subsequence.
        Specified by:
        subSequence in interface java.lang.CharSequence
      • setText

        public void setText​(java.lang.String aString)
        Sets the simple String represented by this RMXString.
      • indexOf

        public int indexOf​(java.lang.String aString)
        Returns the index within this string of the first occurrence of the given substring.
      • indexOf

        public int indexOf​(java.lang.String aString,
                           int aStart)
        Returns the index within this string of first occurrence of given substring, starting at given index.
      • addChars

        public void addChars​(java.lang.CharSequence theChars)
        Appends the given String to the end of this XString.
      • addChars

        public void addChars​(java.lang.CharSequence theChars,
                             java.lang.Object... theAttrs)
        Appends the given chars with the given attribute(s).
      • addChars

        public void addChars​(java.lang.CharSequence theChars,
                             java.util.Map theAttrs)
        Appends the given string to the end of this XString, with the given attributes.
      • addChars

        public void addChars​(java.lang.CharSequence theChars,
                             int anIndex)
        Adds chars at index.
      • addChars

        public void addChars​(java.lang.CharSequence theChars,
                             java.util.Map theAttrs,
                             int anIndex)
        Appends the given string to this XString, with the given attributes, at the given index.
      • addChars

        public void addChars​(java.lang.CharSequence theChars,
                             RMTextStyle aStyle,
                             int anIndex)
        Appends the given string to this XString, with the given attributes, at the given index.
      • removeChars

        public void removeChars​(int aStart,
                                int anEnd)
        Removes characters in given range.
      • replaceChars

        public void replaceChars​(java.lang.CharSequence theChars,
                                 int aStart,
                                 int anEnd)
        Replaces chars in given range, with given String.
      • replaceChars

        public void replaceChars​(java.lang.CharSequence theChars,
                                 RMTextStyle aStyle,
                                 int aStart,
                                 int anEnd)
        Replaces chars in given range, with given String, using the given attributes.
      • addString

        public void addString​(RMXString aString,
                              int anIndex)
        Adds an XString to this string at given index.
      • replaceString

        public void replaceString​(RMXString xString,
                                  int aStart,
                                  int anEnd)
        Replaces the chars in given range, with given XString.
      • getRun

        public RMXStringRun getRun()
        Returns the XString head run.
      • getRunCount

        public int getRunCount()
        Returns the number of runs in this XString.
      • getRun

        public RMXStringRun getRun​(int anIndex)
        Returns the specific Run at the given index in this XString.
      • getRunLast

        public RMXStringRun getRunLast()
        Returns the last run in this XString (convenience).
      • getRunAt

        public final RMXStringRun getRunAt​(int anIndex)
        Returns the XString run that contains or ends at given index.
      • getRunAt

        public RMXStringRun getRunAt​(int anIndex,
                                     boolean isInclusive)
        Returns the XString run that contains or ends (if given option is true) at given index.
      • setNumberFormat

        public void setNumberFormat​(@Nullable
                                    RMNumberFormat numberFormat)
      • setNumberFormat

        public void setNumberFormat​(@Nullable
                                    java.lang.String numberFormatString)
      • getDateFormat

        @Nonnull
        public RMDateFormat getDateFormat()
      • setDateFormat

        public void setDateFormat​(@Nullable
                                  RMDateFormat dateFormat)
      • setDateFormat

        public void setDateFormat​(@Nullable
                                  java.lang.String dateFormatString)
      • setFormat

        public void setFormat​(@Nullable
                              RMFormat format)
      • getStyleAt

        public RMTextStyle getStyleAt​(int anIndex)
        Returns the text style for the run at the given character index.
      • getStyleAt

        public RMTextStyle getStyleAt​(int anIndex,
                                      boolean isInclusive)
        Returns the text style for the run at the given character index.
      • setStyle

        public void setStyle​(RMTextStyle aStyle,
                             int aStart,
                             int anEnd)
        Sets the text style for given range.
      • setAttribute

        public void setAttribute​(java.lang.Object anAttr)
        Applies the given attribute to whole xstring, assuming it's a basic attr types (font, color, etc.).
      • setAttribute

        public void setAttribute​(java.lang.Object anAttr,
                                 int aStart,
                                 int anEnd)
        Applies the given attribute to the given character range, assuming it's a basic attr type (font, color, etc.).
      • setAttribute

        public void setAttribute​(java.lang.String aKey,
                                 java.lang.Object anAttr)
        Adds a given attribute of given type to the whole string.
      • setAttribute

        public void setAttribute​(java.lang.String aKey,
                                 java.lang.Object aValue,
                                 int aStart,
                                 int anEnd)
        Sets a given attribute to a given value for a given range.
      • getFontAt

        public RMFont getFontAt​(int anIndex)
        Returns the current font at the given character index.
      • getParagraphAt

        public RMParagraph getParagraphAt​(int anIndex)
        Returns the current paragraph at the given character index.
      • setParagraph

        public void setParagraph​(RMParagraph ps,
                                 int start,
                                 int end)
        Sets the paragraph for the given character index range.
      • setUnderlined

        public void setUnderlined​(boolean aFlag)
        Sets the xstring to be underlined.
      • getAlignX

        public RMTypes.AlignX getAlignX()
        Returns the horizontal alignment of the first paragraph of the xstring.
      • setAlignX

        public void setAlignX​(RMTypes.AlignX anAlignX)
        Sets the horizontal alignment of the xstring.
      • getDefaultFont

        public RMFont getDefaultFont()
        Returns the default font for this string.
      • getDefaultColor

        public RMColor getDefaultColor()
        Returns the default color for this string.
      • getDefaultParagraph

        public RMParagraph getDefaultParagraph()
        Returns the default paragraph for this string.
      • getDefaultFormat

        public RMFormat getDefaultFormat()
        Returns the default format for this string.
      • getDefaultAttribute

        public java.lang.Object getDefaultAttribute​(java.lang.String aKey)
        Returns the default for a given key.
      • getRepresentableString

        public RMXString getRepresentableString()
        Returns a version of this string that substitutes alternate fonts for any characters that cannot be displayed in their associated fonts (simply returns the receiver if all characters are valid).
      • substring

        public RMXString substring​(int aStart)
        Returns an XString for given char range.
      • substring

        public RMXString substring​(int aStart,
                                   int anEnd)
        Returns an XString for given char range.
      • rpgClone

        public RMXString rpgClone​(ReportOwner anRptOwner,
                                  java.lang.Object userInfo,
                                  RMShape aShape,
                                  boolean doCopy)
        Creates a clone of the receiver, with substitution performed on @-sign delineated keys.
      • firePropertyChange

        protected void firePropertyChange​(java.beans.PropertyChangeEvent anEvent,
                                          java.lang.String aName,
                                          java.lang.Object oldVal,
                                          java.lang.Object newVal,
                                          int anIndex)
        Override so RMXStringRun can reach this and to reset representable string and version.
        Overrides:
        firePropertyChange in class RMObject
      • setFirePropertyChangeEnabled

        public void setFirePropertyChangeEnabled​(boolean aValue)
        Sets whether string fires property change events.
      • hasListeners

        public boolean hasListeners()
        Override to return false if FirePropertyChangeEnabled is off.
        Overrides:
        hasListeners in class RMListenerList
      • equals

        public boolean equals​(java.lang.Object anObj)
        Standard Object equals implementation.
        Overrides:
        equals in class java.lang.Object
      • toString

        public java.lang.String toString()
        Standard toString implementation.
        Specified by:
        toString in interface java.lang.CharSequence
        Overrides:
        toString in class RMObject