package net.sf.jasperreports.engine.base; import java.io.Serializable; import net.sf.jasperreports.engine.JRBand; import net.sf.jasperreports.engine.JRExpression; import net.sf.jasperreports.engine.JRGroup; import net.sf.jasperreports.engine.JRRuntimeException; import net.sf.jasperreports.engine.JRVariable; import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport; import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport; public class JRBaseGroup implements JRGroup, Serializable, JRChangeEventsSupport { private static final long serialVersionUID = 10200L; public static final String PROPERTY_MIN_HEIGHT_TO_START_NEW_PAGE = "minHeightToStartNewPage"; public static final String PROPERTY_RESET_PAGE_NUMBER = "resetPageNumber"; public static final String PROPERTY_REPRINT_HEADER_ON_EACH_PAGE = "reprintHeaderOnEachPage"; public static final String PROPERTY_START_NEW_COLUMN = "startNewColumn"; public static final String PROPERTY_START_NEW_PAGE = "startNewPage"; protected String name = null; protected boolean isStartNewColumn = false; protected boolean isStartNewPage = false; protected boolean isResetPageNumber = false; protected boolean isReprintHeaderOnEachPage = false; protected int minHeightToStartNewPage = 0; protected JRExpression expression = null; protected JRBand groupHeader = null; protected JRBand groupFooter = null; protected JRVariable countVariable = null; private transient JRPropertyChangeSupport eventSupport; protected JRBaseGroup() {} protected JRBaseGroup(JRGroup group, JRBaseObjectFactory factory) { factory.put(group, this); this.name = group.getName(); this.isStartNewColumn = group.isStartNewColumn(); this.isStartNewPage = group.isStartNewPage(); this.isResetPageNumber = group.isResetPageNumber(); this.isReprintHeaderOnEachPage = group.isReprintHeaderOnEachPage(); this.minHeightToStartNewPage = group.getMinHeightToStartNewPage(); this.expression = factory.getExpression(group.getExpression()); this.groupHeader = factory.getBand(group.getGroupHeader()); this.groupFooter = factory.getBand(group.getGroupFooter()); this.countVariable = factory.getVariable(group.getCountVariable()); } public String getName() { return this.name; } public boolean isStartNewColumn() { return this.isStartNewColumn; } public void setStartNewColumn(boolean isStart) { boolean old = this.isStartNewColumn; this.isStartNewColumn = isStart; getEventSupport().firePropertyChange("startNewColumn", old, this.isStartNewColumn); } public boolean isStartNewPage() { return this.isStartNewPage; } public void setStartNewPage(boolean isStart) { boolean old = this.isStartNewPage; this.isStartNewPage = isStart; getEventSupport().firePropertyChange("startNewPage", old, this.isStartNewPage); } public boolean isResetPageNumber() { return this.isResetPageNumber; } public void setResetPageNumber(boolean isReset) { boolean old = this.isResetPageNumber; this.isResetPageNumber = isReset; getEventSupport().firePropertyChange("resetPageNumber", old, this.isResetPageNumber); } public boolean isReprintHeaderOnEachPage() { return this.isReprintHeaderOnEachPage; } public void setReprintHeaderOnEachPage(boolean isReprint) { boolean old = this.isReprintHeaderOnEachPage; this.isReprintHeaderOnEachPage = isReprint; getEventSupport().firePropertyChange("reprintHeaderOnEachPage", old, this.isReprintHeaderOnEachPage); } public int getMinHeightToStartNewPage() { return this.minHeightToStartNewPage; } public void setMinHeightToStartNewPage(int minHeight) { int old = this.minHeightToStartNewPage; this.minHeightToStartNewPage = minHeight; getEventSupport().firePropertyChange("minHeightToStartNewPage", old, this.minHeightToStartNewPage); } public JRExpression getExpression() { return this.expression; } public JRBand getGroupHeader() { return this.groupHeader; } public JRBand getGroupFooter() { return this.groupFooter; } public JRVariable getCountVariable() { return this.countVariable; } public Object clone() { JRBaseGroup clone = null; try { clone = (JRBaseGroup)super.clone(); } catch (CloneNotSupportedException e) { throw new JRRuntimeException(e); } if (this.expression != null) clone.expression = (JRExpression)this.expression.clone(); if (this.groupHeader != null) clone.groupHeader = (JRBand)this.groupHeader.clone(); if (this.groupFooter != null) clone.groupFooter = (JRBand)this.groupFooter.clone(); if (this.countVariable != null) clone.countVariable = (JRVariable)this.countVariable.clone(); return clone; } public JRPropertyChangeSupport getEventSupport() { synchronized (this) { if (this.eventSupport == null) this.eventSupport = new JRPropertyChangeSupport(this); } return this.eventSupport; } }