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.html;
015:
016: import org.itsnat.comp.html.ItsNatHTMLComponentManager;
017: import org.itsnat.core.html.ItsNatHTMLDocument;
018: import org.itsnat.impl.comp.ItsNatComponentManagerImpl;
019: import org.itsnat.impl.comp.html.ItsNatHTMLComponentManagerImpl;
020: import org.itsnat.impl.core.ItsNatDocumentImpl;
021: import org.itsnat.impl.core.ItsNatSessionImpl;
022: import org.itsnat.impl.core.NodeCache;
023: import org.itsnat.impl.core.listener.CleanListenersMutationEventBeforeAfterListener;
024: import org.itsnat.impl.core.listener.MutationEventListenerImpl;
025: import org.w3c.dom.NodeList;
026: import org.w3c.dom.html.HTMLCollection;
027: import org.w3c.dom.html.HTMLDocument;
028: import org.w3c.dom.html.HTMLElement;
029:
030: /**
031: *
032: * @author jmarranz
033: */
034: public class ItsNatHTMLDocumentImpl extends ItsNatDocumentImpl
035: implements ItsNatHTMLDocument, HTMLDocument {
036:
037: /** Creates a new instance of ItsNatHTMLDocumentImpl */
038: public ItsNatHTMLDocumentImpl(HTMLDocument doc,
039: HTMLDocumentTemplateVersionImpl docLoader,
040: ItsNatSessionImpl parentSession) {
041: super (doc, docLoader, parentSession);
042:
043: // A día de hoy sólo los documentos HTML generan JavaScript necesario para mantener un caché de nodos en el cliente
044: if (getDocumentTemplateVersion().isNodeCacheEnabled())
045: this .nodeCache = new NodeCache(this );
046:
047: if (isAutoCleanEventListeners()) // A día de hoy sólo los documentos HTML tienen eventos
048: {
049: MutationEventListenerImpl mutEventListener = getMutationEventListener();
050: mutEventListener
051: .setCleanListenersMutationEventBeforeAfterListener(new CleanListenersMutationEventBeforeAfterListener(
052: this ));
053: }
054: }
055:
056: public boolean isHTMLorXHTML() {
057: return true;
058: }
059:
060: public void startLoading() {
061: super .startLoading();
062:
063: // A día de hoy sólo los documentos HTML pueden tener JavaScript
064: registerMutationListener();
065:
066: }
067:
068: public ItsNatHTMLComponentManagerImpl getItsNatHTMLComponentManagerImpl() {
069: return (ItsNatHTMLComponentManagerImpl) getItsNatComponentManagerImpl();
070: }
071:
072: public ItsNatHTMLComponentManager getItsNatHTMLComponentManager() {
073: return getItsNatHTMLComponentManagerImpl();
074: }
075:
076: public ItsNatComponentManagerImpl createItsNatComponentManager() {
077: return new ItsNatHTMLComponentManagerImpl(this );
078: }
079:
080: public HTMLDocumentTemplateVersionImpl getHTMLDocumentTemplateVersion() {
081: return (HTMLDocumentTemplateVersionImpl) docTemplate;
082: }
083:
084: public HTMLDocument getHTMLDocument() {
085: return (HTMLDocument) doc;
086: }
087:
088: public HTMLDocument getOriginalHTMLDocument() {
089: return (HTMLDocument) doc;
090: }
091:
092: // HTMLDocument methods
093:
094: public void writeln(String text) {
095: getOriginalHTMLDocument().writeln(text);
096: }
097:
098: public void write(String text) {
099: getOriginalHTMLDocument().write(text);
100: }
101:
102: public void setTitle(String title) {
103: getOriginalHTMLDocument().setTitle(title);
104: }
105:
106: public void setCookie(String cookie) {
107: getOriginalHTMLDocument().setCookie(cookie);
108: }
109:
110: public NodeList getElementsByName(String elementName) {
111: return getOriginalHTMLDocument().getElementsByName(elementName);
112: }
113:
114: public void setBody(HTMLElement body) {
115: getOriginalHTMLDocument().setBody(body);
116: }
117:
118: public void open() {
119: getOriginalHTMLDocument().open();
120: }
121:
122: public void close() {
123: getOriginalHTMLDocument().close();
124: }
125:
126: public HTMLCollection getAnchors() {
127: return getOriginalHTMLDocument().getAnchors();
128: }
129:
130: public HTMLCollection getApplets() {
131: return getOriginalHTMLDocument().getApplets();
132: }
133:
134: public HTMLElement getBody() {
135: return getOriginalHTMLDocument().getBody();
136: }
137:
138: public String getCookie() {
139: return getOriginalHTMLDocument().getCookie();
140: }
141:
142: public String getDomain() {
143: return getOriginalHTMLDocument().getDomain();
144: }
145:
146: public HTMLCollection getForms() {
147: return getOriginalHTMLDocument().getForms();
148: }
149:
150: public HTMLCollection getImages() {
151: return getOriginalHTMLDocument().getImages();
152: }
153:
154: public HTMLCollection getLinks() {
155: return getOriginalHTMLDocument().getLinks();
156: }
157:
158: public String getReferrer() {
159: return getOriginalHTMLDocument().getReferrer();
160: }
161:
162: public String getTitle() {
163: return getOriginalHTMLDocument().getTitle();
164: }
165:
166: public String getURL() {
167: return getOriginalHTMLDocument().getURL();
168: }
169: }
|