Class JRFillElement

java.lang.Object
net.sf.jasperreports.engine.fill.JRFillElement
All Implemented Interfaces:
Cloneable, DynamicPropertiesHolder, JRFillCloneable, JRChild, JRCloneable, JRCommonElement, JRElement, JRIdentifiable, JRPropertiesHolder, JRStyleContainer, JRStyleSetter, JRVisitable
Direct Known Subclasses:
JRFillBreak, JRFillChart, JRFillComponentElement, JRFillCrosstab, JRFillFrame, JRFillGenericElement, JRFillGraphicElement, JRFillSubreport, JRFillTextElement

public abstract class JRFillElement extends Object implements JRElement, JRFillCloneable, JRStyleSetter, DynamicPropertiesHolder
Author:
Teodor Danciu (teodord@users.sourceforge.net)
  • Field Details

  • Constructor Details

  • Method Details

    • getDefaultStyleProvider

      public JRDefaultStyleProvider getDefaultStyleProvider()
      Specified by:
      getDefaultStyleProvider in interface JRStyleContainer
    • getStyleResolver

      protected StyleResolver getStyleResolver()
    • getUUID

      public UUID getUUID()
      Specified by:
      getUUID in interface JRIdentifiable
    • getKey

      public String getKey()
      Description copied from interface: JRCommonElement
      Returns the string value that uniquely identifies the element.
      Specified by:
      getKey in interface JRCommonElement
    • getPositionType

      public PositionTypeEnum getPositionType()
      Description copied from interface: JRElement
      Returns the position type for the element
      Specified by:
      getPositionType in interface JRElement
      Returns:
      the position type
    • setPositionType

      public void setPositionType(PositionTypeEnum positionType)
      Description copied from interface: JRElement
      Sets the position type for the element.
      Specified by:
      setPositionType in interface JRElement
      Parameters:
      positionType - the position type
    • getStretchType

      public StretchTypeEnum getStretchType()
      Description copied from interface: JRElement
      Indicates the stretch type for the element
      Specified by:
      getStretchType in interface JRElement
      Returns:
      a value representing one of the stretch type constants in StretchTypeEnum
    • setStretchType

      public void setStretchType(StretchTypeEnum stretchType)
      Description copied from interface: JRElement
      Specifies how the engine should treat a missing image.
      Specified by:
      setStretchType in interface JRElement
      Parameters:
      stretchType - a value representing one of the stretch type constants in StretchTypeEnum
    • isPrintRepeatedValues

      public boolean isPrintRepeatedValues()
      Description copied from interface: JRElement
      Specifies if the element value will be printed for every iteration, even if its value has not changed.
      Specified by:
      isPrintRepeatedValues in interface JRElement
      See Also:
    • setPrintRepeatedValues

      public void setPrintRepeatedValues(boolean isPrintRepeatedValues)
      Specified by:
      setPrintRepeatedValues in interface JRElement
    • getMode

      public ModeEnum getMode()
      Description copied from interface: JRCommonElement
      Returns the element transparency mode. The default value depends on the type of the report element. Graphic elements like rectangles and lines are opaque by default, but the images are transparent. Both static texts and text fields are transparent by default, and so are the subreport elements.
      Specified by:
      getMode in interface JRCommonElement
    • getOwnMode

      public ModeEnum getOwnMode()
      Specified by:
      getOwnMode in interface JRCommonElement
    • setMode

      public void setMode(ModeEnum mode)
      Description copied from interface: JRCommonElement
      Sets the element transparency mode.
      Specified by:
      setMode in interface JRCommonElement
    • getX

      public int getX()
      Description copied from interface: JRElement
      Gets the the section relative horizontal offset of the element top left corner.
      Specified by:
      getX in interface JRElement
    • setX

      public void setX(int x)
      Description copied from interface: JRElement
      Sets the the section relative horizontal offset of the element top left corner.
      Specified by:
      setX in interface JRElement
    • setY

      public void setY(int y)
    • getY

      public int getY()
      Description copied from interface: JRElement
      Gets the the section relative vertical offset of the element top left corner.
      Specified by:
      getY in interface JRElement
    • getWidth

      public int getWidth()
      Specified by:
      getWidth in interface JRCommonElement
    • setWidth

      public void setWidth(int width)
      Specified by:
      setWidth in interface JRElement
    • setHeight

      public void setHeight(int height)
    • getHeight

      public int getHeight()
      Specified by:
      getHeight in interface JRCommonElement
    • isRemoveLineWhenBlank

      public boolean isRemoveLineWhenBlank()
      Description copied from interface: JRElement
      Returns true if the remaining blank space appearing when the value is not printed will be removed. Under certain circumstances (the element has an empty string as its value or contains a repeated value that is supressed) the space reserved for the current element remains empty. If this method returns true, it means the engine will try to suppress the blank line, but will only succeed if no other elements occupy the same vertical space.
      Specified by:
      isRemoveLineWhenBlank in interface JRElement
    • setRemoveLineWhenBlank

      public void setRemoveLineWhenBlank(boolean isRemoveLine)
      Description copied from interface: JRElement
      Specifies whether the remaining blank space appearing when the value is not printed will be removed. Under certain circumstances (the element has an empty string as its value or contains a repeated value that is supressed) the space reserved for the current element remains empty. If the parameter is set to true, it means the engine will try to suppress the blank line, but will only succeed if no other elements occupy the same vertical space.
      Specified by:
      setRemoveLineWhenBlank in interface JRElement
    • isPrintInFirstWholeBand

      public boolean isPrintInFirstWholeBand()
      Description copied from interface: JRElement
      Returns true if an element with a printRepeatedValues attribute set to true will be redisplayed for every new page or column that is not an overflow from a previous page or column.
      Specified by:
      isPrintInFirstWholeBand in interface JRElement
      See Also:
    • setPrintInFirstWholeBand

      public void setPrintInFirstWholeBand(boolean isPrint)
      Description copied from interface: JRElement
      Specifies whether an element with a printRepeatedValues attribute set to true should be redisplayed for every new page or column that is not an overflow from a previous page or column.
      Specified by:
      setPrintInFirstWholeBand in interface JRElement
      See Also:
    • isPrintWhenDetailOverflows

      public boolean isPrintWhenDetailOverflows()
      Description copied from interface: JRElement
      If this is set to true, the element will be reprinted on the next page if the band does not fit in the current page. Actually if there is at least one element with this attribute, the band is redisplayed from the beginning, except those elements that fitted in the current page and have isPrintWhenDetailOverflow set to false.
      Specified by:
      isPrintWhenDetailOverflows in interface JRElement
    • setPrintWhenDetailOverflows

      public void setPrintWhenDetailOverflows(boolean isPrint)
      Description copied from interface: JRElement
      If this is set to true, the element will be reprinted on the next page if the band does not fit in the current page. Actually if there is at least one element with this attribute, the band is redisplayed from the beginning, except those elements that fitted in the current page and have isPrintWhenDetailOverflow set to false.
      Specified by:
      setPrintWhenDetailOverflows in interface JRElement
    • getForecolor

      public Color getForecolor()
      Specified by:
      getForecolor in interface JRCommonElement
    • getOwnForecolor

      public Color getOwnForecolor()
      Specified by:
      getOwnForecolor in interface JRCommonElement
    • setForecolor

      public void setForecolor(Color forecolor)
      Specified by:
      setForecolor in interface JRCommonElement
    • getBackcolor

      public Color getBackcolor()
      Specified by:
      getBackcolor in interface JRCommonElement
    • getOwnBackcolor

      public Color getOwnBackcolor()
      Specified by:
      getOwnBackcolor in interface JRCommonElement
    • setBackcolor

      public void setBackcolor(Color backcolor)
      Specified by:
      setBackcolor in interface JRCommonElement
    • getStyleExpression

      public JRExpression getStyleExpression()
      Description copied from interface: JRElement
      Gets the expression that is evaluated in order to obtain the runtime style name to be used for the element. When used, this expression takes precedence over the JRStyleContainer.getStyle() or JRStyleContainer.getStyleNameReference().
      Specified by:
      getStyleExpression in interface JRElement
    • getPrintWhenExpression

      public JRExpression getPrintWhenExpression()
      Description copied from interface: JRElement
      Gets the expression that is evaluated in order to decide if the element should be displayed. This expression always returns a boolean value.
      Specified by:
      getPrintWhenExpression in interface JRElement
    • getPrintWhenGroupChanges

      public String getPrintWhenGroupChanges()
      Description copied from interface: JRElement
      Returns the group for which an element with a printRepeatedValues attribute set to true will be redisplayed even if the value has not changed.
      Specified by:
      getPrintWhenGroupChanges in interface JRElement
      See Also:
    • getElementGroup

      public JRElementGroup getElementGroup()
      Description copied from interface: JRElement
      Indicates the logical group that the element belongs to. More elements can be grouped in order to make some of them stretch relative to the height of their parent group.
      Specified by:
      getElementGroup in interface JRElement
      See Also:
    • isPrintWhenExpressionNull

      protected boolean isPrintWhenExpressionNull()
    • setPrintWhenExpressionNull

      protected void setPrintWhenExpressionNull(boolean isPrintWhenExpressionNull)
    • isPrintWhenTrue

      protected boolean isPrintWhenTrue()
    • setPrintWhenTrue

      protected void setPrintWhenTrue(boolean isPrintWhenTrue)
    • isToPrint

      public boolean isToPrint()
    • setToPrint

      protected void setToPrint(boolean isToPrint)
    • isReprinted

      protected boolean isReprinted()
    • setReprinted

      protected void setReprinted(boolean isReprinted)
    • isAlreadyPrinted

      public boolean isAlreadyPrinted()
    • setAlreadyPrinted

      public void setAlreadyPrinted(boolean isAlreadyPrinted)
    • getGroupElements

      protected JRElement[] getGroupElements()
    • getDependantElements

      protected Collection<JRFillElement> getDependantElements()
    • addDependantElement

      protected void addDependantElement(JRFillElement element)
    • getRelativeY

      protected int getRelativeY()
    • setRelativeY

      protected void setRelativeY(int relativeY)
    • getCollapsedHeightAbove

      protected int getCollapsedHeightAbove()
    • setCollapsedHeightAbove

      protected void setCollapsedHeightAbove(int collapsedHeightAbove)
    • getCollapsedHeightBelow

      protected int getCollapsedHeightBelow()
    • setCollapsedHeightBelow

      protected void setCollapsedHeightBelow(int collapsedHeightBelow)
    • getStretchHeight

      public int getStretchHeight()
    • setStretchHeight

      protected void setStretchHeight(int stretchHeight)
    • getPrepareHeight

      public int getPrepareHeight()
    • setPrepareHeight

      protected void setPrepareHeight(int prepareHeight)
      Element height is calculated in two phases. First, the element stretches on its own during prepare, to accommodate all its content. This is the natural stretch and we keep track of the calculated height in prepareHeight. Secondly, the element stretches further in accordance with its stretchType property. This forced stretch occurs at a later time and the amount of stretch is kept in stretchHeight.
    • getBand

      protected JRFillBand getBand()
    • setBand

      protected void setBand(JRFillBand band)
    • initStyleProviders

      protected void initStyleProviders()
    • reset

      protected void reset()
    • setCurrentEvaluation

      protected void setCurrentEvaluation(byte evaluation)
    • evaluate

      protected abstract void evaluate(byte evaluation) throws JRException
      Throws:
      JRException
    • evaluateStyle

      protected void evaluateStyle(byte evaluation) throws JRException
      Throws:
      JRException
    • getTimeZone

      protected TimeZone getTimeZone()
    • evaluatePrintWhenExpression

      protected void evaluatePrintWhenExpression(byte evaluation) throws JRException
      Throws:
      JRException
    • rewind

      protected abstract void rewind() throws JRException
      Throws:
      JRException
    • fill

      protected abstract JRPrintElement fill() throws JRException
      Throws:
      JRException
    • getElementTemplate

      protected JRTemplateElement getElementTemplate()
    • createElementTemplate

      protected abstract JRTemplateElement createElementTemplate()
    • toPopulateTemplateStyle

      protected boolean toPopulateTemplateStyle()
    • prepare

      protected boolean prepare(int availableHeight, boolean isOverflow, boolean isOverflowAllowed) throws JRException
      Throws:
      JRException
    • stretchElement

      protected boolean stretchElement(int containerStretch)
    • stretchElementToContainer

      protected boolean stretchElementToContainer(int containerStretch)
    • stretchElementToElementGroup

      protected boolean stretchElementToElementGroup()
    • stretchElementToHeight

      protected boolean stretchElementToHeight(int stretchHeight)
      This method returns a boolean signaling if any stretch change occurred. It does not say which amount of stretch was applied, but that is OK, because the only place where this is checked is during frame cascading stretch, where the stretchHeight field of the frame (set here) is used directly.
    • moveDependantElements

      protected void moveDependantElements()
    • resolveElement

      protected abstract void resolveElement(JRPrintElement element, byte evaluation) throws JRException
      Resolves an element.
      Parameters:
      element - the element
      evaluation - the evaluation type
      Throws:
      JRException
    • performDelayedEvaluation

      protected void performDelayedEvaluation(JRPrintElement element, byte evaluation) throws JRException
      Throws:
      JRException
    • delayedEvaluationUpdatesTemplate

      protected boolean delayedEvaluationUpdatesTemplate()
    • evaluateExpression

      public final Object evaluateExpression(JRExpression expression, byte evaluation) throws JRException
      Evaluates an expression.
      Parameters:
      expression - the expression
      evaluation - the evaluation type
      Returns:
      the evaluation result
      Throws:
      JRException
    • isValueRepeating

      protected boolean isValueRepeating()
      Decides whether the value for this element is repeating.

      Dynamic elements should call setValueRepeating(boolean) on evaluate(byte). Static elements don't have to do anything, this method will return true by default.

      Returns:
      whether the value for this element is repeating
      See Also:
    • setValueRepeating

      protected void setValueRepeating(boolean isValueRepeating)
      Sets the repeating flag for this element.

      This method should be called by dynamic elements on evaluate(byte).

      Parameters:
      isValueRepeating - whether the value of the element is repeating
      See Also:
    • getVariable

      protected JRFillVariable getVariable(String variableName)
    • getField

      protected JRFillField getField(String fieldName)
    • getEvaluationTime

      protected EvaluationTimeEnum getEvaluationTime()
    • resolveElement

      protected void resolveElement(JRPrintElement element, byte evaluation, JREvaluationTime evaluationTime) throws JRException
      Resolves an element.
      Parameters:
      element - the element
      evaluation - the evaluation type
      evaluationTime - the current evaluation time
      Throws:
      JRException
    • initDelayedEvaluations

      protected void initDelayedEvaluations()
    • collectDelayedEvaluations

      protected void collectDelayedEvaluations()
    • collectStyleDelayedEvaluations

      protected void collectStyleDelayedEvaluations()
    • collectDelayedEvaluations

      protected void collectDelayedEvaluations(JRStyle style)
    • collectDelayedEvaluations

      protected void collectDelayedEvaluations(JRExpression expression)
    • collectStyleProviderDelayedEvaluations

      protected void collectStyleProviderDelayedEvaluations()
    • initDelayedEvaluationPrint

      protected void initDelayedEvaluationPrint(JRRecordedValuesPrintElement printElement) throws JRException
      Throws:
      JRException
    • delayedEvaluate

      protected void delayedEvaluate(JRRecordedValuesPrintElement printElement, JREvaluationTime evaluationTime, byte evaluation) throws JRException
      Throws:
      JRException
    • setConditionalStylesContainer

      public void setConditionalStylesContainer(JRFillElementContainer conditionalStylesContainer)
    • getConditionalStylesContainer

      public JRFillElementContainer getConditionalStylesContainer()
    • getStyle

      public JRStyle getStyle()
      Description copied from interface: JRStyleContainer
      Returns this object's style.
      Specified by:
      getStyle in interface JRStyleContainer
      Returns:
      this object's style
    • getTemplate

      protected JRTemplateElement getTemplate(JRStyle style)
    • registerTemplate

      protected void registerTemplate(JRStyle style, JRTemplateElement template)
    • setShrinkable

      protected final void setShrinkable(boolean shrinkable)
      Indicates whether an element is shrinkable.

      This flag is only effective when isRemoveLineWhenBlank is also set.

      Parameters:
      shrinkable - whether the element is shrinkable
    • isEvaluateNow

      protected boolean isEvaluateNow()
    • isAutoEvaluateNow

      protected boolean isAutoEvaluateNow()
    • isEvaluateAuto

      protected boolean isEvaluateAuto()
    • getStyleNameReference

      public String getStyleNameReference()
      Description copied from interface: JRStyleContainer
      Returns the name of an external style which is to be used by this object.

      External styles are defined in templates and are resolved at fill time. This attribute is only effective if no direct style (as returned by getStyle() is specified for this object.

      Specified by:
      getStyleNameReference in interface JRStyleContainer
      Returns:
      the name of an external style
    • setStyle

      public void setStyle(JRStyle style)
      Description copied from interface: JRStyleSetter
      Set the style on the object.

      In some cases, this method is invoked after the object has requested its style to be set.

      Specified by:
      setStyle in interface JRStyleSetter
      Parameters:
      style - the style to be used by the object
    • setStyleNameReference

      public void setStyleNameReference(String name)
      Description copied from interface: JRStyleSetter
      Set the name of an external style that is to be used by the object.
      Specified by:
      setStyleNameReference in interface JRStyleSetter
      Parameters:
      name - the name of an external style
    • clone

      public Object clone()
      Specified by:
      clone in interface JRCloneable
      Overrides:
      clone in class Object
    • clone

      public Object clone(JRElementGroup parentGroup)
      Specified by:
      clone in interface JRChild
    • clone

      public JRElement clone(JRElementGroup parentGroup, int y)
      Specified by:
      clone in interface JRElement
    • hasProperties

      public boolean hasProperties()
      Description copied from interface: JRPropertiesHolder
      Checks whether the object has any properties.
      Specified by:
      hasProperties in interface JRPropertiesHolder
      Returns:
      whether the object has any properties
    • getPropertiesMap

      public JRPropertiesMap getPropertiesMap()
      Description copied from interface: JRPropertiesHolder
      Returns this object's properties map.
      Specified by:
      getPropertiesMap in interface JRPropertiesHolder
      Returns:
      this object's properties map
    • getParentProperties

      public JRPropertiesHolder getParentProperties()
      Description copied from interface: JRPropertiesHolder
      Returns the parent properties holder, whose properties are used as defaults for this object.
      Specified by:
      getParentProperties in interface JRPropertiesHolder
      Returns:
      the parent properties holder, or null if no parent
    • getPropertyExpressions

      public JRPropertyExpression[] getPropertyExpressions()
      Description copied from interface: JRElement
      Returns the list of dynamic/expression-based properties for this report element.
      Specified by:
      getPropertyExpressions in interface JRElement
      Returns:
      an array containing the expression-based properties of this report element
    • transferProperties

      protected void transferProperties(JRTemplateElement template)
    • transferProperties

      protected void transferProperties(JRPrintElement element)
    • getEvaluatedProperties

      protected JRPropertiesMap getEvaluatedProperties()
    • evaluateProperties

      protected void evaluateProperties(byte evaluation) throws JRException
      Throws:
      JRException
    • setOriginProvider

      protected void setOriginProvider(JROriginProvider originProvider)
    • getElementOrigin

      protected JROrigin getElementOrigin()
    • isDelayedStyleEvaluation

      protected boolean isDelayedStyleEvaluation()
    • getFiller

      public JRBaseFiller getFiller()
    • hasDynamicProperties

      public boolean hasDynamicProperties()
      Specified by:
      hasDynamicProperties in interface DynamicPropertiesHolder
    • hasDynamicProperty

      public boolean hasDynamicProperty(String name)
      Specified by:
      hasDynamicProperty in interface DynamicPropertiesHolder
    • getDynamicProperties

      public JRPropertiesMap getDynamicProperties()
      Specified by:
      getDynamicProperties in interface DynamicPropertiesHolder
    • getInitStyle

      protected JRStyle getInitStyle()
    • getParent

      protected JRElement getParent()
    • addDynamicProperty

      protected void addDynamicProperty(String name, JRExpression expression)
    • setExpressionEvaluator

      protected void setExpressionEvaluator(JRFillExpressionEvaluator expressionEvaluator)
    • getBookmarkLevel

      public static Integer getBookmarkLevel(Object value) throws JRException
      Throws:
      JRException