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

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

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

      protected @NonNull 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

      public @NonNull 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

      public @NonNull 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

      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

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

      protected void processBinding(RMShape targetShape, @NotNull String propertyName, @Nullable Object value)
      Description copied from class: RMShape
      Applies a generic binding to the given shape for the given property and value.

      This method is called from RMShape.rpgBindings(ReportOwner, RMShape) for each property that is not handled explicitly by that method. If the generic binding is not sufficient for a given property, subclasses can override this method to provide specialized binding logic.

      As an example, RMTextShape overrides this method to provide specialized binding for the "Text" property.

      Overrides:
      processBinding in class RMShape
      Parameters:
      targetShape - The shape for which the binding is applied to
      propertyName - The name of the property being bound
      value - The value being bound to the property
    • 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

      protected @Nullable 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

      public @NonNull 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. @Since 7.8.0
      Overrides:
      isDeletable in class RMShape
    • getAutosizingDefault

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