001: /*
002: ItsNat Java Web Application Framework
003: Copyright (C) 2007 Innowhere Software Services S.L., Spanish Company
004: Author: Jose Maria Arranz Santamaria
005:
006: This program is free software: you can redistribute it and/or modify
007: it under the terms of the GNU Affero General Public License as published by
008: the Free Software Foundation, either version 3 of the License, or
009: (at your option) any later version. See the GNU Affero General Public
010: License for more details. See the copy of the GNU Affero General Public License
011: included in this program. If not, see <http://www.gnu.org/licenses/>.
012: */
013:
014: package org.itsnat.impl.core.dom;
015:
016: import org.itsnat.core.ItsNatException;
017: import org.itsnat.impl.core.ItsNatDocumentImpl;
018: import org.itsnat.impl.core.css.CSS2PropertiesImpl;
019: import org.itsnat.impl.core.css.CSSStyleDeclarationImpl;
020: import org.itsnat.impl.core.domutil.ItsNatDOMUtilInternal;
021: import org.w3c.dom.Attr;
022: import org.w3c.dom.DOMException;
023: import org.w3c.dom.Element;
024: import org.w3c.dom.NodeList;
025: import org.w3c.dom.TypeInfo;
026: import org.w3c.dom.css.CSSStyleDeclaration;
027: import org.w3c.dom.css.ElementCSSInlineStyle;
028:
029: /**
030: *
031: * @author jmarranz
032: */
033: public class ItsNatElementImpl extends ItsNatNodeImpl implements
034: Element, ElementCSSInlineStyle {
035: protected CSSStyleDeclarationImpl styleDec; // No sólo los HTMLElement tienen el atributo style, también los elementos SVG
036:
037: /**
038: * Creates a new instance of ItsNatElementImpl
039: */
040: protected ItsNatElementImpl(Element node,
041: ItsNatDocumentImpl itsNatDoc) {
042: super (node, itsNatDoc);
043: }
044:
045: public static ItsNatElementImpl newItsNatElement(Element node,
046: ItsNatDocumentImpl itsNatDoc) {
047: return new ItsNatElementImpl(node, itsNatDoc);
048: }
049:
050: public Element getOriginalElement() {
051: return (Element) getNode();
052: }
053:
054: public CSSStyleDeclaration getStyle() {
055: // Es muy conveniente memorizar este objeto porque el parseo es una tarea
056: // lenta.
057: if (styleDec == null)
058: this .styleDec = new CSS2PropertiesImpl(this ); // Pasamos el wrapper para evitar tener una referencia fuerte al elemento original
059: return styleDec;
060: }
061:
062: public String getTagName() {
063: return getOriginalElement().getTagName();
064: }
065:
066: public String getAttribute(String name) {
067: return getOriginalElement().getAttribute(name);
068: }
069:
070: public void setAttribute(String name, String value)
071: throws DOMException {
072: ItsNatDOMUtilInternal.setAttribute(getOriginalElement(), name,
073: value);
074: }
075:
076: public void removeAttribute(String name) throws DOMException {
077: getOriginalElement().removeAttribute(name);
078: }
079:
080: public Attr getAttributeNode(String name) {
081: return getOriginalElement().getAttributeNode(name);
082: }
083:
084: public Attr setAttributeNode(Attr newAttr) throws DOMException {
085: return getOriginalElement().setAttributeNode(newAttr);
086: }
087:
088: public Attr removeAttributeNode(Attr oldAttr) throws DOMException {
089: return getOriginalElement().removeAttributeNode(oldAttr);
090: }
091:
092: public NodeList getElementsByTagName(String name) {
093: return getOriginalElement().getElementsByTagName(name);
094: }
095:
096: public String getAttributeNS(String namespaceURI, String localName) {
097: return getOriginalElement().getAttributeNS(namespaceURI,
098: localName);
099: }
100:
101: public void setAttributeNS(String namespaceURI,
102: String qualifiedName, String value) throws DOMException {
103: getOriginalElement().setAttributeNS(namespaceURI,
104: qualifiedName, value);
105: }
106:
107: public void removeAttributeNS(String namespaceURI, String localName)
108: throws DOMException {
109: getOriginalElement().removeAttributeNS(namespaceURI, localName);
110: }
111:
112: public Attr getAttributeNodeNS(String namespaceURI, String localName) {
113: return getOriginalElement().getAttributeNodeNS(namespaceURI,
114: localName);
115: }
116:
117: public Attr setAttributeNodeNS(Attr newAttr) throws DOMException {
118: return getOriginalElement().setAttributeNodeNS(newAttr);
119: }
120:
121: public NodeList getElementsByTagNameNS(String namespaceURI,
122: String localName) {
123: return getOriginalElement().getElementsByTagNameNS(
124: namespaceURI, localName);
125: }
126:
127: public boolean hasAttribute(String name) {
128: return getOriginalElement().hasAttribute(name);
129: }
130:
131: public boolean hasAttributeNS(String namespaceURI, String localName) {
132: return getOriginalElement().hasAttributeNS(namespaceURI,
133: localName);
134: }
135:
136: public TypeInfo getSchemaTypeInfo() {
137: // Para que compile con el JDK 1.5 (Node tiene métodos del DOM 3)
138: throw new ItsNatException("Not supported");
139: }
140:
141: public void setIdAttribute(String name, boolean isId)
142: throws DOMException {
143: // Para que compile con el JDK 1.5 (Node tiene métodos del DOM 3)
144: throw new ItsNatException("Not supported");
145: }
146:
147: public void setIdAttributeNS(String namespaceURI, String localName,
148: boolean isId) throws DOMException {
149: // Para que compile con el JDK 1.5 (Node tiene métodos del DOM 3)
150: throw new ItsNatException("Not supported");
151: }
152:
153: public void setIdAttributeNode(Attr idAttr, boolean isId)
154: throws DOMException {
155: // Para que compile con el JDK 1.5 (Node tiene métodos del DOM 3)
156: throw new ItsNatException("Not supported");
157: }
158: }
|