aboutsummaryrefslogtreecommitdiffstats
path: root/src/org/apache/fop/fo/FONode.java
blob: 2e0dc72d882da7520e3aae285b7ed6aab6b19bf6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
 * $Id$
 * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
 * For details on use and redistribution please refer to the
 * LICENSE file included with these sources.
 */

package org.apache.fop.fo;

// FOP
import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.StreamRenderer;
import org.apache.fop.layout.Area;
import org.apache.fop.util.CharUtilities;

// Avalon
import org.apache.avalon.framework.logger.Logger;

import org.xml.sax.Attributes;

import java.util.ListIterator;
import java.util.NoSuchElementException;

/**
 * base class for nodes in the XML tree
 *
 */
abstract public class FONode {
    protected FOUserAgent userAgent;
    protected FONode parent;
    protected String name;

    protected Logger log;

    protected FONode(FONode parent) {
        this.parent = parent;
    }

    public void setName(String str) {
        name = str;
    }

    public void setLogger(Logger logger) {
        log = logger;
    }

    public void setUserAgent(FOUserAgent ua) {
        userAgent = ua;
    }

    public void setStreamRenderer(StreamRenderer st) {
    }

    public void handleAttrs(Attributes attlist) throws FOPException {
    }

    /**
     * returns the name of the object
     * @return the name of this object
     */
    public String getName() {
        return this.name;
    }

    /**
     * adds characters (does nothing here)
     * @param data text
     * @param start start position
     * @param length length of the text
     */
    protected void addCharacters(char data[], int start, int length) {
        // ignore
    }

    /**
     * generates the area or areas for this formatting object
     * and adds these to the area. This method should always be
     * overridden by all sub classes
     *
     * @param area
     */
    public Status layout(Area area) throws FOPException {
        // should always be overridden
        return new Status(Status.OK);
    }

    /**
     *
     */
    protected void start() {
        // do nothing by default
    }

    /**
     *
     */
    protected void end() {
        // do nothing by default
    }

    protected void addChild(FONode child) {
    }

    public FONode getParent() {
        return this.parent;
    }

    /**
     * Return an iterator over all the children of this FObj.
     * @return A ListIterator.
     */
    public ListIterator getChildren() {
	return null;
    }

    /**
     * Return an iterator over the object's children starting
     * at the pased node.
     * @param childNode First node in the iterator
     * @return A ListIterator or null if childNode isn't a child of
     * this FObj.
     */
    public ListIterator getChildren(FONode childNode) {
	return null;
    }

    public CharIterator charIterator() {
	return new OneCharIterator(CharUtilities.CODE_EOT);
    }

}