Files
HRMS/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseElement.java
2025-07-28 13:56:49 +05:30

339 lines
10 KiB
Java

package net.sf.jasperreports.engine.base;
import java.awt.Color;
import java.io.Serializable;
import net.sf.jasperreports.engine.JRCommonElement;
import net.sf.jasperreports.engine.JRDefaultStyleProvider;
import net.sf.jasperreports.engine.JRElement;
import net.sf.jasperreports.engine.JRElementGroup;
import net.sf.jasperreports.engine.JRExpression;
import net.sf.jasperreports.engine.JRGroup;
import net.sf.jasperreports.engine.JRPropertiesHolder;
import net.sf.jasperreports.engine.JRPropertiesMap;
import net.sf.jasperreports.engine.JRPropertyExpression;
import net.sf.jasperreports.engine.JRRuntimeException;
import net.sf.jasperreports.engine.JRStyle;
import net.sf.jasperreports.engine.JRVisitable;
import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport;
import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport;
import net.sf.jasperreports.engine.util.JRStyleResolver;
public abstract class JRBaseElement implements JRElement, Serializable, JRChangeEventsSupport {
private static final long serialVersionUID = 10200L;
public static final String PROPERTY_POSITION_TYPE = "positionType";
public static final String PROPERTY_PRINT_IN_FIRST_WHOLE_BAND = "isPrintInFirstWholeBand";
public static final String PROPERTY_PRINT_REPEATED_VALUES = "isPrintRepeatedValues";
public static final String PROPERTY_PRINT_WHEN_DETAIL_OVERFLOWS = "isPrintWhenDetailOverflows";
public static final String PROPERTY_REMOVE_LINE_WHEN_BLANK = "isRemoveLineWhenBlank";
public static final String PROPERTY_STRETCH_TYPE = "stretchType";
public static final String PROPERTY_WIDTH = "width";
public static final String PROPERTY_X = "x";
protected String key = null;
protected byte positionType;
protected byte stretchType;
protected boolean isPrintRepeatedValues = true;
protected Byte mode;
protected int x = 0;
protected int y = 0;
protected int width = 0;
protected int height = 0;
protected boolean isRemoveLineWhenBlank = false;
protected boolean isPrintInFirstWholeBand = false;
protected boolean isPrintWhenDetailOverflows = false;
protected Color forecolor = null;
protected Color backcolor = null;
protected JRExpression printWhenExpression = null;
protected JRGroup printWhenGroupChanges = null;
protected JRElementGroup elementGroup = null;
protected JRDefaultStyleProvider defaultStyleProvider;
protected JRStyle parentStyle;
protected String parentStyleNameReference;
private JRPropertiesMap propertiesMap;
private JRPropertyExpression[] propertyExpressions;
private transient JRPropertyChangeSupport eventSupport;
protected JRBaseElement(JRDefaultStyleProvider defaultStyleProvider) {
this.defaultStyleProvider = defaultStyleProvider;
}
protected JRBaseElement(JRElement element, JRBaseObjectFactory factory) {
factory.put(element, this);
this.defaultStyleProvider = factory.getDefaultStyleProvider();
this.parentStyle = factory.getStyle(element.getStyle());
this.parentStyleNameReference = element.getStyleNameReference();
this.key = element.getKey();
this.positionType = element.getPositionType();
this.stretchType = element.getStretchType();
this.isPrintRepeatedValues = element.isPrintRepeatedValues();
this.mode = element.getOwnMode();
this.x = element.getX();
this.y = element.getY();
this.width = element.getWidth();
this.height = element.getHeight();
this.isRemoveLineWhenBlank = element.isRemoveLineWhenBlank();
this.isPrintInFirstWholeBand = element.isPrintInFirstWholeBand();
this.isPrintWhenDetailOverflows = element.isPrintWhenDetailOverflows();
this.forecolor = element.getOwnForecolor();
this.backcolor = element.getOwnBackcolor();
this.printWhenExpression = factory.getExpression(element.getPrintWhenExpression());
this.printWhenGroupChanges = factory.getGroup(element.getPrintWhenGroupChanges());
this.elementGroup = (JRElementGroup)factory.getVisitResult((JRVisitable)element.getElementGroup());
this.propertiesMap = JRPropertiesMap.getPropertiesClone((JRPropertiesHolder)element);
copyPropertyExpressions(element, factory);
}
private void copyPropertyExpressions(JRElement element, JRBaseObjectFactory factory) {
JRPropertyExpression[] props = element.getPropertyExpressions();
if (props != null && props.length > 0) {
this.propertyExpressions = new JRPropertyExpression[props.length];
for (int i = 0; i < props.length; i++)
this.propertyExpressions[i] = factory.getPropertyExpression(props[i]);
}
}
public JRDefaultStyleProvider getDefaultStyleProvider() {
return this.defaultStyleProvider;
}
protected JRStyle getBaseStyle() {
if (this.parentStyle != null)
return this.parentStyle;
if (this.defaultStyleProvider != null)
return this.defaultStyleProvider.getDefaultStyle();
return null;
}
public String getKey() {
return this.key;
}
public byte getPositionType() {
return this.positionType;
}
public void setPositionType(byte positionType) {
byte old = this.positionType;
this.positionType = positionType;
getEventSupport().firePropertyChange("positionType", old, this.positionType);
}
public byte getStretchType() {
return this.stretchType;
}
public void setStretchType(byte stretchType) {
byte old = this.stretchType;
this.stretchType = stretchType;
getEventSupport().firePropertyChange("stretchType", old, this.stretchType);
}
public boolean isPrintRepeatedValues() {
return this.isPrintRepeatedValues;
}
public void setPrintRepeatedValues(boolean isPrintRepeatedValues) {
boolean old = this.isPrintRepeatedValues;
this.isPrintRepeatedValues = isPrintRepeatedValues;
getEventSupport().firePropertyChange("isPrintRepeatedValues", old, this.isPrintRepeatedValues);
}
public byte getMode() {
return JRStyleResolver.getMode((JRCommonElement)this, (byte)1);
}
public Byte getOwnMode() {
return this.mode;
}
public void setMode(byte mode) {
setMode(new Byte(mode));
}
public void setMode(Byte mode) {
Object old = this.mode;
this.mode = mode;
getEventSupport().firePropertyChange("mode", old, this.mode);
}
public int getX() {
return this.x;
}
public void setX(int x) {
int old = this.x;
this.x = x;
getEventSupport().firePropertyChange("x", old, this.x);
}
public int getY() {
return this.y;
}
public int getWidth() {
return this.width;
}
public void setWidth(int width) {
int old = this.width;
this.width = width;
getEventSupport().firePropertyChange("width", old, this.width);
}
public int getHeight() {
return this.height;
}
public boolean isRemoveLineWhenBlank() {
return this.isRemoveLineWhenBlank;
}
public void setRemoveLineWhenBlank(boolean isRemoveLine) {
boolean old = this.isRemoveLineWhenBlank;
this.isRemoveLineWhenBlank = isRemoveLine;
getEventSupport().firePropertyChange("isRemoveLineWhenBlank", old, this.isRemoveLineWhenBlank);
}
public boolean isPrintInFirstWholeBand() {
return this.isPrintInFirstWholeBand;
}
public void setPrintInFirstWholeBand(boolean isPrint) {
boolean old = this.isPrintInFirstWholeBand;
this.isPrintInFirstWholeBand = isPrint;
getEventSupport().firePropertyChange("isPrintInFirstWholeBand", old, this.isPrintInFirstWholeBand);
}
public boolean isPrintWhenDetailOverflows() {
return this.isPrintWhenDetailOverflows;
}
public void setPrintWhenDetailOverflows(boolean isPrint) {
boolean old = this.isPrintWhenDetailOverflows;
this.isPrintWhenDetailOverflows = isPrint;
getEventSupport().firePropertyChange("isPrintWhenDetailOverflows", old, this.isPrintWhenDetailOverflows);
}
public Color getForecolor() {
return JRStyleResolver.getForecolor((JRCommonElement)this);
}
public Color getOwnForecolor() {
return this.forecolor;
}
public void setForecolor(Color forecolor) {
Object old = this.forecolor;
this.forecolor = forecolor;
getEventSupport().firePropertyChange("forecolor", old, this.forecolor);
}
public Color getBackcolor() {
return JRStyleResolver.getBackcolor((JRCommonElement)this);
}
public Color getOwnBackcolor() {
return this.backcolor;
}
public void setBackcolor(Color backcolor) {
Object old = this.backcolor;
this.backcolor = backcolor;
getEventSupport().firePropertyChange("backcolor", old, this.backcolor);
}
public JRExpression getPrintWhenExpression() {
return this.printWhenExpression;
}
public JRGroup getPrintWhenGroupChanges() {
return this.printWhenGroupChanges;
}
public JRElementGroup getElementGroup() {
return this.elementGroup;
}
public JRStyle getStyle() {
return this.parentStyle;
}
public String getStyleNameReference() {
return this.parentStyleNameReference;
}
public JRPropertyChangeSupport getEventSupport() {
synchronized (this) {
if (this.eventSupport == null)
this.eventSupport = new JRPropertyChangeSupport(this);
}
return this.eventSupport;
}
public Object clone() {
JRBaseElement clone = null;
try {
clone = (JRBaseElement)super.clone();
} catch (CloneNotSupportedException e) {
throw new JRRuntimeException(e);
}
if (this.printWhenExpression != null)
clone.printWhenExpression = (JRExpression)this.printWhenExpression.clone();
return clone;
}
public Object clone(JRElementGroup parentGroup) {
JRBaseElement clone = (JRBaseElement)clone();
clone.elementGroup = parentGroup;
return clone;
}
public boolean hasProperties() {
return (this.propertiesMap != null && this.propertiesMap.hasProperties());
}
public JRPropertiesMap getPropertiesMap() {
if (this.propertiesMap == null)
this.propertiesMap = new JRPropertiesMap();
return this.propertiesMap;
}
public JRPropertiesHolder getParentProperties() {
return null;
}
public JRPropertyExpression[] getPropertyExpressions() {
return this.propertyExpressions;
}
}