Class RMTextShape

All Implemented Interfaces:
Archivable, DeepChangeListener, RMPropertyChanger, RMTypes, PropertyChangeListener, Cloneable, EventListener
Direct Known Subclasses:
RMCrossTabCell, RMGraphPartLabelAxis, RMGraphPartValueAxis, RMLinkedText, RMTableRowCellTextShape, RMText

public class RMTextShape extends RMRectShape
This class is an RMShape subclass for handling rich text. Text is probably the most common and useful element in a ReportMill template. You might use this class to programmatically build or modify a template, like this:

 RMXString xstring = new RMXString("Hello world!", RMFont.getFont("Arial", 12), RMColor.red);
 RMText text = new RMText(xstring);
 template.getPage(0).addChild(text);
 text.setXY(36, 36);
 text.setSizeToFit();
 

  • Field Details

  • Constructor Details

    • RMTextShape

      public RMTextShape()
      Creates an empty text instance.
    • RMTextShape

      public RMTextShape(RMXString string)
      Creates a text instance initialized with the given RMXString.
    • RMTextShape

      public RMTextShape(String plainText)
      Creates a text instance initialized with the given plain text String.
  • Method Details

    • getXString

      @Nonnull public RMXString getXString()
      Returns the XString associated with this RMText.
    • setXString

      public void setXString(RMXString xString)
      Sets the XString associated with this RMText.
    • createXString

      @Nonnull protected RMXString createXString()
      Creates the xstring for this text.
    • length

      public int length()
      Returns the length, in characters, of the XString associated with this RMText.
    • getText

      public String getText()
      Returns the text associated with this RMText as a plain String.
    • setText

      public void setText(String aString)
      Replaces the current text associated with this RMText with the given String.
    • getVisibleStart

      public int getVisibleStart()
      Returns the first character index visible in this text.
    • getVisibleEnd

      public int getVisibleEnd()
      Returns the last character index visible in this text.
    • isAllTextVisible

      public boolean isAllTextVisible()
      Returns whether all characters can be visibly rendered in text bounds.
    • getFont

      public RMFont getFont()
      Returns the font for char 0.
      Overrides:
      getFont in class RMShape
    • setFont

      public void setFont(RMFont aFont)
      Sets the font for all characters.
      Overrides:
      setFont in class RMShape
    • setFormat

      @Deprecated public void setFormat(RMFormat aFormat)
      Deprecated.
      Sets the format for all characters.
      Overrides:
      setFormat in class RMShape
    • getNegativeInRed

      public boolean getNegativeInRed()
    • setNegativeInRed

      public void setNegativeInRed(boolean negativeInRed)
    • getNumberFormat

      @Nonnull public String getNumberFormat()
    • setNumberFormat

      public void setNumberFormat(String numberFormatStr)
      Applies the given number format.

      Does nothing if:

      • The incoming format is null
      • The incoming format is an empty string
      • The incoming format is not a valid DecimalFormat
    • getDateFormat

      @Nonnull public String getDateFormat()
    • setDateFormat

      public void setDateFormat(@Nullable String dateFormatStr)
      Applies the given date format. If we get null in, the existing format won't change.
    • getNullFormat

      @Nonnull public String getNullFormat()
    • setNullFormat

      public void setNullFormat(String nullFormat)
    • getTextColor

      public RMColor getTextColor()
      Returns the color of the first character of the xstring associated with this RMText.
      Overrides:
      getTextColor in class RMShape
    • setTextColor

      public void setTextColor(RMColor aColor)
      Sets the color of the characters in the XString associated with this RMText.
      Overrides:
      setTextColor in class RMShape
    • isUnderlined

      public boolean isUnderlined()
      Returns if char 0 is underlined.
      Overrides:
      isUnderlined in class RMShape
    • setUnderlined

      public void setUnderlined(boolean aFlag)
      Sets all chars to be underlined.
      Overrides:
      setUnderlined in class RMShape
    • getOutline

      public RMXString.Outline getOutline()
      Returns the outline for char 0.
      Overrides:
      getOutline in class RMShape
    • setOutline

      public void setOutline(RMXString.Outline anOutline)
      Sets the Outline for all characters.
      Overrides:
      setOutline in class RMShape
    • getAlignmentX

      public RMTypes.AlignX getAlignmentX()
      Returns the alignment for char 0.
      Overrides:
      getAlignmentX in class RMShape
    • setAlignmentX

      public void setAlignmentX(RMTypes.AlignX anAlignmentX)
      Sets the align for all chars. Because this takes an enum, we won't allow bindings to it.
      Overrides:
      setAlignmentX in class RMShape
    • getAlignString

      public String getAlignString()
      Returns the alignment as a string, one of: "left", "center" or "right".
    • getAlignmentY

      public RMTypes.AlignY getAlignmentY()
      Returns the vertical alignment.
      Overrides:
      getAlignmentY in class RMShape
    • setAlignmentY

      public void setAlignmentY(RMTypes.AlignY anAlignment)
      Sets the vertical alignment. Because this takes an enum, we won't allow bindings to it.
      Overrides:
      setAlignmentY in class RMShape
    • getWraps

      public byte getWraps()
      Returns the wrapping behavior for over-filled rpgCloned text (NONE, WRAP, SHRINK).
    • setWraps

      public void setWraps(byte aValue)
      Sets the wrapping behavior for over-filled rpgCloned text (NONE, WRAP, SHRINK). No bindings because this takes a byte and no expression function returns a byte.
    • getPerformsWrap

      public boolean getPerformsWrap()
      Returns whether text should wrap around other shapes that cause wrap.
    • setPerformsWrap

      public void setPerformsWrap(boolean aFlag)
      Sets whether text should wrap around other shapes that cause wrap.
    • getCoalesceNewlines

      public boolean getCoalesceNewlines()
      Returns whether text should coalesce consecutive newlines in rpgClone.
    • setCoalesceNewlines

      public void setCoalesceNewlines(boolean aFlag)
      Sets whether text should coalesce consecutive newlines in rpgClone.
    • getDrawsSelectionRect

      public boolean getDrawsSelectionRect()
      Returns whether text should always draw at least a light gray border (useful when editing).
    • setDrawsSelectionRect

      public void setDrawsSelectionRect(boolean aValue)
      Sets whether text should always draw at least a light-gray border (useful when editing).
    • getCharSpacing

      public float getCharSpacing()
      Returns the char spacing at char 0.
    • setCharSpacing

      public void setCharSpacing(float aValue)
      Sets the char spacing for the text string.
    • getLineSpacing

      public float getLineSpacing()
      Returns the line spacing at char 0.
    • setLineSpacing

      public void setLineSpacing(float aHeight)
      Sets the line spacing for all chars.
    • getLineGap

      public float getLineGap()
      Returns the line gap at char 0.
    • setLineGap

      public void setLineGap(float aHeight)
      Sets the line gap for all chars.
    • getLineHeightMin

      public float getLineHeightMin()
      Returns the minimum line height at char 0.
    • setLineHeightMin

      public void setLineHeightMin(float aHeight)
      Sets the minimum line height for all chars.
    • getLineHeightMax

      public float getLineHeightMax()
      Returns the maximum line height at char 0.
    • setLineHeightMax

      public void setLineHeightMax(float aHeight)
      Sets the maximum line height for all chars.
    • getMargin

      public Insets getMargin()
      Returns margin.
    • setMargin

      public void setMargin(Insets aMargin)
      Sets margin. Not bindable because it takes Insets.
    • getMarginDefault

      public Insets getMarginDefault()
      Returns the default margin of the text (top=1, left=2, right=2, bottom=0).
    • getMarginString

      public String getMarginString()
      Returns the margin as a string.
    • setMarginString

      public void setMarginString(String aString)
      Sets the margin as a string.
    • getMarginLeft

      public int getMarginLeft()
      Returns the left margin of the text (default to 2).
    • getMarginRight

      public int getMarginRight()
      Returns the right margin of the text (defaults to 2).
    • getMarginTop

      public int getMarginTop()
      Returns the top margin of the text (defaults to 1).
    • getMarginBottom

      public int getMarginBottom()
      Returns the bottom margin of the text (defaults to 0).
    • setWidth

      public void setWidth(double aValue)
      Override to revalidate.
      Overrides:
      setWidth in class RMShape
    • setHeight

      public void setHeight(double aValue)
      Override to revalidate.
      Overrides:
      setHeight in class RMShape
    • getPath

      public RMPath getPath()
      Returns the path for this shape (might be PathShape).
      Overrides:
      getPath in class RMRectShape
    • getPathInBounds

      public RMPath getPathInBounds()
      Overrides shape implementation to pass through getPathInBounds(inset).
      Overrides:
      getPathInBounds in class RMShape
    • getPathInBounds

      public RMPath getPathInBounds(int anInset)
      Returns the shape's path scaled to the shape's current bounds.
    • peerDidChange

      public void peerDidChange(RMShape aShape)
      This notification method is called when any peer is changed.
    • getPathShape

      public RMShape getPathShape()
      Returns the shape that provides the path for this text to wrap text to.
    • setPathShape

      public void setPathShape(RMShape aShape)
      Sets the shape that provides the path for this text to wrap text to.
    • setRadius

      public void setRadius(float aValue)
      Overrides rectangle implementation to potentially clear path shape.
      Overrides:
      setRadius in class RMRectShape
    • getLinkedText

      public RMLinkedText getLinkedText()
      Returns the linked text for this text (if any).
    • setLinkedText

      public void setLinkedText(RMLinkedText aLinkedText)
      Sets the linked text for this text (if any).
    • getTextLayout

      public RMTextLayout getTextLayout()
      Returns a text layout.
    • createTextLayout

      public RMTextLayout createTextLayout()
      Creates a new layout.
    • computePrefWidth

      protected double computePrefWidth(double aHeight)
      Override to compute from RMTextLayout.
      Overrides:
      computePrefWidth in class RMShape
    • computePrefHeight

      protected double computePrefHeight(double aWidth)
      Override to compute from RMTextLayout.
      Overrides:
      computePrefHeight in class RMShape
    • scaleFonts

      public void scaleFonts(double aFactor)
      Resizes all the fonts in text string by given factor.
    • rpgShape

      @Nullable protected RMShape rpgShape(ReportOwner anRptOwner, RMShape aParent)
      Generate report.
      Overrides:
      rpgShape in class RMShape
    • paginate

      protected List<RMTextShape> paginate()
      Paginates this text by creating linked texts to show all text and returns a list of this text and the linked texts.
    • resolvePageReferences

      protected void resolvePageReferences(ReportOwner aRptOwner, Object userInfo)
      Re-does the RPG clone to resolve any @Page@ keys (assumed to be present in userInfo).
      Overrides:
      resolvePageReferences in class RMShape
    • createDivideShapeRemainder

      @Nullable protected RMShape createDivideShapeRemainder(byte anEdge)
      Creates a shape suitable for the "remainder" portion of a divideShape call (just a clone by default).
      Overrides:
      createDivideShapeRemainder in class RMShape
    • getMaskPath

      public RMPath getMaskPath()
      Overridden from RMShape to provide the outlines of all the glyphs
      Overrides:
      getMaskPath in class RMShape
    • superSelectable

      public boolean superSelectable()
      Editor method - indicates that this shape can be super selected.
      Overrides:
      superSelectable in class RMShape
    • isStructured

      public boolean isStructured()
      Editor method.
    • paintShape

      public void paintShape(RMShapePainter aPntr)
      Paints a text shape.
      Overrides:
      paintShape in class RMShape
    • paintShapeBack

      public void paintShapeBack(RMShapePainter aPntr)
      Paints the text shape background.
    • paintShapeText

      public void paintShapeText(RMShapePainter aPntr)
      Paints the text shape text.
    • paintTextRun

      protected void paintTextRun(RMShapePainter aPntr, RMTextRun aRun)
      Paints the layout in a given graphics.
    • copyText

      public void copyText(RMTextShape aText)
      Copies attributes from given object.
    • getPropertyNames

      protected void getPropertyNames(List<String> aList)
      Returns the property names for RMShape.
      Overrides:
      getPropertyNames in class RMShape
    • propertyChange

      public void propertyChange(PropertyChangeEvent anEvent)
      Override to catch XString changes.
      Specified by:
      propertyChange in interface PropertyChangeListener
      Overrides:
      propertyChange in class RMShape
    • revalidate

      public void revalidate()
      Override to do home-brew layout.
    • clone

      @Nullable public RMTextShape clone()
      Standard clone implementation.
      Overrides:
      clone in class RMShape
    • toXML

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

      public Object fromXML(RXArchiver anArchiver, RXElement anElement)
      XML unarchival.
      Specified by:
      fromXML in interface Archivable
      Overrides:
      fromXML in class RMRectShape
    • fromXMLFinish

      public void fromXMLFinish(RXArchiver anArchiver, RXElement anElement)
      XML reference unarchival - to unarchive linked text.
    • toString

      public String toString()
      Standard toString implementation.
      Overrides:
      toString in class RMShape
    • isDeletable

      public boolean isDeletable()
      Description copied from class: RMShape
      Override this for shapes (like a table row) that don't don't make sense to delete by themselves.
      Overrides:
      isDeletable in class RMShape
    • getAutosizingDefault

      public String getAutosizingDefault()
      Description copied from class: RMShape
      Returns the autosizing default.
      Overrides:
      getAutosizingDefault in class RMShape