001: /**
002: * ===========================================
003: * JFreeReport : a free Java reporting library
004: * ===========================================
005: *
006: * Project Info: http://reporting.pentaho.org/
007: *
008: * (C) Copyright 2001-2007, by Object Refinery Ltd, Pentaho Corporation and Contributors.
009: *
010: * This library is free software; you can redistribute it and/or modify it under the terms
011: * of the GNU Lesser General Public License as published by the Free Software Foundation;
012: * either 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, but WITHOUT ANY WARRANTY;
015: * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016: * See the GNU Lesser General Public License for more details.
017: *
018: * You should have received a copy of the GNU Lesser General Public License along with this
019: * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
020: * Boston, MA 02111-1307, USA.
021: *
022: * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
023: * in the United States and other countries.]
024: *
025: * ------------
026: * StaticLayoutManager.java
027: * ------------
028: * (C) Copyright 2001-2007, by Object Refinery Ltd, Pentaho Corporation and Contributors.
029: */package org.jfree.report.layout;
030:
031: import org.jfree.report.Band;
032: import org.jfree.report.function.ExpressionRuntime;
033: import org.jfree.report.style.ElementStyleKeys;
034: import org.jfree.report.style.StyleKey;
035: import org.jfree.report.util.geom.StrictDimension;
036:
037: /**
038: * An implementation of the BandLayoutManager interface.
039: * <p/>
040: * Rule: Bands can have minimum, max and pref size defined. These values are hints for the
041: * layout container, no restrictions. If min and pref are '0', they are ignored. MaxSize
042: * is never ignored.
043: * <p/>
044: * Elements that have the "dynamic" flag set, are checked for their content-bounds. This
045: * operation is expensive, so this is only done if really needed. The dynamic flag will
046: * influence the height of an element, a valid width must be already set.
047: * <p/>
048: * Invisible elements within the layouted band are not evaluated. This layout manager will
049: * ignore invisible child bands and -elements.
050: * <p/>
051: * Note to everybody who tries to understand this class: This class is full of old
052: * compatibility code, this class is not designed to be smart, or suitable for complex
053: * layouts. The only purpose of this class is to maintain backward compatiblity with older
054: * releases of JFreeReport.
055: * <p/>
056: * The use of relative elements (the one's with 100% should be considered carefully, as
057: * these elements are not fully predictable).
058: *
059: * @author Thomas Morgner
060: * @deprecated This layout manager is no longer used.
061: */
062: public class StaticLayoutManager implements BandLayoutManager {
063: /**
064: * A key for the absolute position of an element.
065: */
066: public static final StyleKey ABSOLUTE_POS = ElementStyleKeys.ABSOLUTE_POS;
067:
068: /**
069: * Creates a new layout manager.
070: */
071: public StaticLayoutManager() {
072: }
073:
074: /**
075: * Calculates the preferred layout size for a band. The band is limited to the given
076: * container bounds as well as to the own maximum size.
077: * <p/>
078: * The preferred size of non-absolute elements is calculated by using the parents
079: * dimensions supplied in containerDims. Elements with a width or height of 100% will
080: * consume all available space of the parent.
081: *
082: * @param b the band.
083: * @param containerDims the maximum size the band should use for that container.
084: * @param maxUsableSize
085: * @param support the layout support used to compute sizes.
086: * @return the preferred size.
087: */
088: public StrictDimension preferredLayoutSize(final Band b,
089: final StrictDimension containerDims,
090: final StrictDimension maxUsableSize,
091: final LayoutSupport support, final ExpressionRuntime runtime) {
092: throw new UnsupportedOperationException();
093: }
094:
095: /**
096: * Calculates the minimum layout size for a band. The width for the child elements are
097: * not calculated, as we assume that the width's are defined fixed within the parent.
098: *
099: * @param b the band.
100: * @param containerBounds the bounds of the bands parents.
101: * @param maxUsableSize
102: * @param support the layout support used to compute sizes.
103: * @return the minimum size.
104: */
105: public StrictDimension minimumLayoutSize(final Band b,
106: final StrictDimension containerBounds,
107: final StrictDimension maxUsableSize,
108: final LayoutSupport support, final ExpressionRuntime runtime) {
109: throw new UnsupportedOperationException();
110: }
111:
112: /**
113: * Layout a single band with all elements contained within the band.
114: * <p/>
115: * The band has its <code>BOUNDS</code> already set and all elements are laid out within
116: * these bounds. The band's properties will not be changed during the layouting.
117: * <p/>
118: * This layout manager requires that all direct child elements have the
119: * <code>ABSOLUTE_POS</code> and <code>MINIMUM_SIZE</code> properties set to valid
120: * values.
121: *
122: * @param b the band to lay out.
123: * @param support the layout support used to compute sizes.
124: * @throws java.lang.IllegalStateException
125: * if the bands has no bounds set.
126: */
127: public synchronized void doLayout(final Band b,
128: final LayoutSupport support, final ExpressionRuntime runtime) {
129: throw new UnsupportedOperationException();
130: }
131: }
|