323 lines
9.5 KiB
Java
323 lines
9.5 KiB
Java
package net.sf.jasperreports.engine.base;
|
|
|
|
import java.awt.font.TextAttribute;
|
|
import java.io.Serializable;
|
|
import java.util.Map;
|
|
import net.sf.jasperreports.engine.JRDefaultFontProvider;
|
|
import net.sf.jasperreports.engine.JRDefaultStyleProvider;
|
|
import net.sf.jasperreports.engine.JRFont;
|
|
import net.sf.jasperreports.engine.JRReportFont;
|
|
import net.sf.jasperreports.engine.JRStyle;
|
|
import net.sf.jasperreports.engine.JRStyleContainer;
|
|
import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport;
|
|
import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport;
|
|
import net.sf.jasperreports.engine.util.JRStyleResolver;
|
|
import net.sf.jasperreports.engine.util.JRTextAttribute;
|
|
|
|
public class JRBaseFont implements JRFont, Serializable, JRChangeEventsSupport {
|
|
private static final long serialVersionUID = 10200L;
|
|
|
|
public static final String PROPERTY_BOLD = "bold";
|
|
|
|
public static final String PROPERTY_FONT_NAME = "fontName";
|
|
|
|
public static final String PROPERTY_FONT_SIZE = "fontSize";
|
|
|
|
public static final String PROPERTY_ITALIC = "italic";
|
|
|
|
public static final String PROPERTY_PDF_EMBEDDED = "pdfEmbedded";
|
|
|
|
public static final String PROPERTY_PDF_ENCODING = "pdfEncoding";
|
|
|
|
public static final String PROPERTY_PDF_FONT_NAME = "pdfFontName";
|
|
|
|
public static final String PROPERTY_REPORT_FONT = "reportFont";
|
|
|
|
public static final String PROPERTY_STRIKE_THROUGH = "strikeThrough";
|
|
|
|
public static final String PROPERTY_UNDERLINE = "underline";
|
|
|
|
protected JRDefaultFontProvider defaultFontProvider = null;
|
|
|
|
protected JRReportFont reportFont = null;
|
|
|
|
protected JRStyleContainer styleContainer = null;
|
|
|
|
protected String fontName = null;
|
|
|
|
protected Boolean isBold = null;
|
|
|
|
protected Boolean isItalic = null;
|
|
|
|
protected Boolean isUnderline = null;
|
|
|
|
protected Boolean isStrikeThrough = null;
|
|
|
|
protected Integer fontSize = null;
|
|
|
|
protected String pdfFontName = null;
|
|
|
|
protected String pdfEncoding = null;
|
|
|
|
protected Boolean isPdfEmbedded = null;
|
|
|
|
private transient JRPropertyChangeSupport eventSupport;
|
|
|
|
public JRBaseFont() {}
|
|
|
|
public JRBaseFont(Map attributes) {
|
|
String fontNameAttr = (String)attributes.get(TextAttribute.FAMILY);
|
|
if (fontNameAttr != null)
|
|
setFontName(fontNameAttr);
|
|
Object bold = attributes.get(TextAttribute.WEIGHT);
|
|
if (bold != null)
|
|
setBold(TextAttribute.WEIGHT_BOLD.equals(bold));
|
|
Object italic = attributes.get(TextAttribute.POSTURE);
|
|
if (italic != null)
|
|
setItalic(TextAttribute.POSTURE_OBLIQUE.equals(italic));
|
|
Float sizeAttr = (Float)attributes.get(TextAttribute.SIZE);
|
|
if (sizeAttr != null)
|
|
setFontSize(sizeAttr.intValue());
|
|
Object underline = attributes.get(TextAttribute.UNDERLINE);
|
|
if (underline != null)
|
|
setUnderline(TextAttribute.UNDERLINE_ON.equals(underline));
|
|
Object strikeThrough = attributes.get(TextAttribute.STRIKETHROUGH);
|
|
if (strikeThrough != null)
|
|
setStrikeThrough(TextAttribute.STRIKETHROUGH_ON.equals(strikeThrough));
|
|
String pdfFontNameAttr = (String)attributes.get(JRTextAttribute.PDF_FONT_NAME);
|
|
if (pdfFontNameAttr != null)
|
|
setPdfFontName(pdfFontNameAttr);
|
|
String pdfEncodingAttr = (String)attributes.get(JRTextAttribute.PDF_ENCODING);
|
|
if (pdfEncodingAttr != null)
|
|
setPdfEncoding(pdfEncodingAttr);
|
|
Boolean isPdfEmbeddedAttr = (Boolean)attributes.get(JRTextAttribute.IS_PDF_EMBEDDED);
|
|
if (isPdfEmbeddedAttr != null)
|
|
setPdfEmbedded(isPdfEmbeddedAttr);
|
|
}
|
|
|
|
protected JRBaseFont(JRDefaultFontProvider defaultFontProvider) {
|
|
this.defaultFontProvider = defaultFontProvider;
|
|
}
|
|
|
|
public JRBaseFont(JRDefaultFontProvider defaultFontProvider, JRReportFont reportFont, JRFont font) {
|
|
this(defaultFontProvider, reportFont, null, font);
|
|
}
|
|
|
|
public JRBaseFont(JRDefaultFontProvider defaultFontProvider, JRReportFont reportFont, JRStyleContainer styleContainer, JRFont font) {
|
|
this.defaultFontProvider = defaultFontProvider;
|
|
this.reportFont = reportFont;
|
|
this.styleContainer = styleContainer;
|
|
if (font != null) {
|
|
this.fontName = font.getOwnFontName();
|
|
this.isBold = font.isOwnBold();
|
|
this.isItalic = font.isOwnItalic();
|
|
this.isUnderline = font.isOwnUnderline();
|
|
this.isStrikeThrough = font.isOwnStrikeThrough();
|
|
this.fontSize = font.getOwnFontSize();
|
|
this.pdfFontName = font.getOwnPdfFontName();
|
|
this.pdfEncoding = font.getOwnPdfEncoding();
|
|
this.isPdfEmbedded = font.isOwnPdfEmbedded();
|
|
}
|
|
}
|
|
|
|
public JRDefaultFontProvider getDefaultFontProvider() {
|
|
return this.defaultFontProvider;
|
|
}
|
|
|
|
public JRDefaultStyleProvider getDefaultStyleProvider() {
|
|
return (this.styleContainer == null) ? null : this.styleContainer.getDefaultStyleProvider();
|
|
}
|
|
|
|
public JRStyle getStyle() {
|
|
return (this.styleContainer == null) ? null : this.styleContainer.getStyle();
|
|
}
|
|
|
|
public JRReportFont getReportFont() {
|
|
return this.reportFont;
|
|
}
|
|
|
|
public void setReportFont(JRReportFont reportFont) {
|
|
Object old = this.reportFont;
|
|
this.reportFont = reportFont;
|
|
getEventSupport().firePropertyChange("reportFont", old, this.reportFont);
|
|
}
|
|
|
|
public String getFontName() {
|
|
return JRStyleResolver.getFontName(this);
|
|
}
|
|
|
|
public String getOwnFontName() {
|
|
return this.fontName;
|
|
}
|
|
|
|
public void setFontName(String fontName) {
|
|
Object old = this.fontName;
|
|
this.fontName = fontName;
|
|
getEventSupport().firePropertyChange("fontName", old, this.fontName);
|
|
}
|
|
|
|
public boolean isBold() {
|
|
return JRStyleResolver.isBold(this);
|
|
}
|
|
|
|
public Boolean isOwnBold() {
|
|
return this.isBold;
|
|
}
|
|
|
|
public void setBold(boolean isBold) {
|
|
setBold(isBold ? Boolean.TRUE : Boolean.FALSE);
|
|
}
|
|
|
|
public void setBold(Boolean isBold) {
|
|
Object old = this.isBold;
|
|
this.isBold = isBold;
|
|
getEventSupport().firePropertyChange("bold", old, this.isBold);
|
|
}
|
|
|
|
public boolean isItalic() {
|
|
return JRStyleResolver.isItalic(this);
|
|
}
|
|
|
|
public Boolean isOwnItalic() {
|
|
return this.isItalic;
|
|
}
|
|
|
|
public void setItalic(boolean isItalic) {
|
|
setItalic(isItalic ? Boolean.TRUE : Boolean.FALSE);
|
|
}
|
|
|
|
public void setItalic(Boolean isItalic) {
|
|
Object old = this.isItalic;
|
|
this.isItalic = isItalic;
|
|
getEventSupport().firePropertyChange("italic", old, this.isItalic);
|
|
}
|
|
|
|
public boolean isUnderline() {
|
|
return JRStyleResolver.isUnderline(this);
|
|
}
|
|
|
|
public Boolean isOwnUnderline() {
|
|
return this.isUnderline;
|
|
}
|
|
|
|
public void setUnderline(boolean isUnderline) {
|
|
setUnderline(isUnderline ? Boolean.TRUE : Boolean.FALSE);
|
|
}
|
|
|
|
public void setUnderline(Boolean isUnderline) {
|
|
Object old = this.isUnderline;
|
|
this.isUnderline = isUnderline;
|
|
getEventSupport().firePropertyChange("underline", old, this.isUnderline);
|
|
}
|
|
|
|
public boolean isStrikeThrough() {
|
|
return JRStyleResolver.isStrikeThrough(this);
|
|
}
|
|
|
|
public Boolean isOwnStrikeThrough() {
|
|
return this.isStrikeThrough;
|
|
}
|
|
|
|
public void setStrikeThrough(boolean isStrikeThrough) {
|
|
setStrikeThrough(isStrikeThrough ? Boolean.TRUE : Boolean.FALSE);
|
|
}
|
|
|
|
public void setStrikeThrough(Boolean isStrikeThrough) {
|
|
Object old = this.isStrikeThrough;
|
|
this.isStrikeThrough = isStrikeThrough;
|
|
getEventSupport().firePropertyChange("strikeThrough", old, this.isStrikeThrough);
|
|
}
|
|
|
|
public int getFontSize() {
|
|
return JRStyleResolver.getFontSize(this);
|
|
}
|
|
|
|
public Integer getOwnFontSize() {
|
|
return this.fontSize;
|
|
}
|
|
|
|
public void setFontSize(int fontSize) {
|
|
setFontSize(new Integer(fontSize));
|
|
}
|
|
|
|
public void setFontSize(Integer fontSize) {
|
|
Object old = this.fontSize;
|
|
this.fontSize = fontSize;
|
|
getEventSupport().firePropertyChange("fontSize", old, this.fontSize);
|
|
}
|
|
|
|
public int getSize() {
|
|
return getFontSize();
|
|
}
|
|
|
|
public Integer getOwnSize() {
|
|
return getOwnFontSize();
|
|
}
|
|
|
|
public void setSize(int size) {
|
|
setFontSize(size);
|
|
}
|
|
|
|
public void setSize(Integer size) {
|
|
setFontSize(size);
|
|
}
|
|
|
|
public String getPdfFontName() {
|
|
return JRStyleResolver.getPdfFontName(this);
|
|
}
|
|
|
|
public String getOwnPdfFontName() {
|
|
return this.pdfFontName;
|
|
}
|
|
|
|
public void setPdfFontName(String pdfFontName) {
|
|
Object old = this.pdfFontName;
|
|
this.pdfFontName = pdfFontName;
|
|
getEventSupport().firePropertyChange("pdfFontName", old, this.pdfFontName);
|
|
}
|
|
|
|
public String getPdfEncoding() {
|
|
return JRStyleResolver.getPdfEncoding(this);
|
|
}
|
|
|
|
public String getOwnPdfEncoding() {
|
|
return this.pdfEncoding;
|
|
}
|
|
|
|
public void setPdfEncoding(String pdfEncoding) {
|
|
Object old = this.pdfEncoding;
|
|
this.pdfEncoding = pdfEncoding;
|
|
getEventSupport().firePropertyChange("pdfEncoding", old, this.pdfEncoding);
|
|
}
|
|
|
|
public boolean isPdfEmbedded() {
|
|
return JRStyleResolver.isPdfEmbedded(this);
|
|
}
|
|
|
|
public Boolean isOwnPdfEmbedded() {
|
|
return this.isPdfEmbedded;
|
|
}
|
|
|
|
public void setPdfEmbedded(boolean isPdfEmbedded) {
|
|
setPdfEmbedded(isPdfEmbedded ? Boolean.TRUE : Boolean.FALSE);
|
|
}
|
|
|
|
public void setPdfEmbedded(Boolean isPdfEmbedded) {
|
|
Object old = this.isPdfEmbedded;
|
|
this.isPdfEmbedded = isPdfEmbedded;
|
|
getEventSupport().firePropertyChange("pdfEmbedded", old, this.isPdfEmbedded);
|
|
}
|
|
|
|
public String getStyleNameReference() {
|
|
return (this.styleContainer == null) ? null : this.styleContainer.getStyleNameReference();
|
|
}
|
|
|
|
public JRPropertyChangeSupport getEventSupport() {
|
|
synchronized (this) {
|
|
if (this.eventSupport == null)
|
|
this.eventSupport = new JRPropertyChangeSupport(this);
|
|
}
|
|
return this.eventSupport;
|
|
}
|
|
}
|