Class RMTextShape

  • All Implemented Interfaces:
    Archivable, DeepChangeListener, RMPropertyChanger, RMTypes, java.beans.PropertyChangeListener, java.lang.Cloneable, java.util.EventListener
    Direct Known Subclasses:
    RMCrossTabCell, RMGraphPartLabelAxis, RMGraphPartValueAxis, RMLinkedText, 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();
     

    • Constructor Detail

      • 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​(java.lang.String plainText)
        Creates a text instance initialized with the given plain text String.
    • Method Detail

      • 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 java.lang.String getText()
        Returns the text associated with this RMText as a plain String.
      • setText

        public void setText​(java.lang.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 java.lang.String getNumberFormat()
      • setNumberFormat

        public void setNumberFormat​(java.lang.String numberFormatStr)
        Applies the given number format. If we get null in, the existing format won't change.
      • getDateFormat

        @Nonnull
        public java.lang.String getDateFormat()
      • setDateFormat

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

        @Nonnull
        public java.lang.String getNullFormat()
      • setNullFormat

        public void setNullFormat​(java.lang.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
      • 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 java.lang.String getAlignString()
        Returns the alignment as a string, one of: "left", "center" or "right".
      • 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 java.awt.Insets getMargin()
        Returns margin.
      • setMargin

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

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

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

        public void setMarginString​(java.lang.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.
      • paginate

        protected java.util.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,
                                             java.lang.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.
      • 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​(java.util.List<java.lang.String> aList)
        Returns the property names for RMShape.
        Overrides:
        getPropertyNames in class RMShape
      • propertyChange

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

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

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

        public java.lang.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 java.lang.String getAutosizingDefault()
        Description copied from class: RMShape
        Returns the autosizing default.
        Overrides:
        getAutosizingDefault in class RMShape