/* This file belongs to the Servoy development and deployment environment, Copyright (C) 1997-2011 Servoy BV This program is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program; if not, see http://www.gnu.org/licenses or write to the Free Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 */ package com.servoy.j2db.util; import java.io.IOException; import java.io.Reader; import java.io.StringReader; import org.xhtmlrenderer.css.extend.StylesheetFactory; import org.xhtmlrenderer.css.parser.CSSErrorHandler; import org.xhtmlrenderer.css.parser.CSSParser; import org.xhtmlrenderer.css.sheet.Ruleset; import org.xhtmlrenderer.css.sheet.Stylesheet; import org.xhtmlrenderer.css.sheet.StylesheetInfo; public class ServoyStylesheetFactor implements StylesheetFactory { private final CSSParser parser; private final CSSErrorHandler errorHandler; public ServoyStylesheetFactor(CSSErrorHandler errorHandler) { this.errorHandler = errorHandler; parser = new CSSParser(errorHandler); } /* * (non-Javadoc) * * @see org.xhtmlrenderer.css.extend.StylesheetFactory#parse(java.io.Reader, org.xhtmlrenderer.css.sheet.StylesheetInfo) */ public Stylesheet parse(Reader reader, StylesheetInfo info) { try { return parser.parseStylesheet(info.getUri(), info.getOrigin(), reader); } catch (IOException e) { errorHandler.error(info.getUri(), e.getMessage()); } return null; } /* * (non-Javadoc) * * @see org.xhtmlrenderer.css.extend.StylesheetFactory#parseStyleDeclaration(int, java.lang.String) */ public Ruleset parseStyleDeclaration(int author, String style) { return parser.parseDeclaration(author, style); } /* * (non-Javadoc) * * @see org.xhtmlrenderer.css.extend.StylesheetFactory#getStylesheet(org.xhtmlrenderer.css.sheet.StylesheetInfo) */ public Stylesheet getStylesheet(StylesheetInfo si) { return parse(new StringReader(si.getContent()), si); } }