net.sf.jasperreports.engine.base.JRBaseTextElement Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jasperreports Show documentation
Show all versions of jasperreports Show documentation
Free Java Reporting Library
/*
* JasperReports - Free Java Reporting Library.
* Copyright (C) 2001 - 2019 TIBCO Software Inc. All rights reserved.
* http://www.jaspersoft.com
*
* Unless you have purchased a commercial license agreement from Jaspersoft,
* the following license terms apply:
*
* This program is part of JasperReports.
*
* JasperReports is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* JasperReports 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.
*
* You should have received a copy of the GNU Lesser General Public License
* along with JasperReports. If not, see .
*/
package net.sf.jasperreports.engine.base;
import java.awt.Color;
import java.io.IOException;
import java.io.ObjectInputStream;
import net.sf.jasperreports.engine.JRCommonText;
import net.sf.jasperreports.engine.JRConstants;
import net.sf.jasperreports.engine.JRFont;
import net.sf.jasperreports.engine.JRLineBox;
import net.sf.jasperreports.engine.JRParagraph;
import net.sf.jasperreports.engine.JRTextElement;
import net.sf.jasperreports.engine.type.HorizontalTextAlignEnum;
import net.sf.jasperreports.engine.type.LineSpacingEnum;
import net.sf.jasperreports.engine.type.ModeEnum;
import net.sf.jasperreports.engine.type.RotationEnum;
import net.sf.jasperreports.engine.type.VerticalTextAlignEnum;
/**
* This class provides functionality common to text elements. It provides implementation for the methods described
* in JRTextElement.
* @author Teodor Danciu ([email protected])
*/
public abstract class JRBaseTextElement extends JRBaseElement implements JRTextElement
{
/**
*
*/
private static final long serialVersionUID = JRConstants.SERIAL_VERSION_UID;
/**
*
*/
protected HorizontalTextAlignEnum horizontalTextAlign;
protected VerticalTextAlignEnum verticalTextAlign;
protected RotationEnum rotationValue;
protected String markup;
/**
*
*/
protected JRLineBox lineBox;
protected JRParagraph paragraph;
protected String fontName;
protected Boolean isBold;
protected Boolean isItalic;
protected Boolean isUnderline;
protected Boolean isStrikeThrough;
protected Float fontsize;
protected String pdfFontName;
protected String pdfEncoding;
protected Boolean isPdfEmbedded;
/**
* Initializes properties that are specific to text elements. Common properties are initialized by its
* parent constructor.
* @param textElement an element whose properties are copied to this element. Usually it is a
* {@link net.sf.jasperreports.engine.design.JRDesignTextElement} that must be transformed into an
* JRBaseTextElement at compile time.
* @param factory a factory used in the compile process
*/
protected JRBaseTextElement(JRTextElement textElement, JRBaseObjectFactory factory)
{
super(textElement, factory);
horizontalTextAlign = textElement.getOwnHorizontalTextAlign();
verticalTextAlign = textElement.getOwnVerticalTextAlign();
rotationValue = textElement.getOwnRotationValue();
markup = textElement.getOwnMarkup();
lineBox = textElement.getLineBox().clone(this);
paragraph = textElement.getParagraph().clone(this);
fontName = textElement.getOwnFontName();
isBold = textElement.isOwnBold();
isItalic = textElement.isOwnItalic();
isUnderline = textElement.isOwnUnderline();
isStrikeThrough = textElement.isOwnStrikeThrough();
fontsize = textElement.getOwnFontsize();
pdfFontName = textElement.getOwnPdfFontName();
pdfEncoding = textElement.getOwnPdfEncoding();
isPdfEmbedded = textElement.isOwnPdfEmbedded();
}
@Override
public HorizontalTextAlignEnum getHorizontalTextAlign()
{
return getStyleResolver().getHorizontalTextAlign(this);
}
@Override
public HorizontalTextAlignEnum getOwnHorizontalTextAlign()
{
return horizontalTextAlign;
}
@Override
public void setHorizontalTextAlign(HorizontalTextAlignEnum horizontalTextAlign)
{
Object old = this.horizontalTextAlign;
this.horizontalTextAlign = horizontalTextAlign;
getEventSupport().firePropertyChange(JRBaseStyle.PROPERTY_HORIZONTAL_TEXT_ALIGNMENT, old, this.horizontalTextAlign);
}
@Override
public VerticalTextAlignEnum getVerticalTextAlign()
{
return getStyleResolver().getVerticalTextAlign(this);
}
@Override
public VerticalTextAlignEnum getOwnVerticalTextAlign()
{
return verticalTextAlign;
}
@Override
public void setVerticalTextAlign(VerticalTextAlignEnum verticalTextAlign)
{
Object old = this.verticalTextAlign;
this.verticalTextAlign = verticalTextAlign;
getEventSupport().firePropertyChange(JRBaseStyle.PROPERTY_VERTICAL_TEXT_ALIGNMENT, old, this.verticalTextAlign);
}
@Override
public RotationEnum getRotationValue()
{
return getStyleResolver().getRotationValue(this);
}
@Override
public RotationEnum getOwnRotationValue()
{
return this.rotationValue;
}
@Override
public void setRotation(RotationEnum rotationValue)
{
Object old = this.rotationValue;
this.rotationValue = rotationValue;
getEventSupport().firePropertyChange(JRBaseStyle.PROPERTY_ROTATION, old, this.rotationValue);
}
@Override
public String getMarkup()
{
return getStyleResolver().getMarkup(this);
}
@Override
public String getOwnMarkup()
{
return markup;
}
@Override
public void setMarkup(String markup)
{
Object old = this.markup;
this.markup = markup;
getEventSupport().firePropertyChange(JRBaseStyle.PROPERTY_MARKUP, old, this.markup);
}
@Override
public JRLineBox getLineBox()
{
return lineBox;
}
@Override
public JRParagraph getParagraph()
{
return paragraph;
}
/**
* @deprecated
*/
public JRFont getFont()
{
return this;
}
@Override
public ModeEnum getModeValue()
{
return getStyleResolver().getMode(this, ModeEnum.TRANSPARENT);
}
@Override
public String getFontName()
{
return getStyleResolver().getFontName(this);
}
@Override
public String getOwnFontName()
{
return fontName;
}
@Override
public void setFontName(String fontName)
{
Object old = this.fontName;
this.fontName = fontName;
getEventSupport().firePropertyChange(JRBaseStyle.PROPERTY_FONT_NAME, old, this.fontName);
}
@Override
public boolean isBold()
{
return getStyleResolver().isBold(this);
}
@Override
public Boolean isOwnBold()
{
return isBold;
}
/**
* @deprecated Replaced by {@link #setBold(Boolean)}.
*/
@Override
public void setBold(boolean isBold)
{
setBold((Boolean)isBold);
}
/**
* Alternative setBold method which allows also to reset
* the "own" isBold property.
*/
@Override
public void setBold(Boolean isBold)
{
Object old = this.isBold;
this.isBold = isBold;
getEventSupport().firePropertyChange(JRBaseStyle.PROPERTY_BOLD, old, this.isBold);
}
@Override
public boolean isItalic()
{
return getStyleResolver().isItalic(this);
}
@Override
public Boolean isOwnItalic()
{
return isItalic;
}
/**
* @deprecated Replaced by {@link #setItalic(Boolean)}.
*/
@Override
public void setItalic(boolean isItalic)
{
setItalic((Boolean)isItalic);
}
/**
* Alternative setItalic method which allows also to reset
* the "own" isItalic property.
*/
@Override
public void setItalic(Boolean isItalic)
{
Object old = this.isItalic;
this.isItalic = isItalic;
getEventSupport().firePropertyChange(JRBaseStyle.PROPERTY_ITALIC, old, this.isItalic);
}
@Override
public boolean isUnderline()
{
return getStyleResolver().isUnderline(this);
}
@Override
public Boolean isOwnUnderline()
{
return isUnderline;
}
/**
* @deprecated Replaced by {@link #setUnderline(Boolean)}.
*/
@Override
public void setUnderline(boolean isUnderline)
{
setUnderline((Boolean)isUnderline);
}
/**
* Alternative setUnderline method which allows also to reset
* the "own" isUnderline property.
*/
@Override
public void setUnderline(Boolean isUnderline)
{
Object old = this.isUnderline;
this.isUnderline = isUnderline;
getEventSupport().firePropertyChange(JRBaseStyle.PROPERTY_UNDERLINE, old, this.isUnderline);
}
@Override
public boolean isStrikeThrough()
{
return getStyleResolver().isStrikeThrough(this);
}
@Override
public Boolean isOwnStrikeThrough()
{
return isStrikeThrough;
}
/**
* @deprecated Replaced by {@link #setStrikeThrough(Boolean)}.
*/
@Override
public void setStrikeThrough(boolean isStrikeThrough)
{
setStrikeThrough((Boolean)isStrikeThrough);
}
/**
* Alternative setStrikeThrough method which allows also to reset
* the "own" isStrikeThrough property.
*/
@Override
public void setStrikeThrough(Boolean isStrikeThrough)
{
Object old = this.isStrikeThrough;
this.isStrikeThrough = isStrikeThrough;
getEventSupport().firePropertyChange(JRBaseStyle.PROPERTY_STRIKE_THROUGH, old, this.isStrikeThrough);
}
@Override
public float getFontsize()
{
return getStyleResolver().getFontsize(this);
}
@Override
public Float getOwnFontsize()
{
return fontsize;
}
/**
* Method which allows also to reset the "own" size property.
*/
@Override
public void setFontSize(Float fontSize)
{
Object old = this.fontsize;
this.fontsize = fontSize;
getEventSupport().firePropertyChange(JRBaseStyle.PROPERTY_FONT_SIZE, old, this.fontsize);
}
@Override
public String getPdfFontName()
{
return getStyleResolver().getPdfFontName(this);
}
@Override
public String getOwnPdfFontName()
{
return pdfFontName;
}
@Override
public void setPdfFontName(String pdfFontName)
{
Object old = this.pdfFontName;
this.pdfFontName = pdfFontName;
getEventSupport().firePropertyChange(JRBaseStyle.PROPERTY_PDF_FONT_NAME, old, this.pdfFontName);
}
@Override
public String getPdfEncoding()
{
return getStyleResolver().getPdfEncoding(this);
}
@Override
public String getOwnPdfEncoding()
{
return pdfEncoding;
}
@Override
public void setPdfEncoding(String pdfEncoding)
{
Object old = this.pdfEncoding;
this.pdfEncoding = pdfEncoding;
getEventSupport().firePropertyChange(JRBaseStyle.PROPERTY_PDF_ENCODING, old, this.pdfEncoding);
}
@Override
public boolean isPdfEmbedded()
{
return getStyleResolver().isPdfEmbedded(this);
}
@Override
public Boolean isOwnPdfEmbedded()
{
return isPdfEmbedded;
}
/**
* @deprecated Replaced by {@link #setPdfEmbedded(Boolean)}.
*/
@Override
public void setPdfEmbedded(boolean isPdfEmbedded)
{
setPdfEmbedded((Boolean)isPdfEmbedded);
}
/**
* Alternative setPdfEmbedded method which allows also to reset
* the "own" isPdfEmbedded property.
*/
@Override
public void setPdfEmbedded(Boolean isPdfEmbedded)
{
Object old = this.isPdfEmbedded;
this.isPdfEmbedded = isPdfEmbedded;
getEventSupport().firePropertyChange(JRBaseStyle.PROPERTY_PDF_EMBEDDED, old, this.isPdfEmbedded);
}
@Override
public Color getDefaultLineColor()
{
return getForecolor();
}
@Override
public Object clone()
{
JRBaseTextElement clone = (JRBaseTextElement)super.clone();
clone.lineBox = lineBox.clone(clone);
clone.paragraph = paragraph.clone(clone);
return clone;
}
/*
* These fields are only for serialization backward compatibility.
*/
private int PSEUDO_SERIAL_VERSION_UID = JRConstants.PSEUDO_SERIAL_VERSION_UID; //NOPMD
/**
* @deprecated
*/
private Byte horizontalAlignment;
/**
* @deprecated
*/
private Byte verticalAlignment;
/**
* @deprecated
*/
private net.sf.jasperreports.engine.type.HorizontalAlignEnum horizontalAlignmentValue;
/**
* @deprecated
*/
private net.sf.jasperreports.engine.type.VerticalAlignEnum verticalAlignmentValue;
/**
* @deprecated
*/
private Byte rotation;
/**
* @deprecated
*/
private Byte lineSpacing;
/**
* @deprecated
*/
private LineSpacingEnum lineSpacingValue;
/**
* @deprecated
*/
private Boolean isStyledText;
/**
* @deprecated
*/
private Integer fontSize;
@SuppressWarnings("deprecation")
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
{
in.defaultReadObject();
if (PSEUDO_SERIAL_VERSION_UID < JRConstants.PSEUDO_SERIAL_VERSION_UID_3_7_2)
{
horizontalAlignmentValue = net.sf.jasperreports.engine.type.HorizontalAlignEnum.getByValue(horizontalAlignment);
verticalAlignmentValue = net.sf.jasperreports.engine.type.VerticalAlignEnum.getByValue(verticalAlignment);
rotationValue = RotationEnum.getByValue(rotation);
lineSpacingValue = LineSpacingEnum.getByValue(lineSpacing);
horizontalAlignment = null;
verticalAlignment = null;
rotation = null;
lineSpacing = null;
}
if (isStyledText != null)
{
markup = isStyledText ? JRCommonText.MARKUP_STYLED_TEXT : JRCommonText.MARKUP_NONE;
isStyledText = null;
}
if (paragraph == null)
{
paragraph = new JRBaseParagraph(this);
paragraph.setLineSpacing(lineSpacingValue);
lineSpacingValue = null;
}
if (PSEUDO_SERIAL_VERSION_UID < JRConstants.PSEUDO_SERIAL_VERSION_UID_5_5_2)
{
fontsize = fontSize == null ? null : fontSize.floatValue();
fontSize = null;
}
if (PSEUDO_SERIAL_VERSION_UID < JRConstants.PSEUDO_SERIAL_VERSION_UID_6_0_2)
{
horizontalTextAlign = net.sf.jasperreports.engine.type.HorizontalAlignEnum.getHorizontalTextAlignEnum(horizontalAlignmentValue);
verticalTextAlign = net.sf.jasperreports.engine.type.VerticalAlignEnum.getVerticalTextAlignEnum(verticalAlignmentValue);
horizontalAlignmentValue = null;
verticalAlignmentValue = null;
}
}
}