001: /*
002: * ============================================================================
003: * GNU Lesser General Public License
004: * ============================================================================
005: *
006: * JasperReports - Free Java report-generating library.
007: * Copyright (C) 2001-2006 JasperSoft Corporation http://www.jaspersoft.com
008: *
009: * This library is free software; you can redistribute it and/or
010: * modify it under the terms of the GNU Lesser General Public
011: * License as published by the Free Software Foundation; either
012: * version 2.1 of the License, or (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017: * Lesser General Public License for more details.
018: *
019: * You should have received a copy of the GNU Lesser General Public
020: * License along with this library; if not, write to the Free Software
021: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
022: *
023: * JasperSoft Corporation
024: * 303 Second Street, Suite 450 North
025: * San Francisco, CA 94107
026: * http://www.jaspersoft.com
027: */
028: package net.sf.jasperreports.engine.design;
029:
030: import net.sf.jasperreports.engine.JRConstants;
031: import net.sf.jasperreports.engine.JRDefaultStyleProvider;
032: import net.sf.jasperreports.engine.JRElement;
033: import net.sf.jasperreports.engine.JRElementGroup;
034: import net.sf.jasperreports.engine.JRExpression;
035: import net.sf.jasperreports.engine.JRGroup;
036: import net.sf.jasperreports.engine.JRStyle;
037: import net.sf.jasperreports.engine.base.JRBaseElement;
038:
039: /**
040: * This class provides a skeleton implementation for a design time report element. The difference between design elements
041: * and compiled elements is that at design time they are more customizable. This class contains setters for properties
042: * that can be only modified at design time.
043: * @author Teodor Danciu (teodord@users.sourceforge.net)
044: * @version $Id: JRDesignElement.java 1759 2007-06-20 16:47:34Z lucianc $
045: */
046: public abstract class JRDesignElement extends JRBaseElement {
047:
048: /**
049: *
050: */
051: private static final long serialVersionUID = JRConstants.SERIAL_VERSION_UID;
052:
053: /**
054: *
055: */
056: protected JRDesignElement(
057: JRDefaultStyleProvider defaultStyleProvider) {
058: super (defaultStyleProvider);
059:
060: positionType = JRElement.POSITION_TYPE_FIX_RELATIVE_TO_TOP;
061: }
062:
063: /**
064: * Sets the unique identifier for the element.
065: */
066: public void setKey(String key) {
067: this .key = key;
068: }
069:
070: /**
071: * Sets the vertical section relative offset for the element.
072: */
073: public void setY(int y) {
074: this .y = y;
075: }
076:
077: /**
078: *
079: */
080: public void setHeight(int height) {
081: this .height = height;
082: }
083:
084: /**
085: * Sets the print when expression. This expression must always return an instance of <tt>Boolean</tt> and its value
086: * will decide if the element will be displayed.
087: */
088: public void setPrintWhenExpression(JRExpression expression) {
089: this .printWhenExpression = expression;
090: }
091:
092: /**
093: * Specifies the group for which an element with a <i>printRepeatedValues</i> attribute set to true will be redisplayed
094: * even if the value has not changed.
095: */
096: public void setPrintWhenGroupChanges(JRGroup group) {
097: this .printWhenGroupChanges = group;
098: }
099:
100: /**
101: * Specifies the logical group that the element belongs to. More elements can be grouped in order to get the height
102: * of the tallest one.
103: * @see net.sf.jasperreports.engine.JRElement#STRETCH_TYPE_RELATIVE_TO_TALLEST_OBJECT
104: */
105: public void setElementGroup(JRElementGroup elementGroup) {
106: this .elementGroup = elementGroup;
107: }
108:
109: public void setStyle(JRStyle style) {
110: this .parentStyle = style;
111: }
112:
113: /**
114: * Set the name of the external style to be used for this element.
115: * <p/>
116: * An external style is only effective when there is no internal style set for this element,
117: * i.e. {@link #getStyle() getStyle()} returns <code>null</code>
118: * The external style will be resolved at fill time from the templates used in the report.
119: *
120: * @param styleName the name of the external style
121: * @see #getStyleNameReference()
122: */
123: public void setStyleNameReference(String styleName) {
124: this.parentStyleNameReference = styleName;
125: }
126: }
|