001: /* ========================================================================
002: * JCommon : a free general purpose class library for the Java(tm) platform
003: * ========================================================================
004: *
005: * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
006: *
007: * Project Info: http://www.jfree.org/jcommon/index.html
008: *
009: * This library is free software; you can redistribute it and/or modify it
010: * under the terms of the GNU Lesser General Public License as published by
011: * the Free Software Foundation; either version 2.1 of the License, or
012: * (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful, but
015: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
016: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
017: * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
022: * USA.
023: *
024: * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
025: * in the United States and other countries.]
026: *
027: * ------------------------------
028: * RenderingHintsReadHandler.java
029: * ------------------------------
030: * (C)opyright 2003, 2004, by Thomas Morgner and Contributors.
031: *
032: * Original Author: Thomas Morgner;
033: * Contributor(s): David Gilbert (for Object Refinery Limited);
034: *
035: * $Id: RenderingHintsReadHandler.java,v 1.3 2005/10/18 13:33:32 mungady Exp $
036: *
037: * Changes
038: * -------
039: * 03-Dec-2003 : Initial version
040: * 11-Feb-2004 : Added missing Javadocs (DG);
041: *
042: */
043:
044: package org.jfree.xml.parser.coretypes;
045:
046: import java.awt.RenderingHints;
047: import java.util.ArrayList;
048:
049: import org.jfree.xml.parser.AbstractXmlReadHandler;
050: import org.jfree.xml.parser.XmlReadHandler;
051: import org.jfree.xml.parser.XmlReaderException;
052: import org.xml.sax.Attributes;
053: import org.xml.sax.SAXException;
054:
055: /**
056: * A read handler that can parse the XML element for a {@link RenderingHints} collection.
057: */
058: public class RenderingHintsReadHandler extends AbstractXmlReadHandler {
059:
060: /** The subhandlers. */
061: private ArrayList handlers;
062:
063: /** The rendering hints under construction. */
064: private RenderingHints renderingHints;
065:
066: /**
067: * Creates a new read handler.
068: */
069: public RenderingHintsReadHandler() {
070: super ();
071: }
072:
073: /**
074: * Starts parsing.
075: *
076: * @param attrs the attributes.
077: *
078: * @throws SAXException never.
079: */
080: protected void startParsing(final Attributes attrs)
081: throws SAXException {
082: this .handlers = new ArrayList();
083: }
084:
085: /**
086: * Returns the handler for a child element.
087: *
088: * @param tagName the tag name.
089: * @param atts the attributes.
090: *
091: * @return the handler.
092: *
093: * @throws SAXException if there is a parsing error.
094: * @throws XmlReaderException if there is a reader error.
095: */
096: protected XmlReadHandler getHandlerForChild(final String tagName,
097: final Attributes atts) throws XmlReaderException,
098: SAXException {
099:
100: if (!tagName.equals("entry")) {
101: throw new SAXException("Expected 'entry' tag.");
102: }
103:
104: final XmlReadHandler handler = new RenderingHintValueReadHandler();
105: this .handlers.add(handler);
106: return handler;
107: }
108:
109: /**
110: * Done parsing.
111: *
112: * @throws SAXException if there is a parsing error.
113: * @throws XmlReaderException if there is a reader error.
114: */
115: protected void doneParsing() throws SAXException,
116: XmlReaderException {
117: this .renderingHints = new RenderingHints(null);
118:
119: for (int i = 0; i < this .handlers.size(); i++) {
120: final RenderingHintValueReadHandler rh = (RenderingHintValueReadHandler) this .handlers
121: .get(i);
122: this .renderingHints.put(rh.getKey(), rh.getValue());
123: }
124: }
125:
126: /**
127: * Returns the object for this element.
128: *
129: * @return the object.
130: *
131: * @throws XmlReaderException if there is a parsing error.
132: */
133: public Object getObject() throws XmlReaderException {
134: return this.renderingHints;
135: }
136: }
|