KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > fop > fo > pagination > Region


1 /*
2  * $Id: Region.java,v 1.5.2.4 2003/04/11 00:24:41 pietsch Exp $
3  * ============================================================================
4  * The Apache Software License, Version 1.1
5  * ============================================================================
6  *
7  * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without modifica-
10  * tion, are permitted provided that the following conditions are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright notice,
13  * this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright notice,
16  * this list of conditions and the following disclaimer in the documentation
17  * and/or other materials provided with the distribution.
18  *
19  * 3. The end-user documentation included with the redistribution, if any, must
20  * include the following acknowledgment: "This product includes software
21  * developed by the Apache Software Foundation (http://www.apache.org/)."
22  * Alternately, this acknowledgment may appear in the software itself, if
23  * and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. The names "FOP" and "Apache Software Foundation" must not be used to
26  * endorse or promote products derived from this software without prior
27  * written permission. For written permission, please contact
28  * apache@apache.org.
29  *
30  * 5. Products derived from this software may not be called "Apache", nor may
31  * "Apache" appear in their name, without prior written permission of the
32  * Apache Software Foundation.
33  *
34  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
35  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
36  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
37  * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
38  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
39  * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
40  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
41  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
42  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
43  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
44  * ============================================================================
45  *
46  * This software consists of voluntary contributions made by many individuals
47  * on behalf of the Apache Software Foundation and was originally created by
48  * James Tauber <jtauber@jtauber.com>. For more information on the Apache
49  * Software Foundation, please see <http://www.apache.org/>.
50  */

51 package org.apache.fop.fo.pagination;
52
53 // FOP
54
import org.apache.fop.fo.FObj;
55 import org.apache.fop.fo.PropertyList;
56 import org.apache.fop.apps.FOPException;
57 import org.apache.fop.layout.RegionArea;
58
59 /**
60  * Abstract base class for pagination regions.
61  */

62 public abstract class Region extends FObj {
63     public static final String JavaDoc PROP_REGION_NAME = "region-name";
64
65     private SimplePageMaster _layoutMaster;
66     private String JavaDoc _regionName;
67
68     protected Region(FObj parent, PropertyList propertyList,
69                      String JavaDoc systemId, int line, int column)
70         throws FOPException {
71         super(parent, propertyList, systemId, line, column);
72
73         // regions may have name, or default
74
if (null == this.properties.get(PROP_REGION_NAME)) {
75             setRegionName(getDefaultRegionName());
76         } else if (this.properties.get(PROP_REGION_NAME).getString().equals("")) {
77             setRegionName(getDefaultRegionName());
78         } else {
79             setRegionName(this.properties.get(PROP_REGION_NAME).getString());
80             // check that name is OK. Not very pretty.
81
if (isReserved(getRegionName())
82                     &&!getRegionName().equals(getDefaultRegionName())) {
83                 throw new FOPException(PROP_REGION_NAME + " '" + _regionName
84                                        + "' for " + this.getName()
85                                        + " not permitted.", systemId, line, column);
86             }
87         }
88
89         if (parent.getName().equals("fo:simple-page-master")) {
90             _layoutMaster = (SimplePageMaster)parent;
91             getPageMaster().addRegion(this);
92         } else {
93             throw new FOPException(getName() + " must be child "
94                                    + "of simple-page-master, not "
95                                    + parent.getName(), systemId, line, column);
96         }
97     }
98
99     /**
100      * Creates a Region layout object for this pagination Region.
101      */

102     abstract RegionArea makeRegionArea(int allocationRectangleXPosition,
103                                        int allocationRectangleYPosition,
104                                        int allocationRectangleWidth,
105                                        int allocationRectangleHeight);
106
107     /**
108      * Returns the default region name (xsl-region-before, xsl-region-start,
109      * etc.)
110      */

111     protected abstract String JavaDoc getDefaultRegionName();
112
113     public abstract String JavaDoc getRegionClass();
114
115
116     /**
117      * Returns the name of this region
118      */

119     public String JavaDoc getRegionName() {
120         return _regionName;
121     }
122
123     private void setRegionName(String JavaDoc name) {
124         _regionName = name;
125     }
126
127     protected SimplePageMaster getPageMaster() {
128         return _layoutMaster;
129     }
130
131     /**
132      * Checks to see if a given region name is one of the reserved names
133      *
134      * @param name a region name to check
135      * @return true if the name parameter is a reserved region name
136      */

137     protected boolean isReserved(String JavaDoc name) throws FOPException {
138         return (name.equals("xsl-region-before")
139                 || name.equals("xsl-region-start")
140                 || name.equals("xsl-region-end")
141                 || name.equals("xsl-region-after")
142                 || name.equals("xsl-before-float-separator")
143                 || name.equals("xsl-footnote-separator"));
144     }
145
146     public boolean generatesReferenceAreas() {
147         return true;
148     }
149
150 }
151
Popular Tags