ReportMill 10 API

com.reportmill.text
Class RMXString

java.lang.Object
  extended by com.reportmill.base.RMObject
      extended by com.reportmill.text.RMXString
All Implemented Interfaces:
java.lang.Cloneable

public class RMXString
extends com.reportmill.base.RMObject

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 disect or render strings, might iterate over the runs like this:

    for(int i=0; i


Nested Class Summary
static class RMXString.Outline
          The Outline inner class represents the attributes of outlined text: strokeWidth and fillColor.
 
Field Summary
static java.lang.String CHAR_SPACING_KEY
           
static java.lang.String COLOR_KEY
           
static java.lang.String FONT_KEY
           
static java.lang.String FORMAT_KEY
           
static java.lang.String OUTLINE_KEY
           
static java.lang.String PARAGRAPH_KEY
           
static java.lang.String SCRIPTING_KEY
           
static java.lang.String UNDERLINE_KEY
           
 
Constructor Summary
RMXString()
          Creates an empty RMXString.
RMXString(java.lang.String aString)
          Creates an RMXString intialized with the given String and no attributes.
RMXString(java.lang.String aString, java.util.Map attrs)
          Creates an RMXString initialized with the given String with all characters set to the given attributes.
RMXString(java.lang.String aString, java.lang.Object anAttr)
          Creates an RMXString initialized with the given String with all characters set to the given attribute (should be a common attribute type like RMFont, RMColor, RMFormat, etc.).
RMXString(java.lang.String aString, java.lang.Object[] attrs)
          Creates an RMXString initialized with the given String with all characters set to the given attributes objects in object array (should be common attribute types like RMFont, RMColor, RMFormat, etc.).
 
Method Summary
 void add(RMXString xString)
          Appends the given XString to the end of this String.
 void add(RMXString xString, int anIndex)
          Appends the given XString to this XString, at the given index.
 void add(java.lang.String aString)
          Appends the given String to the end of this XString.
 void add(java.lang.String aString, int anIndex)
          Appends the given String to this XString, at the given index.
 void add(java.lang.String aString, java.util.Map attrs)
          Appends the given string to the end of this XString, with the given attributes.
 void add(java.lang.String aString, java.util.Map attrs, int anIndex)
          Appends the given String to this XString, with the given attributes, at the given index.
 void addAttribute(java.lang.Object attr)
          Applies the given attribute to whole xstring, assuming it's a basic attr types (font, color, etc.).
 void addAttribute(java.lang.Object attr, int start, int end)
          Applies the given attribute to the given character range, assuming it's a basic attr type (font, color, etc.).
 void addAttribute(java.lang.String aKey, java.lang.Object object)
          Adds a given attribute of given type to the whole string.
 void addAttribute(java.lang.String aKey, java.lang.Object attr, int start, int end)
          Adds a given attribute of given type to the given range of the string.
 void addAttribute(java.lang.String aKey, java.lang.Object anAttr, int start, int end, boolean ifAbsent)
          Adds a given attribute of given type to the given range of the string, only if specified type is missing.
 void addAttributes(java.util.Map attrs, int start, int end)
          Adds the attributes in the given map to the specified character range.
 void addAttributes(java.util.Map attrs, int start, int end, boolean ifAbsent)
          Adds the attributes in the given map to the specified character range.
 void alignCenter()
          Aligns the xstring center.
 void alignLeft()
          Aligns the xstring left.
 void alignRight()
          Aligns the xstring right.
 RMXString blend(RMXString aString, float fraction)
          Returns a blended version of the receiver and the given string (0 is receiver, 1 is given string).
 char charAt(int anIndex)
          Returns the character at the given index.
 java.lang.Object clone()
          Returns a clone of this x string.
 void coalesceNewlines()
          Replaces any occurrance of consecutive newlines with a single newline.
 void delete(int start, int end)
          Deletes the chars in the given range.
 void didChange()
          Notifies string that something significant changed.
 boolean equals(java.lang.Object anObj)
          Standard Object equals implementation.
 java.lang.Object fromXML(com.reportmill.archiver.RXArchiver anArchiver, com.reportmill.archiver.RXElement anElement)
          XML unarchival.
 byte getAlign()
          Returns the horizontal alignment of the first paragraph of the xstring.
 java.lang.Object getAttributeAt(java.lang.String aKey, int anIndex)
          Returns the value for the given attribute key at the given character index.
 java.util.Map getAttributes(int anIndex)
          Returns the attributes Map for the run at the given index.
 java.util.Map getAttributesAt(int anIndex)
          Returns the attributes Map for the run at the given character index.
 RMColor getColorAtIndex(int anIndex)
          Returns the current color at the given character index.
 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 getFontAtIndex(int anIndex)
          Returns the current font at the given character index.
 RMFormat getFormatAtIndex(int anIndex)
          Returns the current format at the given character index.
 RMParagraph getParagraphAtIndex(int index)
          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).
 com.reportmill.text.RMXStringRun getRun(int anIndex)
          Returns the specific Run at the given index in this XString.
 com.reportmill.text.RMXStringRun getRunAt(int anIndex)
          Returns the XString run at the given index.
 com.reportmill.text.RMXStringRun getRunAtExactly(int anIndex)
          Returns an XString run for the given character index, potentially splitting an existing run to ensure that new run starts at the given index.
 int getRunCount()
          Returns the number of runs in this XString.
 int getRunIndexAt(int anIndex)
          Returns the XString run index for the given character index.
 int getRunIndexAtExactly(int anIndex)
          Returns an XString segement index for the given character index, potentially splitting an existing run to ensure that new run starts at the given index.
 com.reportmill.text.RMXStringRun getRunLast()
          Returns the last run in this XString (convenience).
 int getVersion()
          Returns the version of this xstring.
static RMXString getXStringForHTML(java.lang.String html, RMFont aFont)
          Creates and returns an XString from a given HTML String.
static RMXString getXStringForRTF(java.lang.String rtf, RMFont aFont)
          Creates and returns an XString from a given RTF String.
 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 start)
          Returns the index within this string of first occurrence of given substring, starting at given index.
 int length()
          Returns the number of characters associated with this RMXString.
 void removeAttribute(java.lang.String aKey, int start, int end)
          Removes any attribute of the specified type from the specified range of the string.
 void replace(int start, int end, RMXString xString)
          Replaces the chars in given range, with given XString.
 void replace(int start, int end, java.lang.String aString)
          Replaces chars in given range, with given String.
 void replace(int start, int end, java.lang.String aString, java.util.Map attrs)
          Replaces chars in given range, with given String, using the given attributes.
 void replace(java.lang.String aString)
          Replaces all chars of this XString with given String.
 RMXString rpgClone(com.reportmill.base.ReportMill aReportMill, java.lang.Object userInfo, RMShape aShape)
          Creates a clone of the receiver, with substitution performed on @-sign deliniated keys.
 void scaleFonts(float aScale)
          Sets a value to that should be multiplied times all font sizes in this string.
 java.util.Vector separate(java.lang.String aSeparator)
          Returns a List of XString substrings of this XString that are separated by the given separator String.
 void setAlign(int align)
          Sets the horizontal alignment of the xstring.
 void setOutlined(boolean flag)
          Sets the xstring to be outlined.
 void setParagraph(RMParagraph ps, int start)
          Sets the paragraph at the given character index.
 void setParagraph(RMParagraph ps, int start, int end)
          Sets the paragraph for the given character index range.
 void setUnderlined(boolean flag)
          Sets the xstring to be underlined.
 java.lang.String string()
          Returns the plain String associated with this RMXString.
 RMXString substring(int index)
          Returns the substring from the given index to end of XString.
 RMXString substring(int start, int end)
          Returns the substring from the given start index to the given end index.
 java.lang.String toString()
          Returns the String associated with this XString.
 java.lang.String toStringXML()
          Returns an XML style string representation of the attributes and string runs in this XString.
 com.reportmill.archiver.RXElement toXML(com.reportmill.archiver.RXArchiver anArchiver)
          XML archival.
 
Methods inherited from class com.reportmill.base.RMObject
copy, didChange, didUndo, getAnimAttribute, getClassNameShort, undoClone, undoCopy, undoEquals
 
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

FONT_KEY

public static final java.lang.String FONT_KEY
See Also:
Constant Field Values

COLOR_KEY

public static final java.lang.String COLOR_KEY
See Also:
Constant Field Values

FORMAT_KEY

public static final java.lang.String FORMAT_KEY
See Also:
Constant Field Values

UNDERLINE_KEY

public static final java.lang.String UNDERLINE_KEY
See Also:
Constant Field Values

OUTLINE_KEY

public static final java.lang.String OUTLINE_KEY
See Also:
Constant Field Values

PARAGRAPH_KEY

public static final java.lang.String PARAGRAPH_KEY
See Also:
Constant Field Values

SCRIPTING_KEY

public static final java.lang.String SCRIPTING_KEY
See Also:
Constant Field Values

CHAR_SPACING_KEY

public static final java.lang.String CHAR_SPACING_KEY
See Also:
Constant Field Values
Constructor Detail

RMXString

public RMXString()
Creates an empty RMXString.


RMXString

public RMXString(java.lang.String aString)
Creates an RMXString intialized with the given String and no attributes.


RMXString

public RMXString(java.lang.String aString,
                 java.util.Map attrs)
Creates an RMXString initialized with the given String with all characters set to the given attributes.


RMXString

public RMXString(java.lang.String aString,
                 java.lang.Object anAttr)
Creates an RMXString initialized with the given String with all characters set to the given attribute (should be a common attribute type like RMFont, RMColor, RMFormat, etc.).


RMXString

public RMXString(java.lang.String aString,
                 java.lang.Object[] attrs)
Creates an RMXString initialized with the given String with all characters set to the given attributes objects in object array (should be common attribute types like RMFont, RMColor, RMFormat, etc.).

Method Detail

string

public java.lang.String string()
Returns the plain String associated with this RMXString.


length

public int length()
Returns the number of characters associated with 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 start)
Returns the index within this string of first occurrence of given substring, starting at given index.


charAt

public char charAt(int anIndex)
Returns the character at the given index.


getRunCount

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


getRun

public com.reportmill.text.RMXStringRun getRun(int anIndex)
Returns the specific Run at the given index in this XString.


getRunLast

public com.reportmill.text.RMXStringRun getRunLast()
Returns the last run in this XString (convenience).


getAttributes

public java.util.Map getAttributes(int anIndex)
Returns the attributes Map for the run at the given index.


getAttributeAt

public java.lang.Object getAttributeAt(java.lang.String aKey,
                                       int anIndex)
Returns the value for the given attribute key at the given character index.


getAttributesAt

public java.util.Map getAttributesAt(int anIndex)
Returns the attributes Map for the run at the given character index.


addAttributes

public void addAttributes(java.util.Map attrs,
                          int start,
                          int end)
Adds the attributes in the given map to the specified character range.


addAttributes

public void addAttributes(java.util.Map attrs,
                          int start,
                          int end,
                          boolean ifAbsent)
Adds the attributes in the given map to the specified character range. Provides an option to only apply each individual attribute if it isn't already specified for that character range.


addAttribute

public void addAttribute(java.lang.String aKey,
                         java.lang.Object object)
Adds a given attribute of given type to the whole string.


addAttribute

public void addAttribute(java.lang.String aKey,
                         java.lang.Object attr,
                         int start,
                         int end)
Adds a given attribute of given type to the given range of the string.


addAttribute

public void addAttribute(java.lang.String aKey,
                         java.lang.Object anAttr,
                         int start,
                         int end,
                         boolean ifAbsent)
Adds a given attribute of given type to the given range of the string, only if specified type is missing.


removeAttribute

public void removeAttribute(java.lang.String aKey,
                            int start,
                            int end)
Removes any attribute of the specified type from the specified range of the string.


getFontAtIndex

public RMFont getFontAtIndex(int anIndex)
Returns the current font at the given character index.


getColorAtIndex

public RMColor getColorAtIndex(int anIndex)
Returns the current color at the given character index.


getFormatAtIndex

public RMFormat getFormatAtIndex(int anIndex)
Returns the current format at the given character index.


getParagraphAtIndex

public RMParagraph getParagraphAtIndex(int index)
Returns the current paragraph at the given character index.


setParagraph

public void setParagraph(RMParagraph ps,
                         int start)
Sets the 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.


addAttribute

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


addAttribute

public void addAttribute(java.lang.Object attr,
                         int start,
                         int end)
Applies the given attribute to the given character range, assuming it's a basic attr type (font, color, etc.).


scaleFonts

public void scaleFonts(float aScale)
Sets a value to that should be multiplied times all font sizes in this string.


add

public void add(java.lang.String aString)
Appends the given String to the end of this XString.


add

public void add(java.lang.String aString,
                int anIndex)
Appends the given String to this XString, at the given index.


add

public void add(RMXString xString)
Appends the given XString to the end of this String.


add

public void add(RMXString xString,
                int anIndex)
Appends the given XString to this XString, at the given index.


add

public void add(java.lang.String aString,
                java.util.Map attrs)
Appends the given string to the end of this XString, with the given attributes.


add

public void add(java.lang.String aString,
                java.util.Map attrs,
                int anIndex)
Appends the given String to this XString, with the given attributes, at the given index.


replace

public void replace(java.lang.String aString)
Replaces all chars of this XString with given String.


replace

public void replace(int start,
                    int end,
                    java.lang.String aString)
Replaces chars in given range, with given String.


replace

public void replace(int start,
                    int end,
                    java.lang.String aString,
                    java.util.Map attrs)
Replaces chars in given range, with given String, using the given attributes.


replace

public void replace(int start,
                    int end,
                    RMXString xString)
Replaces the chars in given range, with given XString.


delete

public void delete(int start,
                   int end)
Deletes the chars in the given range.


substring

public RMXString substring(int index)
Returns the substring from the given index to end of XString.


substring

public RMXString substring(int start,
                           int end)
Returns the substring from the given start index to the given end index.


separate

public java.util.Vector separate(java.lang.String aSeparator)
Returns a List of XString substrings of this XString that are separated by the given separator String.


coalesceNewlines

public void coalesceNewlines()
Replaces any occurrance of consecutive newlines with a single newline.


getXStringForHTML

public static RMXString getXStringForHTML(java.lang.String html,
                                          RMFont aFont)
Creates and returns an XString from a given HTML String.


getXStringForRTF

public static RMXString getXStringForRTF(java.lang.String rtf,
                                         RMFont aFont)
Creates and returns an XString from a given RTF String.


getRunAt

public com.reportmill.text.RMXStringRun getRunAt(int anIndex)
Returns the XString run at the given index.


getRunIndexAt

public int getRunIndexAt(int anIndex)
Returns the XString run index for the given character index.


getRunAtExactly

public com.reportmill.text.RMXStringRun getRunAtExactly(int anIndex)
Returns an XString run for the given character index, potentially splitting an existing run to ensure that new run starts at the given index.


getRunIndexAtExactly

public int getRunIndexAtExactly(int anIndex)
Returns an XString segement index for the given character index, potentially splitting an existing run to ensure that new run starts at the given index.


didChange

public void didChange()
Notifies string that something significant changed. It's mostly for internal use (it's called automatically by most of XStrings modification methods).


setUnderlined

public void setUnderlined(boolean flag)
Sets the xstring to be underlined.


setOutlined

public void setOutlined(boolean flag)
Sets the xstring to be outlined.


getAlign

public byte getAlign()
Returns the horizontal alignment of the first paragraph of the xstring.


setAlign

public void setAlign(int align)
Sets the horizontal alignment of the xstring.


alignLeft

public void alignLeft()
Aligns the xstring left.


alignRight

public void alignRight()
Aligns the xstring right.


alignCenter

public void alignCenter()
Aligns the xstring center.


getVersion

public int getVersion()
Returns the version of this 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.


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).


equals

public boolean equals(java.lang.Object anObj)
Standard Object equals implementation.

Overrides:
equals in class java.lang.Object

clone

public java.lang.Object clone()
Returns a clone of this x string.

Overrides:
clone in class com.reportmill.base.RMObject

rpgClone

public RMXString rpgClone(com.reportmill.base.ReportMill aReportMill,
                          java.lang.Object userInfo,
                          RMShape aShape)
Creates a clone of the receiver, with substitution performed on @-sign deliniated keys.


blend

public RMXString blend(RMXString aString,
                       float fraction)
Returns a blended version of the receiver and the given string (0 is receiver, 1 is given string). The current implementation actually only blends text color.


toXML

public com.reportmill.archiver.RXElement toXML(com.reportmill.archiver.RXArchiver anArchiver)
XML archival.


fromXML

public java.lang.Object fromXML(com.reportmill.archiver.RXArchiver anArchiver,
                                com.reportmill.archiver.RXElement anElement)
XML unarchival.


toString

public java.lang.String toString()
Returns the String associated with this XString.

Overrides:
toString in class java.lang.Object

toStringXML

public java.lang.String toStringXML()
Returns an XML style string representation of the attributes and string runs in this XString.


ReportMill 10 API