Class RMXString

All Implemented Interfaces:
Archivable, RMPropertyChanger, RMTypes, RMTextTypes, CharSequence, Cloneable

public class RMXString extends RMObject implements 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 Details

    • RMXString

      public RMXString()
      Creates an empty RMXString.
    • RMXString

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

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

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

    • getText

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

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

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

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

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

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

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

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

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

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

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

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

      public void addChars(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(CharSequence theChars, int aStart, int anEnd)
      Replaces chars in given range, with given String.
    • replaceChars

      public void replaceChars(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.
    • getNumberFormat

      @Nonnull public RMNumberFormat getNumberFormat()
    • setNumberFormat

      public void setNumberFormat(@Nullable RMNumberFormat numberFormat)
    • setNumberFormat

      public void setNumberFormat(@Nullable String numberFormatString)
    • getDateFormat

      @Nonnull public RMDateFormat getDateFormat()
    • setDateFormat

      public void setDateFormat(@Nullable RMDateFormat dateFormat)
    • setDateFormat

      public void setDateFormat(@Nullable 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(Object anAttr)
      Applies the given attribute to whole xstring, assuming it's a basic attr types (font, color, etc.).
    • setAttribute

      public void setAttribute(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(String aKey, Object anAttr)
      Adds a given attribute of given type to the whole string.
    • setAttribute

      public void setAttribute(String aKey, 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 Object getDefaultAttribute(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, Object userInfo, RMShape aShape, boolean doCopy)
      Creates a clone of the receiver, with substitution performed on @-sign delineated keys.
    • firePropertyChange

      protected void firePropertyChange(PropertyChangeEvent anEvent, String aName, Object oldVal, 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
    • toXML

      public RXElement toXML(RXArchiver anArchiver)
      XML archival.
      Specified by:
      toXML in interface Archivable
    • fromXML

      public RMXString fromXML(RXArchiver anArchiver, RXElement anElement)
      XML unarchival.
      Specified by:
      fromXML in interface Archivable
    • equals

      public boolean equals(Object anObj)
      Standard Object equals implementation.
      Overrides:
      equals in class Object
    • clone

      @Nullable public RMXString clone()
      Returns a clone of this x string.
      Overrides:
      clone in class RMListenerList
    • toString

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