KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > lobobrowser > html > domimpl > HTMLStyleElementImpl


1 /*
2     GNU LESSER GENERAL PUBLIC LICENSE
3     Copyright (C) 2006 The Lobo Project
4
5     This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Lesser General Public
7     License as published by the Free Software Foundation; either
8     version 2.1 of the License, or (at your option) any later version.
9
10     This library is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13     Lesser General Public License for more details.
14
15     You should have received a copy of the GNU Lesser General Public
16     License along with this library; if not, write to the Free Software
17     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19     Contact info: xamjadmin@users.sourceforge.net
20 */

21 /*
22  * Created on Nov 27, 2005
23  */

24 package org.lobobrowser.html.domimpl;
25
26 import org.lobobrowser.html.style.CSSUtilities;
27 import org.w3c.css.sac.InputSource;
28 import org.w3c.dom.UserDataHandler JavaDoc;
29 import org.w3c.dom.css.CSSStyleSheet;
30 import org.w3c.dom.html2.HTMLStyleElement;
31 import com.steadystate.css.parser.CSSOMParser;
32
33 public class HTMLStyleElementImpl extends HTMLElementImpl implements
34         HTMLStyleElement {
35     public HTMLStyleElementImpl() {
36         super("STYLE", true);
37     }
38
39     public HTMLStyleElementImpl(String JavaDoc name) {
40         super(name, true);
41     }
42     
43     private boolean disabled;
44     public boolean getDisabled() {
45         return this.disabled;
46     }
47     
48     public void setDisabled(boolean disabled) {
49         this.disabled = disabled;
50     }
51     
52     public String JavaDoc getMedia() {
53         return this.getAttribute("media");
54     }
55     
56     public void setMedia(String JavaDoc media) {
57         this.setAttribute("media", media);
58     }
59     
60     public String JavaDoc getType() {
61         return this.getAttribute("type");
62     }
63     
64     public void setType(String JavaDoc type) {
65         this.setAttribute("type", type);
66     }
67     
68     public Object JavaDoc setUserData(String JavaDoc key, Object JavaDoc data, UserDataHandler JavaDoc handler) {
69         if(org.lobobrowser.html.parser.HtmlParser.MODIFYING_KEY.equals(key) && data != Boolean.TRUE) {
70             this.processStyle();
71         }
72         return super.setUserData(key, data, handler);
73     }
74
75     protected void processStyle() {
76         if(CSSUtilities.matchesMedia(this.getMedia(), this.getHtmlRendererContext())) {
77             String JavaDoc text = this.getRawInnerText(true);
78             if(text != null && !"".equals(text)) {
79                 String JavaDoc processedText = CSSUtilities.preProcessCss(text);
80                 HTMLDocumentImpl doc = (HTMLDocumentImpl) this.getOwnerDocument();
81                 CSSOMParser parser = new CSSOMParser();
82                 InputSource is = CSSUtilities.getCssInputSourceForStyleSheet(processedText);
83                 try {
84                     CSSStyleSheet sheet = parser.parseStyleSheet(is);
85                     doc.addStyleSheet(sheet);
86                 } catch(Throwable JavaDoc err) {
87                     this.warn("Unable to parse style sheet", err);
88                 }
89             }
90         }
91     }
92 }
93
Popular Tags