package net.sf.jasperreports.engine.fill; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRExpressionCollector; import net.sf.jasperreports.engine.JRPrintElement; import net.sf.jasperreports.engine.JRStaticText; import net.sf.jasperreports.engine.JRStyle; import net.sf.jasperreports.engine.JRTextElement; import net.sf.jasperreports.engine.JRVisitor; public class JRFillStaticText extends JRFillTextElement implements JRStaticText { protected JRFillStaticText(JRBaseFiller filler, JRStaticText staticText, JRFillObjectFactory factory) { super(filler, (JRTextElement)staticText, factory); String text = processMarkupText(staticText.getText()); if (text == null) text = ""; setRawText(text); } protected JRFillStaticText(JRFillStaticText staticText, JRFillCloneFactory factory) { super(staticText, factory); String text = processMarkupText(staticText.getText()); if (text == null) text = ""; setRawText(text); } public void setText(String text) {} protected JRTemplateText getJRTemplateText() { JRStyle style = getStyle(); JRTemplateText template = (JRTemplateText)getTemplate(style); if (template == null) { template = new JRTemplateText((this.band == null) ? null : this.band.getOrigin(), this.filler.getJasperPrint().getDefaultStyleProvider(), this); transferProperties(template); registerTemplate(style, template); } return template; } protected void evaluate(byte evaluation) throws JRException { reset(); evaluatePrintWhenExpression(evaluation); evaluateProperties(evaluation); setTextStart(0); setTextEnd(0); setValueRepeating(true); } protected boolean prepare(int availableStretchHeight, boolean isOverflow) throws JRException { boolean willOverflow = false; super.prepare(availableStretchHeight, isOverflow); if (!isToPrint()) return willOverflow; boolean isToPrint = true; boolean isReprinted = false; if (isOverflow && isAlreadyPrinted() && !isPrintWhenDetailOverflows()) isToPrint = false; if (isToPrint && isPrintWhenExpressionNull() && !isPrintRepeatedValues()) if ((!isPrintInFirstWholeBand() || !getBand().isFirstWholeOnPageColumn()) && (getPrintWhenGroupChanges() == null || !getBand().isNewGroup(getPrintWhenGroupChanges())) && (!isOverflow || !isPrintWhenDetailOverflows())) isToPrint = false; if (isToPrint && availableStretchHeight < getRelativeY() - getY() - getBandBottomY()) { isToPrint = false; willOverflow = true; } if (isToPrint && isOverflow && isPrintWhenDetailOverflows() && (isAlreadyPrinted() || (!isAlreadyPrinted() && !isPrintRepeatedValues()))) isReprinted = true; setTextStart(0); setTextEnd(0); if (isToPrint) chopTextElement(0); setToPrint(isToPrint); setReprinted(isReprinted); return willOverflow; } protected JRPrintElement fill() { JRTemplatePrintText text = new JRTemplatePrintText(getJRTemplateText()); text.setX(getX()); text.setY(getRelativeY()); text.setWidth(getWidth()); if (getRotation() == 0) { text.setHeight(getStretchHeight()); } else { text.setHeight(getHeight()); } text.setRunDirection(getRunDirection()); text.setLineSpacingFactor(getLineSpacingFactor()); text.setLeadingOffset(getLeadingOffset()); text.setTextHeight(getTextHeight()); transferProperties(text); setPrintText(text); return text; } public void collectExpressions(JRExpressionCollector collector) { collector.collect(this); } public void visit(JRVisitor visitor) { visitor.visitStaticText(this); } protected void resolveElement(JRPrintElement element, byte evaluation) {} public JRFillCloneable createClone(JRFillCloneFactory factory) { return new JRFillStaticText(this, factory); } protected boolean canOverflow() { return false; } }