/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright (c) 2001 - 2009 Object Refinery Ltd, Pentaho Corporation and Contributors.. All rights reserved.
*/
package org.pentaho.reporting.engine.classic.core.elementfactory;
import java.awt.Color;
import java.awt.geom.Dimension2D;
import java.awt.geom.Point2D;
import org.pentaho.reporting.engine.classic.core.Element;
import org.pentaho.reporting.engine.classic.core.ElementAlignment;
import org.pentaho.reporting.engine.classic.core.style.BorderStyle;
import org.pentaho.reporting.engine.classic.core.style.ElementStyleKeys;
import org.pentaho.reporting.engine.classic.core.style.ElementStyleSheet;
import org.pentaho.reporting.engine.classic.core.style.FontSmooth;
import org.pentaho.reporting.engine.classic.core.style.TextStyleKeys;
import org.pentaho.reporting.libraries.base.util.FloatDimension;
/**
* The class element factory is the base class for all Element Factories. Element factories can be used to create
* predefined element types. The properties allow null values, if a property is null, it will not be defined. Undefined
* properties can inherit their values from the element's parent bands or the default-stylesheet. Whether a property is
* inheritable from the parent is defined in the style-key itself.
*
* @author Thomas Morgner
*/
public abstract class ElementFactory
{
/**
* The name of the new element.
*/
private String name;
/**
* The elements minimum width. A number between 0 and -100 specifies the width as relative size given in percent of
* the parent's width or height (depending on the layout model of the band that contains this element).
*/
private Float minimumWidth;
/**
* The elements minimum height. A number between 0 and -100 specifies the width as relative size given in percent of
* the parent's width or height (depending on the layout model of the band that contains this element).
*/
private Float minimumHeight;
/**
* The elements maximum width. The maximum width cannot have relative values.
*/
private Float maximumWidth;
/**
* The elements maximum height. The maximum height cannot have relative values.
*/
private Float maximumHeight;
/**
* The elements preferred width. A number between 0 and -100 specifies the width as relative size given in percent of
* the parent's width or height (depending on the layout model of the band that contains this element).
*/
private Float width;
/**
* The elements preferred height. A number between 0 and -100 specifies the width as relative size given in percent of
* the parent's width or height (depending on the layout model of the band that contains this element).
*/
private Float height;
/**
* The elements absolute horizontal position for the canvas-layout. The position is relative to the parents upper left
* corner of the content-area. A number between 0 and -100 specifies the width as relative size given in percent of
* the parent's width or height (depending on the layout model of the band that contains this element).
*/
private Float x;
/**
* The elements absolute vertical position for the canvas-layout. The position is relative to the parents upper left
* corner of the content-area. A number between 0 and -100 specifies the width as relative size given in percent of
* the parent's width or height (depending on the layout model of the band that contains this element).
*/
private Float y;
/**
* The elements dynamic content height flag.
*/
private Boolean dynamicHeight;
/**
* The elements visible flag.
*/
private Boolean visible;
/**
* Defines whether the layouter will try to avoid to generate pagebreaks inside this element. If the element does not
* fit on the current page, it will be moved to the next page. Only if this next page does not have enough space to
* hold this element, a pagebreak will be generated inside the element.
*/
private Boolean avoidPagebreaks;
/**
* Defines, whether text contained in this element will overflow horizontally. This will generate overlapping text in
* the pageable outputs without increasing the total size of the element. Activating this property may cause rendering
* artifacts.
*/
private Boolean overflowX;
/**
* Defines, whether text contained in this element will overflow vertically. This will generate overlapping text in
* the pageable outputs without increasing the total size of the element. Activating this property may cause rendering
* artifacts.
*/
private Boolean overflowY;
/**
* Defines the number of widow-lines in this element. This avoids pagebreaks inside the first number of lines of a
* paragraph. If a pagebreak would occur inside the widow-segment, the whole box will be shifted to the next page.
*/
private Integer widows;
/**
* Defines the number of orphan-lines in this element. This avoids pagebreaks inside the last number of lines of a
* paragraph. If a pagebreak would occur inside the orphan-segment, the whole number of orphan lines or the whole box
* will be shifted to the next page.
*/
private Integer orphans;
/**
* The background color of the box.
*/
private Color backgroundColor;
/**
* Defines the global padding of this box. Padding defines the empty area between the border and the content of an
* element. This property defines a short-hand property for all other padding properties. Paddings cannot have
* relative sizes.
*/
private Float padding;
/**
* Defines the top padding of this box. Padding defines the empty area between the border and the content of an
* element. Paddings cannot have relative sizes.
*/
private Float paddingTop;
/**
* Defines the left padding of this box. Padding defines the empty area between the border and the content of an
* element. Paddings cannot have relative sizes.
*/
private Float paddingLeft;
/**
* Defines the bottom padding of this box. Padding defines the empty area between the border and the content of an
* element. Paddings cannot have relative sizes.
*/
private Float paddingBottom;
/**
* Defines the right padding of this box. Padding defines the empty area between the border and the content of an
* element. Paddings cannot have relative sizes.
*/
private Float paddingRight;
/**
* Defines the global border width of this box. A border width of zero effectively disables the border. A number
* between 0 and -100 specifies the width as relative size given in percent of the parent's width or height (depending
* on the layout model of the band that contains this element). This property defines a short-hand property for all
* other border-width properties.
*/
private Float borderWidth;
/**
* Defines the top border width of this box. A border width of zero effectively disables the border. A number between
* 0 and -100 specifies the width as relative size given in percent of the parent's width or height (depending on the
* layout model of the band that contains this element).
*/
private Float borderTopWidth;
/**
* Defines the left border width of this box. A border width of zero effectively disables the border. A number between
* 0 and -100 specifies the width as relative size given in percent of the parent's width or height (depending on the
* layout model of the band that contains this element).
*/
private Float borderLeftWidth;
/**
* Defines the bottom border width of this box. A border width of zero effectively disables the border. A number
* between 0 and -100 specifies the width as relative size given in percent of the parent's width or height (depending
* on the layout model of the band that contains this element).
*/
private Float borderBottomWidth;
/**
* Defines the right border width of this box. A border width of zero effectively disables the border. A number
* between 0 and -100 specifies the width as relative size given in percent of the parent's width or height (depending
* on the layout model of the band that contains this element).
*/
private Float borderRightWidth;
/**
* Defines the break border width of this box. A border width of zero effectively disables the border. A number
* between 0 and -100 specifies the width as relative size given in percent of the parent's width or height (depending
* on the layout model of the band that contains this element).
* <p/>
* The break border is applied to all inner border-edges of elements that got split on a pagebreak.
*/
private Float borderBreakWidth;
/**
* Defines the global border-style for the element. If the border-style is set to NONE or undefined, the border-size
* property will be ignored and no border is rendered. This property defines a short-hand property for all other
* border-style properties.
*/
private BorderStyle borderStyle;
/**
* Defines the top border-style for the element. If the border-style is set to NONE or undefined, the border-size
* property will be ignored and no border is rendered.
*/
private BorderStyle borderTopStyle;
/**
* Defines the left border-style for the element. If the border-style is set to NONE or undefined, the border-size
* property will be ignored and no border is rendered.
*/
private BorderStyle borderLeftStyle;
/**
* Defines the bottom border-style for the element. If the border-style is set to NONE or undefined, the border-size
* property will be ignored and no border is rendered.
*/
private BorderStyle borderBottomStyle;
/**
* Defines the right border-style for the element. If the border-style is set to NONE or undefined, the border-size
* property will be ignored and no border is rendered.
*/
private BorderStyle borderRightStyle;
/**
* Defines the break border-style for the element. If the border-style is set to NONE or undefined, the border-size
* property will be ignored and no border is rendered.
* <p/>
* The break border is applied to all inner border-edges of elements that got split on a pagebreak.
*/
private BorderStyle borderBreakStyle;
/**
* Defines the global border-color. This property defines a short-hand property for all other border-color
* properties.
*/
private Color borderColor;
/**
* Defines the top border-color.
*/
private Color borderTopColor;
/**
* Defines the left border-color.
*/
private Color borderLeftColor;
/**
* Defines the bottom border-color.
*/
private Color borderBottomColor;
/**
* Defines the right border-color.
*/
private Color borderRightColor;
/**
* Defines the break border-color.
*/
private Color borderBreakColor;
/**
* Defines the global width of the border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have rounded corners. This property is a short-hand property for all other
* border-radius properties.
* <p/>
* Split borders cannot have rounded-corners.
*/
private Float borderRadiusWidth;
/**
* Defines the global height of the border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have rounded corners. This property is a short-hand property for all other
* border-radius properties.
* <p/>
* Split borders cannot have rounded-corners.
*/
private Float borderRadiusHeight;
/**
* Defines the width of the bottom-left border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have a rounded bottom-left corner.
*/
private Float borderBottomLeftRadiusWidth;
/**
* Defines the width of the bottom-right border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have a rounded bottom-right corner.
*/
private Float borderBottomRightRadiusWidth;
/**
* Defines the width of the top-left border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have a rounded top-left corner.
*/
private Float borderTopLeftRadiusWidth;
/**
* Defines the width of the top-right border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have a rounded top-right corner.
*/
private Float borderTopRightRadiusWidth;
/**
* Defines the height of the bottom-left border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have a rounded bottom-left corner.
*/
private Float borderBottomLeftRadiusHeight;
/**
* Defines the height of the bottom-right border-radius for this element. If the border radius has a non-zero width
* and height, the element's border will have a rounded bottom-right corner.
*/
private Float borderBottomRightRadiusHeight;
/**
* Defines the height of the top-left border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have a rounded top-left corner.
*/
private Float borderTopLeftRadiusHeight;
/**
* Defines the height of the top-right border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have a rounded top-right corner.
*/
private Float borderTopRightRadiusHeight;
/**
* Defines the text color.
*/
private Color color;
/**
* Defines the vertical alignment of the content.
*/
private ElementAlignment verticalAlignment;
/**
* Defines the horizontal alignment of the content.
*/
private ElementAlignment horizontalAlignment;
/**
* The URL for an hyperlink that contains this element as content.
*/
private String hRefTarget;
/**
* The target-window for the hyperlink defined for this element.
*/
private String hRefWindow;
/**
* The href-title for the hyperlink defined for this element.
*/
private String hRefTitle;
/**
* Defines, whether font smoothing (also known as text-aliasing) is applied to the element. If the font-smooth
* property is undefined or auto, the actual value will be comptued depending on the element's font size.
*/
private FontSmooth fontSmooth;
private Boolean useMinChunkWidth;
/**
* Default Constructor.
*/
protected ElementFactory()
{
}
/**
* Returns the defined global padding of this box. Padding defines the empty area between the border and the content
* of an element. This property defines a short-hand property for all other padding properties. Paddings cannot have
* relative sizes.
*
* @return the padding or null, if none is defined here.
*/
public Float getPadding()
{
return padding;
}
/**
* Defines the global padding of this box. Padding defines the empty area between the border and the content of an
* element. This property defines a short-hand property for all other padding properties. Paddings cannot have
* relative sizes.
*
* @param padding the padding or null, if the default should be used.
*/
public void setPadding(final Float padding)
{
this.padding = padding;
}
/**
* Returns the defined global border width of this box. A border width of zero effectively disables the border. A
* number between 0 and -100 specifies the width as relative size given in percent of the parent's width or height
* (depending on the layout model of the band that contains this element). This property defines a short-hand property
* for all other border-width properties.
*
* @return the defined border-width or null, if none is defined here.
*/
public Float getBorderWidth()
{
return borderWidth;
}
/**
* Defines the global border width of this box. A border width of zero effectively disables the border. A number
* between 0 and -100 specifies the width as relative size given in percent of the parent's width or height (depending
* on the layout model of the band that contains this element). This property defines a short-hand property for all
* other border-width properties.
*
* @param borderWidth the defined border width or null, if the default should be used.
*/
public void setBorderWidth(final Float borderWidth)
{
this.borderWidth = borderWidth;
}
/**
* Returns the defined global border-style for the element. If the border-style is set to NONE or undefined, the
* border-size property will be ignored and no border is rendered. This property defines a short-hand property for all
* other border-style properties.
*
* @return the defined border-style or null, if the default should be used.
*/
public BorderStyle getBorderStyle()
{
return borderStyle;
}
/**
* Defines the global border-style for the element. If the border-style is set to NONE or undefined, the border-size
* property will be ignored and no border is rendered. This property defines a short-hand property for all other
* border-style properties.
*
* @param borderStyle the defined border-style or null, if none is defined here.
*/
public void setBorderStyle(final BorderStyle borderStyle)
{
this.borderStyle = borderStyle;
}
/**
* Returns the defined global border-color. This property defines a short-hand property for all other border-color
* properties.
*
* @return the border-color for all borders or null, if no global color is defined.
*/
public Color getBorderColor()
{
return borderColor;
}
/**
* Defines the global border-color. This property defines a short-hand property for all other border-color
* properties.
*
* @param borderColor the defined color for all borders or null, if no global color is defined.
*/
public void setBorderColor(final Color borderColor)
{
this.borderColor = borderColor;
}
/**
* Returns the defined global border-radius for this element. If the border radius has a non-zero width and height,
* the element's border will have rounded corners. This property is a short-hand property for all other border-radius
* properties.
*
* @return the defined border-radius for all corners of this element or null, if no global default is defined here.
*/
public Dimension2D getBorderRadius()
{
if (borderRadiusWidth == null || borderRadiusHeight == null)
{
return null;
}
return new FloatDimension(borderRadiusWidth.floatValue(), borderRadiusHeight.floatValue());
}
/**
* Defines the global border-radius for this element. If the border radius has a non-zero width and height, the
* element's border will have rounded corners. This property is a short-hand property for all other border-radius
* properties.
* <p/>
*
* @param borderRadius the defined border-radius for all corners of this element or null, if no global default should
* be defined here.
*/
public void setBorderRadius(final Dimension2D borderRadius)
{
if (borderRadius == null)
{
this.borderRadiusWidth = null;
this.borderRadiusHeight = null;
}
else
{
this.borderRadiusWidth = new Float(borderRadius.getWidth());
this.borderRadiusHeight = new Float(borderRadius.getHeight());
}
}
/**
* Returns the defined global width of the border-radius for this element. If the border radius has a non-zero width
* and height, the element's border will have rounded corners. This property is a short-hand property for all other
* border-radius properties.
*
* @return the defined width of the border-radius for all corners of this element or null, if no global default is
* defined here.
*/
public Float getBorderRadiusWidth()
{
return borderRadiusWidth;
}
/**
* Defines the global width of the border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have rounded corners. This property is a short-hand property for all other
* border-radius properties.
* <p/>
*
* @param borderRadiusWidth the defined width of the border-radius for all corners of this element or null, if no
* global default should be defined here.
*/
public void setBorderRadiusWidth(final Float borderRadiusWidth)
{
this.borderRadiusWidth = borderRadiusWidth;
}
/**
* Returns the defined global height of the border-radius for this element. If the border radius has a non-zero width
* and height, the element's border will have rounded corners. This property is a short-hand property for all other
* border-radius properties.
*
* @return the defined height of the border-radius for all corners of this element or null, if no global default is
* defined here.
*/
public Float getBorderRadiusHeight()
{
return borderRadiusHeight;
}
/**
* Defines the global height of the border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have rounded corners. This property is a short-hand property for all other
* border-radius properties.
* <p/>
*
* @param borderRadiusHeight the defined height of the border-radius for all corners of this element or null, if no
* global default should be defined here.
*/
public void setBorderRadiusHeight(final Float borderRadiusHeight)
{
this.borderRadiusHeight = borderRadiusHeight;
}
/**
* Returns the defined bottom-left border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have a rounded bottom-left corner.
*
* @return the defined border-radius for the bottom-left corner of this element or null, if this property is
* undefined.
*/
public Dimension2D getBorderBottomLeftRadius()
{
if (borderBottomLeftRadiusWidth == null || borderBottomLeftRadiusHeight == null)
{
return null;
}
return new FloatDimension(borderBottomLeftRadiusWidth.floatValue(), borderBottomLeftRadiusHeight.floatValue());
}
/**
* Defines the bottom-left border-radius for this element. If the border radius has a non-zero width and height, the
* element's border will have a rounded bottom-left corner.
*
* @param borderRadius the defined border-radius for the bottom-left corner of this element or null, if this property
* should be undefined.
*/
public void setBorderBottomLeftRadius(final Dimension2D borderRadius)
{
if (borderRadius == null)
{
this.borderBottomLeftRadiusWidth = null;
this.borderBottomLeftRadiusHeight = null;
}
else
{
this.borderBottomLeftRadiusWidth = new Float(borderRadius.getWidth());
this.borderBottomLeftRadiusHeight = new Float(borderRadius.getHeight());
}
}
/**
* Returns width of the defined bottom-left border-radius for this element. If the border radius has a non-zero width
* and height, the element's border will have a rounded bottom-left corner.
*
* @return the defined width of the border-radius for the bottom-left corner of this element or null, if this property
* is undefined.
*/
public Float getBorderBottomLeftRadiusWidth()
{
return borderBottomLeftRadiusWidth;
}
/**
* Defines width of the bottom-left border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have a rounded bottom-left corner.
*
* @param borderBottomLeftRadiusWidth the width of the defined border-radius for the bottom-left corner of this
* element or null, if this property should be undefined.
*/
public void setBorderBottomLeftRadiusWidth(final Float borderBottomLeftRadiusWidth)
{
this.borderBottomLeftRadiusWidth = borderBottomLeftRadiusWidth;
}
/**
* Returns height of the defined bottom-left border-radius for this element. If the border radius has a non-zero width
* and height, the element's border will have a rounded bottom-left corner.
*
* @return the defined height of the border-radius for the bottom-left corner of this element or null, if this
* property is undefined.
*/
public Float getBorderBottomLeftRadiusHeight()
{
return borderBottomLeftRadiusHeight;
}
/**
* Defines height of the bottom-left border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have a rounded bottom-left corner.
*
* @param borderBottomLeftRadiusHeight the height of the defined border-radius for the bottom-left corner of this
* element or null, if this property should be undefined.
*/
public void setBorderBottomLeftRadiusHeight(final Float borderBottomLeftRadiusHeight)
{
this.borderBottomLeftRadiusHeight = borderBottomLeftRadiusHeight;
}
/**
* Returns the defined bottom-right border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have a rounded bottom-right corner.
*
* @return the defined border-radius for the bottom-right corner of this element or null, if this property is
* undefined.
*/
public Dimension2D getBorderBottomRightRadius()
{
if (borderBottomRightRadiusWidth == null || borderBottomRightRadiusHeight == null)
{
return null;
}
return new FloatDimension(borderBottomRightRadiusWidth.floatValue(), borderBottomRightRadiusHeight.floatValue());
}
/**
* Defines the bottom-right border-radius for this element. If the border radius has a non-zero width and height, the
* element's border will have a rounded bottom-right corner.
*
* @param borderRadius the defined border-radius for the bottom-right corner of this element or null, if this property
* should be undefined.
*/
public void setBorderBottomRightRadius(final Dimension2D borderRadius)
{
if (borderRadius == null)
{
this.borderBottomRightRadiusWidth = null;
this.borderBottomRightRadiusHeight = null;
}
else
{
this.borderBottomRightRadiusWidth = new Float(borderRadius.getWidth());
this.borderBottomRightRadiusHeight = new Float(borderRadius.getHeight());
}
}
/**
* Returns the width of the defined bottom-right border-radius for this element. If the border radius has a non-zero
* width and height, the element's border will have a rounded bottom-right corner.
*
* @return the width of the defined border-radius for the bottom-right corner of this element or null, if this
* property is undefined.
*/
public Float getBorderBottomRightRadiusWidth()
{
return borderBottomRightRadiusWidth;
}
/**
* Defines the width of the bottom-right border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have a rounded bottom-right corner.
*
* @param borderBottomRightRadiusWidth the width of the defined border-radius for the bottom-right corner of this
* element or null, if this property should be undefined.
*/
public void setBorderBottomRightRadiusWidth(final Float borderBottomRightRadiusWidth)
{
this.borderBottomRightRadiusWidth = borderBottomRightRadiusWidth;
}
/**
* Returns the height of the defined bottom-right border-radius for this element. If the border radius has a non-zero
* width and height, the element's border will have a rounded bottom-right corner.
*
* @return the height of the defined border-radius for the bottom-right corner of this element or null, if this
* property is undefined.
*/
public Float getBorderBottomRightRadiusHeight()
{
return borderBottomRightRadiusHeight;
}
/**
* Defines the height of the bottom-right border-radius for this element. If the border radius has a non-zero width
* and height, the element's border will have a rounded bottom-right corner.
*
* @param borderBottomRightRadiusHeight the height of the defined border-radius for the bottom-right corner of this
* element or null, if this property should be undefined.
*/
public void setBorderBottomRightRadiusHeight(final Float borderBottomRightRadiusHeight)
{
this.borderBottomRightRadiusHeight = borderBottomRightRadiusHeight;
}
/**
* Returns the defined top-left border-radius for this element. If the border radius has a non-zero width and height,
* the element's border will have a rounded top-left corner.
*
* @return the defined border-radius for the top-left corner of this element or null, if this property is undefined.
*/
public Dimension2D getBorderTopLeftRadius()
{
if (borderTopLeftRadiusWidth == null || borderTopLeftRadiusHeight == null)
{
return null;
}
return new FloatDimension(borderTopLeftRadiusWidth.floatValue(), borderTopLeftRadiusHeight.floatValue());
}
/**
* Defines the top-left border-radius for this element. If the border radius has a non-zero width and height, the
* element's border will have a rounded top-left corner.
*
* @param borderRadius the defined border-radius for the top-left corner of this element or null, if this property
* should be undefined.
*/
public void setBorderTopLeftRadius(final Dimension2D borderRadius)
{
if (borderRadius == null)
{
this.borderTopLeftRadiusWidth = null;
this.borderTopLeftRadiusHeight = null;
}
else
{
this.borderTopLeftRadiusWidth = new Float(borderRadius.getWidth());
this.borderTopLeftRadiusHeight = new Float(borderRadius.getHeight());
}
}
/**
* Returns the width of the defined top-left border-radius for this element. If the border radius has a non-zero width
* and height, the element's border will have a rounded top-left corner.
*
* @return the width of the defined border-radius for the top-left corner of this element or null, if this property is
* undefined.
*/
public Float getBorderTopLeftRadiusWidth()
{
return borderTopLeftRadiusWidth;
}
/**
* Defines the width of the top-left border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have a rounded top-left corner.
*
* @param borderTopLeftRadiusWidth the width of the defined border-radius for the top-left corner of this element or
* null, if this property should be undefined.
*/
public void setBorderTopLeftRadiusWidth(final Float borderTopLeftRadiusWidth)
{
this.borderTopLeftRadiusWidth = borderTopLeftRadiusWidth;
}
/**
* Returns the height of the defined top-left border-radius for this element. If the border radius has a non-zero
* width and height, the element's border will have a rounded top-left corner.
*
* @return the height of the defined border-radius for the top-left corner of this element or null, if this property
* is undefined.
*/
public Float getBorderTopLeftRadiusHeight()
{
return borderTopLeftRadiusHeight;
}
/**
* Defines the height of the top-left border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have a rounded top-left corner.
*
* @param borderTopLeftRadiusHeight the height of the defined border-radius for the top-left corner of this element or
* null, if this property should be undefined.
*/
public void setBorderTopLeftRadiusHeight(final Float borderTopLeftRadiusHeight)
{
this.borderTopLeftRadiusHeight = borderTopLeftRadiusHeight;
}
/**
* Returns the defined top-right border-radius for this element. If the border radius has a non-zero width and height,
* the element's border will have a rounded top-right corner.
*
* @return the defined border-radius for the top-right corner of this element or null, if this property is undefined.
*/
public Dimension2D getBorderTopRightRadius()
{
if (borderTopRightRadiusWidth == null || borderTopRightRadiusHeight == null)
{
return null;
}
return new FloatDimension(borderTopRightRadiusWidth.floatValue(), borderTopRightRadiusHeight.floatValue());
}
/**
* Defines the top-right border-radius for this element. If the border radius has a non-zero width and height, the
* element's border will have a rounded top-right corner.
*
* @param borderRadius the defined border-radius for the top-right corner of this element or null, if this property
* should be undefined.
*/
public void setBorderTopRightRadius(final Dimension2D borderRadius)
{
if (borderRadius == null)
{
this.borderTopRightRadiusWidth = null;
this.borderTopRightRadiusHeight = null;
}
else
{
this.borderTopRightRadiusWidth = new Float(borderRadius.getWidth());
this.borderTopRightRadiusHeight = new Float(borderRadius.getHeight());
}
}
/**
* Returns the width of the defined top-right border-radius for this element. If the border radius has a non-zero
* width and height, the element's border will have a rounded top-right corner.
*
* @return the width of the defined border-radius for the top-right corner of this element or null, if this property
* is undefined.
*/
public Float getBorderTopRightRadiusWidth()
{
return borderTopRightRadiusWidth;
}
/**
* Defines the width of the top-right border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have a rounded top-right corner.
*
* @param borderTopRightRadiusWidth the width of the defined border-radius for the top-right corner of this element or
* null, if this property should be undefined.
*/
public void setBorderTopRightRadiusWidth(final Float borderTopRightRadiusWidth)
{
this.borderTopRightRadiusWidth = borderTopRightRadiusWidth;
}
/**
* Returns the height of the defined top-right border-radius for this element. If the border radius has a non-zero
* width and height, the element's border will have a rounded top-right corner.
*
* @return the height of the defined border-radius for the top-right corner of this element or null, if this property
* is undefined.
*/
public Float getBorderTopRightRadiusHeight()
{
return borderTopRightRadiusHeight;
}
/**
* Defines the height of the top-right border-radius for this element. If the border radius has a non-zero width and
* height, the element's border will have a rounded top-right corner.
*
* @param borderTopRightRadiusHeight the height of the defined border-radius for the top-right corner of this element
* or null, if this property should be undefined.
*/
public void setBorderTopRightRadiusHeight(final Float borderTopRightRadiusHeight)
{
this.borderTopRightRadiusHeight = borderTopRightRadiusHeight;
}
/**
* Returns the text color for the new element.
*
* @return the text color.
*/
public Color getColor()
{
return color;
}
/**
* Defines the text color for the new element.
*
* @param color the text color.
*/
public void setColor(final Color color)
{
this.color = color;
}
/**
* Returns the vertical alignment for the content of this element.
*
* @return the vertical alignment.
*/
public ElementAlignment getVerticalAlignment()
{
return verticalAlignment;
}
/**
* Defines the vertical alignment for the content of this element.
*
* @param verticalAlignment the vertical alignment.
*/
public void setVerticalAlignment(final ElementAlignment verticalAlignment)
{
this.verticalAlignment = verticalAlignment;
}
/**
* Returns the horizontal alignment for the content of this element.
*
* @return the horizontal alignment.
*/
public ElementAlignment getHorizontalAlignment()
{
return horizontalAlignment;
}
/**
* Defines the horizontal alignment for the content of this element.
*
* @param horizontalAlignment the vertical alignment.
*/
public void setHorizontalAlignment(final ElementAlignment horizontalAlignment)
{
this.horizontalAlignment = horizontalAlignment;
}
/**
* Returns the defined font smoothing (also known as text-aliasing) is applied to the element. If the font-smooth
* property is undefined or auto, the actual value will be comptued depending on the element's font size.
*
* @return the font-smooth constant or null, if this property is undefined.
*/
public FontSmooth getFontSmooth()
{
return fontSmooth;
}
/**
* Defines, whether font smoothing (also known as text-aliasing) is applied to the element. If the font-smooth
* property is undefined or auto, the actual value will be comptued depending on the element's font size.
*
* @param fontSmooth the font-smooth constant or null, if this property should be left undefined.
*/
public void setFontSmooth(final FontSmooth fontSmooth)
{
this.fontSmooth = fontSmooth;
}
/**
* Returns the defined top border width of this box. A border width of zero effectively disables the border. A number
* between 0 and -100 specifies the width as relative size given in percent of the parent's width or height (depending
* on the layout model of the band that contains this element).
*
* @return the border width for the top edge or null if the property should be left undefined.
*/
public Float getBorderTopWidth()
{
return borderTopWidth;
}
/**
* Defines the top border width of this box. A border width of zero effectively disables the border. A number between
* 0 and -100 specifies the width as relative size given in percent of the parent's width or height (depending on the
* layout model of the band that contains this element).
*
* @param borderTopWidth the border width for the top edge or null if the property should be left undefined.
*/
public void setBorderTopWidth(final Float borderTopWidth)
{
this.borderTopWidth = borderTopWidth;
}
/**
* Returns the defined left border width of this box. A border width of zero effectively disables the border. A number
* between 0 and -100 specifies the width as relative size given in percent of the parent's width or height (depending
* on the layout model of the band that contains this element).
*
* @return the border width for the left edge or null if the property should be left undefined.
*/
public Float getBorderLeftWidth()
{
return borderLeftWidth;
}
/**
* Defines the left border width of this box. A border width of zero effectively disables the border. A number between
* 0 and -100 specifies the width as relative size given in percent of the parent's width or height (depending on the
* layout model of the band that contains this element).
*
* @param borderLeftWidth the border width for the left edge or null if the property should be left undefined.
*/
public void setBorderLeftWidth(final Float borderLeftWidth)
{
this.borderLeftWidth = borderLeftWidth;
}
/**
* Returns the defined left border width of this box. A border width of zero effectively disables the border. A number
* between 0 and -100 specifies the width as relative size given in percent of the parent's width or height (depending
* on the layout model of the band that contains this element).
*
* @return the border width for the left edge or null if the property should be left undefined.
*/
public Float getBorderBottomWidth()
{
return borderBottomWidth;
}
/**
* Defines the bottom border width of this box. A border width of zero effectively disables the border. A number
* between 0 and -100 specifies the width as relative size given in percent of the parent's width or height (depending
* on the layout model of the band that contains this element).
*
* @param borderBottomWidth the border width for the bottom edge or null if the property should be left undefined.
*/
public void setBorderBottomWidth(final Float borderBottomWidth)
{
this.borderBottomWidth = borderBottomWidth;
}
/**
* Returns the defined right border width of this box. A border width of zero effectively disables the border. A
* number between 0 and -100 specifies the width as relative size given in percent of the parent's width or height
* (depending on the layout model of the band that contains this element).
*
* @return the border width for the right edge or null if the property should be left undefined.
*/
public Float getBorderRightWidth()
{
return borderRightWidth;
}
/**
* Defines the right border width of this box. A border width of zero effectively disables the border. A number
* between 0 and -100 specifies the width as relative size given in percent of the parent's width or height (depending
* on the layout model of the band that contains this element).
*
* @param borderRightWidth the border width for the right edge or null if the property should be left undefined.
*/
public void setBorderRightWidth(final Float borderRightWidth)
{
this.borderRightWidth = borderRightWidth;
}
/**
* Returns the defined break border width of this box. A border width of zero effectively disables the border. A
* number between 0 and -100 specifies the width as relative size given in percent of the parent's width or height
* (depending on the layout model of the band that contains this element).
* <p/>
* The break border is applied to all inner border-edges of elements that got split on a pagebreak.
*
* @return the width of the break edge of the border or null, if not defined.
*/
public Float getBorderBreakWidth()
{
return borderBreakWidth;
}
/**
* Defines the break border width of this box. A border width of zero effectively disables the border. A number
* between 0 and -100 specifies the width as relative size given in percent of the parent's width or height (depending
* on the layout model of the band that contains this element).
* <p/>
* The break border is applied to all inner border-edges of elements that got split on a pagebreak.
*
* @param borderBreakWidth the width of the break edge of the border or null, if not defined.
*/
public void setBorderBreakWidth(final Float borderBreakWidth)
{
this.borderBreakWidth = borderBreakWidth;
}
/**
* Returns the defined top border-style for the element. If the border-style is set to NONE or undefined, the
* border-size property will be ignored and no border is rendered.
*
* @return the border style for the top edge or null, if the style should remain undefined.
*/
public BorderStyle getBorderTopStyle()
{
return borderTopStyle;
}
/**
* Defines the top border-style for the element. If the border-style is set to NONE or undefined, the border-size
* property will be ignored and no border is rendered.
*
* @param borderTopStyle the border style for the top edge or null, if the style should remain undefined.
*/
public void setBorderTopStyle(final BorderStyle borderTopStyle)
{
this.borderTopStyle = borderTopStyle;
}
/**
* Returns the defined left border-style for the element. If the border-style is set to NONE or undefined, the
* border-size property will be ignored and no border is rendered.
*
* @return the border style for the left edge or null, if the style should remain undefined.
*/
public BorderStyle getBorderLeftStyle()
{
return borderLeftStyle;
}
/**
* Defines the left border-style for the element. If the border-style is set to NONE or undefined, the border-size
* property will be ignored and no border is rendered.
*
* @param borderLeftStyle the border style for the left edge or null, if the style should remain undefined.
*/
public void setBorderLeftStyle(final BorderStyle borderLeftStyle)
{
this.borderLeftStyle = borderLeftStyle;
}
/**
* Returns the defined bottom border-style for the element. If the border-style is set to NONE or undefined, the
* border-size property will be ignored and no border is rendered.
*
* @return the border style for the bottom edge or null, if the style should remain undefined.
*/
public BorderStyle getBorderBottomStyle()
{
return borderBottomStyle;
}
/**
* Defines the bottom border-style for the element. If the border-style is set to NONE or undefined, the border-size
* property will be ignored and no border is rendered.
*
* @param borderBottomStyle the border style for the bottom edge or null, if the style should remain undefined.
*/
public void setBorderBottomStyle(final BorderStyle borderBottomStyle)
{
this.borderBottomStyle = borderBottomStyle;
}
/**
* Returns the defined right border-style for the element. If the border-style is set to NONE or undefined, the
* border-size property will be ignored and no border is rendered.
*
* @return the border style for the right edge or null, if the style should remain undefined.
*/
public BorderStyle getBorderRightStyle()
{
return borderRightStyle;
}
/**
* Defines the right border-style for the element. If the border-style is set to NONE or undefined, the border-size
* property will be ignored and no border is rendered.
*
* @param borderRightStyle the border style for the right edge or null, if the style should remain undefined.
*/
public void setBorderRightStyle(final BorderStyle borderRightStyle)
{
this.borderRightStyle = borderRightStyle;
}
/**
* Returns the defined break border-style for the element. If the border-style is set to NONE or undefined, the
* border-size property will be ignored and no border is rendered.
*
* @return the border style for the break edge or null, if the style should remain undefined.
*/
public BorderStyle getBorderBreakStyle()
{
return borderBreakStyle;
}
/**
* Defines the break border-style for the element. If the border-style is set to NONE or undefined, the border-size
* property will be ignored and no border is rendered.
*
* @param borderBreakStyle the border style for the break edge or null, if the style should remain undefined.
*/
public void setBorderBreakStyle(final BorderStyle borderBreakStyle)
{
this.borderBreakStyle = borderBreakStyle;
}
/**
* Returns the defined top border-color.
*
* @return the color for the top edge or null, if the value should be left undefined here.
*/
public Color getBorderTopColor()
{
return borderTopColor;
}
/**
* Defines the top border-color.
*
* @param borderTopColor the color for the top edge or null, if the value should be left undefined here.
*/
public void setBorderTopColor(final Color borderTopColor)
{
this.borderTopColor = borderTopColor;
}
/**
* Returns the defined left border-color.
*
* @return the color for the left edge or null, if the value should be left undefined here.
*/
public Color getBorderLeftColor()
{
return borderLeftColor;
}
/**
* Defines the left border-color.
*
* @param borderLeftColor the color for the left edge or null, if the value should be left undefined here.
*/
public void setBorderLeftColor(final Color borderLeftColor)
{
this.borderLeftColor = borderLeftColor;
}
/**
* Returns the defined bottom border-color.
*
* @return the color for the bottom edge or null, if the value should be left undefined here.
*/
public Color getBorderBottomColor()
{
return borderBottomColor;
}
/**
* Defines the bottom border-color.
*
* @param borderBottomColor the color for the bottom edge or null, if the value should be left undefined here.
*/
public void setBorderBottomColor(final Color borderBottomColor)
{
this.borderBottomColor = borderBottomColor;
}
/**
* Returns the defined right border-color.
*
* @return the color for the right edge or null, if the value should be left undefined here.
*/
public Color getBorderRightColor()
{
return borderRightColor;
}
/**
* Defines the right border-color.
*
* @param borderRightColor the color for the right edge or null, if the value should be left undefined here.
*/
public void setBorderRightColor(final Color borderRightColor)
{
this.borderRightColor = borderRightColor;
}
/**
* Returns the defined break border-color.
*
* @return the color for the break edge or null, if the value should be left undefined here.
*/
public Color getBorderBreakColor()
{
return borderBreakColor;
}
/**
* Defines the break border-color.
*
* @param borderBreakColor the color for the break edge or null, if the value should be left undefined here.
*/
public void setBorderBreakColor(final Color borderBreakColor)
{
this.borderBreakColor = borderBreakColor;
}
/**
* Returns the defined top padding of this box. Padding defines the empty area between the border and the content of
* an element. Paddings cannot have relative sizes.
*
* @return the padding or null, if the padding remains undefined here.
*/
public Float getPaddingTop()
{
return paddingTop;
}
/**
* Defines the top padding of this box. Padding defines the empty area between the border and the content of an
* element. Paddings cannot have relative sizes.
*
* @param paddingTop the padding or null, if the padding remains undefined here.
*/
public void setPaddingTop(final Float paddingTop)
{
this.paddingTop = paddingTop;
}
/**
* Returns the defined left padding of this box. Padding defines the empty area between the border and the content of
* an element. Paddings cannot have relative sizes.
*
* @return the padding or null, if the padding remains undefined here.
*/
public Float getPaddingLeft()
{
return paddingLeft;
}
/**
* Defines the left padding of this box. Padding defines the empty area between the border and the content of an
* element. Paddings cannot have relative sizes.
*
* @param paddingLeft the padding or null, if the padding remains undefined here.
*/
public void setPaddingLeft(final Float paddingLeft)
{
this.paddingLeft = paddingLeft;
}
/**
* Returns the defined bottom padding of this box. Padding defines the empty area between the border and the content
* of an element. Paddings cannot have relative sizes.
*
* @return the padding or null, if the padding remains undefined here.
*/
public Float getPaddingBottom()
{
return paddingBottom;
}
/**
* Defines the bottom padding of this box. Padding defines the empty area between the border and the content of an
* element. Paddings cannot have relative sizes.
*
* @param paddingBottom the padding or null, if the padding remains undefined here.
*/
public void setPaddingBottom(final Float paddingBottom)
{
this.paddingBottom = paddingBottom;
}
/**
* Returns the defined right padding of this box. Padding defines the empty area between the border and the content of
* an element. Paddings cannot have relative sizes.
*
* @return the padding or null, if the padding remains undefined here.
*/
public Float getPaddingRight()
{
return paddingRight;
}
/**
* Defines the right padding of this box. Padding defines the empty area between the border and the content of an
* element. Paddings cannot have relative sizes.
*
* @param paddingRight the padding or null, if the padding remains undefined here.
*/
public void setPaddingRight(final Float paddingRight)
{
this.paddingRight = paddingRight;
}
/**
* Returns the defined number of widow-lines in this element. This avoids pagebreaks inside the first number of lines
* of a paragraph. If a pagebreak would occur inside the widow-segment, the whole box will be shifted to the next
* page.
*
* @return the number of widow-lines that control the pagebreak inside the paragraph.
*/
public Integer getWidows()
{
return widows;
}
/**
* Defines the number of widow-lines in this element. This avoids pagebreaks inside the first number of lines of a
* paragraph. If a pagebreak would occur inside the widow-segment, the whole box will be shifted to the next page.
*
* @param widows the number of widow-lines that control the pagebreak inside the paragraph.
*/
public void setWidows(final Integer widows)
{
this.widows = widows;
}
/**
* Returns the defined number of orphan-lines in this element. This avoids pagebreaks inside the last number of lines
* of a paragraph. If a pagebreak would occur inside the orphan-segment, the whole number of orphan lines or the whole
* box will be shifted to the next page.
*
* @return the number of orphan-lines that control the pagebreak inside the paragraph.
*/
public Integer getOrphans()
{
return orphans;
}
/**
* Defines the number of orphan-lines in this element. This avoids pagebreaks inside the last number of lines of a
* paragraph. If a pagebreak would occur inside the orphan-segment, the whole number of orphan lines or the whole box
* will be shifted to the next page.
*
* @param orphans the number of orphan-lines that control the pagebreak inside the paragraph.
*/
public void setOrphans(final Integer orphans)
{
this.orphans = orphans;
}
/**
* Returns the defined background color of the box.
*
* @return the background color or null, if undefined.
*/
public Color getBackgroundColor()
{
return backgroundColor;
}
/**
* Defines the background color of the box.
*
* @param backgroundColor the background color or null, if undefined.
*/
public void setBackgroundColor(final Color backgroundColor)
{
this.backgroundColor = backgroundColor;
}
/**
* Returns, whether text contained in this element will overflow vertically. This will generate overlapping text in
* the pageable outputs without increasing the total size of the element. Activating this property may cause rendering
* artifacts.
*
* @return a boolean whether text can overflow the box boundaries or null, if this property is left undefined.
*/
public Boolean getOverflowY()
{
return overflowY;
}
/**
* Defines, whether text contained in this element will overflow vertically. This will generate overlapping text in
* the pageable outputs without increasing the total size of the element. Activating this property may cause rendering
* artifacts.
*
* @param overflowY defines, whether text can overflow the box boundaries or null, to leave this property undefined.
*/
public void setOverflowY(final Boolean overflowY)
{
this.overflowY = overflowY;
}
/**
* Returns, whether text contained in this element will overflow horizontally. This will generate overlapping text in
* the pageable outputs without increasing the total size of the element. Activating this property may cause rendering
* artifacts.
*
* @return a boolean whether text can overflow the box boundaries or null, if this property is left undefined.
*/
public Boolean getOverflowX()
{
return overflowX;
}
/**
* Defines, whether text contained in this element will overflow horizontally. This will generate overlapping text in
* the pageable outputs without increasing the total size of the element. Activating this property may cause rendering
* artifacts.
*
* @param overflowX defines, whether text can overflow the box boundaries or null, to leave this property undefined.
*/
public void setOverflowX(final Boolean overflowX)
{
this.overflowX = overflowX;
}
/**
* Returns whether the layouter will try to avoid to generate pagebreaks inside this element. If the element does not
* fit on the current page, it will be moved to the next page. Only if this next page does not have enough space to
* hold this element, a pagebreak will be generated inside the element.
*
* @return a boolean defining whether pagebreaks are allowed inside the box or null, if this property has been left
* undefined.
*/
public Boolean getAvoidPagebreaks()
{
return avoidPagebreaks;
}
/**
* Defines whether the layouter will try to avoid to generate pagebreaks inside this element. If the element does not
* fit on the current page, it will be moved to the next page. Only if this next page does not have enough space to
* hold this element, a pagebreak will be generated inside the element.
*
* @param avoidPagebreaks a boolean defining whether pagebreaks are allowed inside the box or null, if this property
* should be left undefined.
*/
public void setAvoidPagebreaks(final Boolean avoidPagebreaks)
{
this.avoidPagebreaks = avoidPagebreaks;
}
/**
* Returns the link target for this element. The link-target usually specifies the URL for a hyper-link.
*
* @return the link target.
*/
public String getHRefTarget()
{
return hRefTarget;
}
/**
* Defines the link target for the element. The link-target usually specifies the URL for a hyper-link.
*
* @param hRefTarget the link target.
*/
public void setHRefTarget(final String hRefTarget)
{
this.hRefTarget = hRefTarget;
}
/**
* Returns the name of the new element.
*
* @return the name of the element.
*/
public String getName()
{
return name;
}
/**
* Defines the name of the element. If the name is null, the default (anonymous) name will be used.
*
* @param name the element name.
*/
public void setName(final String name)
{
this.name = name;
}
/**
* Returns the element's minimum size.
*
* @return the element's minimum size.
* @see ElementFactory#getMinimumWidth()
* @see ElementFactory#getMinimumHeight()
*/
public Dimension2D getMinimumSize()
{
if (minimumWidth == null && minimumHeight == null)
{
return null;
}
if (minimumWidth == null)
{
return new FloatDimension(0, minimumHeight.floatValue());
}
if (minimumHeight == null)
{
return new FloatDimension(minimumWidth.floatValue(), 0);
}
return new FloatDimension(minimumWidth.floatValue(), minimumHeight.floatValue());
}
/**
* Defines the element's minimum size.
*
* @param minimumSize the element's minimum size.
* @see ElementFactory#setMinimumWidth(Float)
* @see ElementFactory#setMinimumHeight(Float)
*/
public void setMinimumSize(final Dimension2D minimumSize)
{
if (minimumSize == null)
{
this.minimumWidth = null;
this.minimumHeight = null;
}
else
{
this.minimumWidth = new Float(minimumSize.getWidth());
this.minimumHeight = new Float(minimumSize.getHeight());
}
}
/**
* Returns the element's maximum size.
*
* @return the element's maximum size.
* @see ElementFactory#getMinimumWidth()
* @see ElementFactory#getMinimumHeight()
*/
public Dimension2D getMaximumSize()
{
if (maximumWidth == null && maximumHeight == null)
{
return null;
}
if (maximumWidth == null)
{
return new FloatDimension(0, maximumHeight.floatValue());
}
if (maximumHeight == null)
{
return new FloatDimension(maximumWidth.floatValue(), 0);
}
return new FloatDimension(maximumWidth.floatValue(), maximumHeight.floatValue());
}
/**
* Defines the element's maximum size.
*
* @param maximumSize the element's maximum size.
* @see ElementFactory#setMaximumWidth(Float)
* @see ElementFactory#setMaximumHeight(Float)
*/
public void setMaximumSize(final Dimension2D maximumSize)
{
if (maximumSize == null)
{
this.maximumWidth = null;
this.maximumHeight = null;
}
else
{
this.maximumWidth = new Float(maximumSize.getWidth());
this.maximumHeight = new Float(maximumSize.getHeight());
}
}
/**
* Returns the element's preferred size.
*
* @return the element's preferred size.
* @see ElementFactory#getWidth()
* @see ElementFactory#getHeight()
*/
public Dimension2D getPreferredSize()
{
if (width == null && height == null)
{
return null;
}
if (width == null)
{
return new FloatDimension(0, height.floatValue());
}
if (height == null)
{
return new FloatDimension(width.floatValue(), 0);
}
return new FloatDimension(width.floatValue(), height.floatValue());
}
/**
* Returns the element's preferred size.
*
* @param preferredSize the element's preferred size.
* @see ElementFactory#setWidth(Float)
* @see ElementFactory#setHeight(Float)
*/
public void setPreferredSize(final Dimension2D preferredSize)
{
if (preferredSize == null)
{
this.width = null;
this.height = null;
}
else
{
this.width = new Float(preferredSize.getWidth());
this.height = new Float(preferredSize.getHeight());
}
}
/**
* Returns the element's absolute position. This property is only used if the band containing this element uses a
* canvas-layout strategy.
*
* @return the element's absolute position.
* @see ElementFactory#getX()
* @see ElementFactory#getY()
*/
public Point2D getAbsolutePosition()
{
if (x == null && y == null)
{
return null;
}
if (x == null)
{
return new Point2D.Float(0, y.floatValue());
}
if (y == null)
{
return new Point2D.Float(x.floatValue(), 0);
}
return new Point2D.Float(x.floatValue(), y.floatValue());
}
/**
* Returns the element's absolute position. This property is only used if the band containing this element uses a
* canvas-layout strategy.
*
* @param absolutePosition the element's absolute position.
* @see ElementFactory#setX(Float)
* @see ElementFactory#setY(Float)
*/
public void setAbsolutePosition(final Point2D absolutePosition)
{
if (absolutePosition == null)
{
this.x = null;
this.y = null;
}
else
{
this.x = new Float(absolutePosition.getX());
this.y = new Float(absolutePosition.getY());
}
}
/**
* Returns whether the element's height should be adjusted automaticly.
*
* @return the state of the dynamic feature or null, if the feature is undefined.
*/
public Boolean getDynamicHeight()
{
return dynamicHeight;
}
/**
* Defines whether the element's height should be adjusted automaticly.
*
* @param dynamicHeight the new value of the elements dynamic height feature.
*/
public void setDynamicHeight(final Boolean dynamicHeight)
{
this.dynamicHeight = dynamicHeight;
}
/**
* Returns, whether the layout for the element is cachable. If you intend to modify the element's properties from
* within a function, you should mark the element as non-cachable, or the layout may look funny.
* <p/>
* This property is no longer used. This method will be removed in version 1.0.
*
* @return the layout-cachable flag.
* @deprecated The layout cachable flag is no longer used.
*/
public Boolean getLayoutCachable()
{
return null;
}
/**
* Returns, whether the layout for the element is cachable. If you intend to modify the element's properties from
* within a function, you should mark the element as non-cachable, or the layout may look funny. Set this value to
* <code>null</code> if this value should be inherited from the parent.
* <p/>
* This property is no longer used. This method will be removed in version 1.0.
*
* @param layoutCachable the layout-cachable flag.
* @deprecated The layout cachable flag is no longer used.
*/
public void setLayoutCachable(final Boolean layoutCachable)
{
// does nothing.
}
/**
* Returns, whether the element will be visible.
*
* @return the visibility of the element.
*/
public Boolean getVisible()
{
return visible;
}
/**
* Defines, whether the element will be visible.
*
* @param visible the visibility flag of the element.
*/
public void setVisible(final Boolean visible)
{
this.visible = visible;
}
/**
* Applies the defined name to the created element.
*
* @param e the element which was created.
*/
protected void applyElementName(final Element e)
{
if (getName() != null)
{
e.setName(getName());
}
}
/**
* Returns the 'window' parameter for hyperlink references. This property will only make sense in HTML-exports, as all
* other export targets that support Hyperlinks will open up in a new window anyway.
*
* @return the href-window string.
*/
public String getHRefWindow()
{
return hRefWindow;
}
/**
* Defines the 'window' parameter for hyperlink references. This property will only make sense in HTML-exports, as all
* other export targets that support Hyperlinks will open up in a new window anyway.
*
* @param hRefWindow the href-window string.
*/
public void setHRefWindow(final String hRefWindow)
{
this.hRefWindow = hRefWindow;
}
/**
* Returns the elements minimum width. A number between 0 and -100 specifies the width as relative size given in
* percent of the parent's width or height (depending on the layout model of the band that contains this element).
*
* @return the minimum width or null, if no minimum width is defined.
*/
public Float getMinimumWidth()
{
return minimumWidth;
}
/**
* Defines the elements minimum width. A number between 0 and -100 specifies the width as relative size given in
* percent of the parent's width or height (depending on the layout model of the band that contains this element).
*
* @param minimumWidth the minimum width or null, to leave this property undefined.
*/
public void setMinimumWidth(final Float minimumWidth)
{
this.minimumWidth = minimumWidth;
}
/**
* Returns the elements minimum height. A number between 0 and -100 specifies the width as relative size given in
* percent of the parent's width or height (depending on the layout model of the band that contains this element).
*
* @return the minimum height or null, if no minimum height is defined.
*/
public Float getMinimumHeight()
{
return minimumHeight;
}
/**
* Defines the elements minimum height. A number between 0 and -100 specifies the width as relative size given in
* percent of the parent's width or height (depending on the layout model of the band that contains this element).
*
* @param minimumHeight the minimum height or null, to leave this property undefined.
*/
public void setMinimumHeight(final Float minimumHeight)
{
this.minimumHeight = minimumHeight;
}
/**
* Returns the elements maximum width. The maximum width cannot have relative values.
*
* @return the maximum width or null, if no maximum width is defined.
*/
public Float getMaximumWidth()
{
return maximumWidth;
}
/**
* Defines the elements maximum width. The maximum width cannot have relative values.
*
* @param maximumWidth the maximum width or null, if no maximum width should be defined.
*/
public void setMaximumWidth(final Float maximumWidth)
{
this.maximumWidth = maximumWidth;
}
/**
* Returns the elements maximum height. The maximum height cannot have relative values.
*
* @return the maximum height or null, if no maximum height is defined.
*/
public Float getMaximumHeight()
{
return maximumHeight;
}
/**
* Defines the elements maximum height. The maximum height cannot have relative values.
*
* @param maximumHeight the maximum width or null, if no maximum height should be defined.
*/
public void setMaximumHeight(final Float maximumHeight)
{
this.maximumHeight = maximumHeight;
}
/**
* Returns the elements defined preferred width. A number between 0 and -100 specifies the width as relative size
* given in percent of the parent's width or height (depending on the layout model of the band that contains this
* element).
*
* @return the preferred width or null, if left undefined.
*/
public Float getWidth()
{
return width;
}
/**
* Defines the elements preferred width. A number between 0 and -100 specifies the width as relative size given in
* percent of the parent's width or height (depending on the layout model of the band that contains this element).
*
* @param width the preferred width or null, if left undefined.
*/
public void setWidth(final Float width)
{
this.width = width;
}
/**
* Returns the elements defined preferred height. A number between 0 and -100 specifies the width as relative size
* given in percent of the parent's width or height (depending on the layout model of the band that contains this
* element).
*
* @return the preferred height or null, if left undefined.
*/
public Float getHeight()
{
return height;
}
/**
* Defines the elements preferred height. A number between 0 and -100 specifies the width as relative size given in
* percent of the parent's width or height (depending on the layout model of the band that contains this element).
*
* @param height the preferred height or null, if left undefined.
*/
public void setHeight(final Float height)
{
this.height = height;
}
/**
* Returns the elements defined absolute horizontal position for the canvas-layout. The position is relative to the
* parents upper left corner of the content-area. A number between 0 and -100 specifies the width as relative size
* given in percent of the parent's width or height (depending on the layout model of the band that contains this
* element).
*
* @return the elements horizontal position or null, if not defined.
*/
public Float getX()
{
return x;
}
/**
* Defines the elements absolute horizontal position for the canvas-layout. The position is relative to the parents
* upper left corner of the content-area. A number between 0 and -100 specifies the width as relative size given in
* percent of the parent's width or height (depending on the layout model of the band that contains this element).
*
* @param x the elements horizontal position or null, if not defined.
*/
public void setX(final Float x)
{
this.x = x;
}
/**
* Returns the elements defined absolute vertical position for the canvas-layout. The position is relative to the
* parents upper left corner of the content-area. A number between 0 and -100 specifies the width as relative size
* given in percent of the parent's width or height (depending on the layout model of the band that contains this
* element).
*
* @return the elements vertical position or null, if not defined.
*/
public Float getY()
{
return y;
}
/**
* Defines the elements absolute vertical position for the canvas-layout. The position is relative to the parents
* upper left corner of the content-area. A number between 0 and -100 specifies the width as relative size given in
* percent of the parent's width or height (depending on the layout model of the band that contains this element).
*
* @param y the elements vertical position or null, if not defined.
*/
public void setY(final Float y)
{
this.y = y;
}
/**
* Returns the defined HREF-Title. This title is only valid during the HTML export.
*
* @return the href-title as string.
*/
public String getHRefTitle()
{
return hRefTitle;
}
/**
* Defines the defined HREF-Title. This title is only valid during the HTML export.
*
* @param hRefTitle the href-title as string.
*/
public void setHRefTitle(final String hRefTitle)
{
this.hRefTitle = hRefTitle;
}
/**
* Applies the style definition to the elements stylesheet.
*
* @param style the element stylesheet which should receive the style definition.
*/
protected void applyStyle(final ElementStyleSheet style)
{
if (getUseMinChunkWidth() != null)
{
style.setStyleProperty
(ElementStyleKeys.USE_MIN_CHUNKWIDTH, getUseMinChunkWidth());
}
if (getX() != null)
{
style.setStyleProperty(ElementStyleKeys.POS_X, getX());
}
if (getY() != null)
{
style.setStyleProperty(ElementStyleKeys.POS_Y, getY());
}
if (getDynamicHeight() != null)
{
style.setStyleProperty(ElementStyleKeys.DYNAMIC_HEIGHT, getDynamicHeight());
}
if (getMaximumWidth() != null)
{
style.setStyleProperty(ElementStyleKeys.MAX_WIDTH, getMaximumWidth());
}
if (getMaximumHeight() != null)
{
style.setStyleProperty(ElementStyleKeys.MAX_HEIGHT, getMaximumHeight());
}
if (getMinimumWidth() != null)
{
style.setStyleProperty(ElementStyleKeys.MIN_WIDTH, getMinimumWidth());
}
if (getMinimumHeight() != null)
{
style.setStyleProperty(ElementStyleKeys.MIN_HEIGHT, getMinimumHeight());
}
if (getWidth() != null)
{
style.setStyleProperty(ElementStyleKeys.WIDTH, getWidth());
}
if (getHeight() != null)
{
style.setStyleProperty(ElementStyleKeys.HEIGHT, getHeight());
}
if (getVisible() != null)
{
style.setStyleProperty(ElementStyleKeys.VISIBLE, getVisible());
}
if (getHRefTarget() != null)
{
style.setStyleProperty(ElementStyleKeys.HREF_TARGET, getHRefTarget());
}
if (getHRefWindow() != null)
{
style.setStyleProperty(ElementStyleKeys.HREF_WINDOW, getHRefWindow());
}
if (getHRefTitle() != null)
{
style.setStyleProperty(ElementStyleKeys.HREF_TITLE, getHRefTitle());
}
if (getFontSmooth() != null)
{
style.setStyleProperty(TextStyleKeys.FONT_SMOOTH, getFontSmooth());
}
if (getBorderColor() != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_TOP_COLOR, getBorderColor());
style.setStyleProperty(ElementStyleKeys.BORDER_LEFT_COLOR, getBorderColor());
style.setStyleProperty(ElementStyleKeys.BORDER_BOTTOM_COLOR, getBorderColor());
style.setStyleProperty(ElementStyleKeys.BORDER_RIGHT_COLOR, getBorderColor());
style.setStyleProperty(ElementStyleKeys.BORDER_BREAK_COLOR, getBorderColor());
}
if (getBorderWidth() != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_TOP_WIDTH, getBorderWidth());
style.setStyleProperty(ElementStyleKeys.BORDER_LEFT_WIDTH, getBorderWidth());
style.setStyleProperty(ElementStyleKeys.BORDER_BOTTOM_WIDTH, getBorderWidth());
style.setStyleProperty(ElementStyleKeys.BORDER_RIGHT_WIDTH, getBorderWidth());
style.setStyleProperty(ElementStyleKeys.BORDER_BREAK_WIDTH, getBorderWidth());
}
if (getBorderStyle() != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_TOP_STYLE, getBorderStyle());
style.setStyleProperty(ElementStyleKeys.BORDER_LEFT_STYLE, getBorderStyle());
style.setStyleProperty(ElementStyleKeys.BORDER_BOTTOM_STYLE, getBorderStyle());
style.setStyleProperty(ElementStyleKeys.BORDER_RIGHT_STYLE, getBorderStyle());
style.setStyleProperty(ElementStyleKeys.BORDER_BREAK_STYLE, getBorderStyle());
}
if (getPadding() != null)
{
style.setStyleProperty(ElementStyleKeys.PADDING_TOP, getPadding());
style.setStyleProperty(ElementStyleKeys.PADDING_LEFT, getPadding());
style.setStyleProperty(ElementStyleKeys.PADDING_BOTTOM, getPadding());
style.setStyleProperty(ElementStyleKeys.PADDING_RIGHT, getPadding());
}
if (borderTopColor != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_TOP_COLOR, getBorderTopColor());
}
if (borderLeftColor != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_LEFT_COLOR, getBorderLeftColor());
}
if (borderBottomColor != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_BOTTOM_COLOR, getBorderBottomColor());
}
if (borderRightColor != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_RIGHT_COLOR, getBorderRightColor());
}
if (borderBreakColor != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_BREAK_COLOR, getBorderBreakColor());
}
if (borderTopWidth != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_TOP_WIDTH, getBorderTopWidth());
}
if (borderLeftWidth != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_LEFT_WIDTH, getBorderLeftWidth());
}
if (borderBottomWidth != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_BOTTOM_WIDTH, getBorderBottomWidth());
}
if (borderRightWidth != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_RIGHT_WIDTH, getBorderRightWidth());
}
if (borderBreakWidth != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_BREAK_WIDTH, getBorderBreakWidth());
}
if (borderTopStyle != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_TOP_STYLE, getBorderTopStyle());
}
if (borderLeftStyle != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_LEFT_STYLE, getBorderLeftStyle());
}
if (borderBottomStyle != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_BOTTOM_STYLE, getBorderBottomStyle());
}
if (borderRightStyle != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_RIGHT_STYLE, getBorderRightStyle());
}
if (borderBreakStyle != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_BREAK_STYLE, getBorderBreakStyle());
}
if (paddingTop != null)
{
style.setStyleProperty(ElementStyleKeys.PADDING_TOP, getPaddingTop());
}
if (paddingLeft != null)
{
style.setStyleProperty(ElementStyleKeys.PADDING_LEFT, getPaddingLeft());
}
if (paddingBottom != null)
{
style.setStyleProperty(ElementStyleKeys.PADDING_BOTTOM, getPaddingBottom());
}
if (paddingRight != null)
{
style.setStyleProperty(ElementStyleKeys.PADDING_RIGHT, getPaddingRight());
}
if (backgroundColor != null)
{
style.setStyleProperty(ElementStyleKeys.BACKGROUND_COLOR, getBackgroundColor());
}
if (avoidPagebreaks != null)
{
style.setStyleProperty(ElementStyleKeys.AVOID_PAGEBREAK_INSIDE, getAvoidPagebreaks());
}
if (orphans != null)
{
style.setStyleProperty(ElementStyleKeys.ORPHANS, getOrphans());
}
if (widows != null)
{
style.setStyleProperty(ElementStyleKeys.WIDOWS, getWidows());
}
if (overflowX != null)
{
style.setStyleProperty(ElementStyleKeys.OVERFLOW_X, getOverflowX());
}
if (overflowY != null)
{
style.setStyleProperty(ElementStyleKeys.OVERFLOW_Y, getOverflowY());
}
if (fontSmooth != null)
{
style.setStyleProperty(TextStyleKeys.FONT_SMOOTH, getFontSmooth());
}
if (horizontalAlignment != null)
{
style.setStyleProperty(ElementStyleKeys.ALIGNMENT, getHorizontalAlignment());
}
if (verticalAlignment != null)
{
style.setStyleProperty(ElementStyleKeys.VALIGNMENT, getVerticalAlignment());
}
if (color != null)
{
style.setStyleProperty(ElementStyleKeys.PAINT, getColor());
}
if (borderRadiusWidth != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_TOP_LEFT_RADIUS_WIDTH, getBorderRadiusWidth());
style.setStyleProperty(ElementStyleKeys.BORDER_TOP_RIGHT_RADIUS_WIDTH, getBorderRadiusWidth());
style.setStyleProperty(ElementStyleKeys.BORDER_BOTTOM_LEFT_RADIUS_WIDTH, getBorderRadiusWidth());
style.setStyleProperty(ElementStyleKeys.BORDER_BOTTOM_RIGHT_RADIUS_WIDTH, getBorderRadiusWidth());
}
if (borderRadiusHeight != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_TOP_LEFT_RADIUS_HEIGHT, getBorderRadiusHeight());
style.setStyleProperty(ElementStyleKeys.BORDER_TOP_RIGHT_RADIUS_HEIGHT, getBorderRadiusHeight());
style.setStyleProperty(ElementStyleKeys.BORDER_BOTTOM_LEFT_RADIUS_HEIGHT, getBorderRadiusHeight());
style.setStyleProperty(ElementStyleKeys.BORDER_BOTTOM_RIGHT_RADIUS_HEIGHT, getBorderRadiusHeight());
}
if (borderTopLeftRadiusWidth != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_TOP_LEFT_RADIUS_WIDTH, getBorderTopLeftRadiusWidth());
}
if (borderTopLeftRadiusHeight != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_TOP_LEFT_RADIUS_HEIGHT, getBorderTopLeftRadiusHeight());
}
if (borderTopRightRadiusWidth != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_TOP_RIGHT_RADIUS_WIDTH, getBorderTopRightRadiusWidth());
}
if (borderTopRightRadiusHeight != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_TOP_RIGHT_RADIUS_HEIGHT, getBorderTopRightRadiusHeight());
}
if (borderBottomLeftRadiusWidth != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_BOTTOM_LEFT_RADIUS_WIDTH, getBorderBottomLeftRadiusWidth());
}
if (borderBottomLeftRadiusHeight != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_BOTTOM_LEFT_RADIUS_HEIGHT, getBorderBottomLeftRadiusHeight());
}
if (borderBottomRightRadiusWidth != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_BOTTOM_RIGHT_RADIUS_WIDTH, getBorderBottomRightRadiusWidth());
}
if (borderBottomRightRadiusHeight != null)
{
style.setStyleProperty(ElementStyleKeys.BORDER_BOTTOM_RIGHT_RADIUS_HEIGHT, getBorderBottomRightRadiusHeight());
}
}
/**
* Creates a new instance of the element. Override this method to return a concrete subclass of the element.
*
* @return the newly generated instance of the element.
*/
public abstract Element createElement();
/**
* Converts the given primitive boolean into a Boolean object.
*
* @param b the primitive value.
* @return Boolean.TRUE or Boolean.FALSE.
*/
protected static Boolean getBooleanValue(final boolean b)
{
if (b)
{
return Boolean.TRUE;
}
return Boolean.FALSE;
}
public void setUseMinChunkWidth(final Boolean useMinChunkWidth)
{
this.useMinChunkWidth = useMinChunkWidth;
}
public Boolean getUseMinChunkWidth()
{
return useMinChunkWidth;
}
}