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.js;
015:
016: import org.itsnat.core.script.ScriptExpr;
017: import org.itsnat.core.script.ScriptUtil;
018: import org.itsnat.impl.core.ItsNatDocumentImpl;
019: import org.itsnat.impl.core.js.domrender.node.JSNodeRenderImpl;
020: import org.w3c.dom.Node;
021:
022: /**
023: *
024: * @author jmarranz
025: */
026: public class JScriptUtilImpl implements ScriptUtil {
027: protected ItsNatDocumentImpl itsNatDoc;
028:
029: /**
030: * Creates a new instance of ScriptUtil
031: */
032: public JScriptUtilImpl(ItsNatDocumentImpl itsNatDoc) {
033: this .itsNatDoc = itsNatDoc;
034: }
035:
036: public ItsNatDocumentImpl getItsNatDocumentImpl() {
037: return itsNatDoc;
038: }
039:
040: public String getNodeReference(Node node) {
041: return JSNodeRenderImpl.getNodeFromStringPath(node, itsNatDoc);
042: }
043:
044: public String getTransportableStringLiteral(String text) {
045: return JSNodeRenderImpl.getTransportableStringLiteral(text);
046: }
047:
048: public String getTransportableCharLiteral(char c) {
049: return JSNodeRenderImpl.getTransportableCharLiteral(c);
050: }
051:
052: public String encodeURIComponent(String text) {
053: return JSNodeRenderImpl.encodeURIComponent(text);
054: }
055:
056: public String encodeURIComponent(char c) {
057: return JSNodeRenderImpl.encodeURIComponent(c);
058: }
059:
060: public String getCallMethodCode(Object obj, String methodName,
061: Object[] params) {
062: return JSNodeRenderImpl.getCallMethodCode(obj, methodName,
063: params, itsNatDoc);
064: }
065:
066: public String getCallMethodCode(Object obj, String methodName,
067: Object[] params, boolean endSentence) {
068: String code = getCallMethodCode(obj, methodName, params);
069: if (endSentence)
070: code += ";";
071: return code;
072: }
073:
074: public String getSetPropertyCode(Object obj, String propertyName,
075: Object value) {
076: return JSNodeRenderImpl.getSetPropertyCode(obj, propertyName,
077: value, itsNatDoc);
078: }
079:
080: public String getSetPropertyCode(Object obj, String propertyName,
081: Object value, boolean endSentence) {
082: String code = getSetPropertyCode(obj, propertyName, value);
083: if (endSentence)
084: code += ";";
085: return code;
086: }
087:
088: public String getGetPropertyCode(Object obj, String propertyName) {
089: return JSNodeRenderImpl.getGetPropertyCode(obj, propertyName,
090: itsNatDoc);
091: }
092:
093: public String getGetPropertyCode(Object obj, String propertyName,
094: boolean endSentence) {
095: String code = getGetPropertyCode(obj, propertyName);
096: if (endSentence)
097: code += ";";
098: return code;
099: }
100:
101: public String toScript(Object value) {
102: return JSNodeRenderImpl.javaToJS(value, itsNatDoc);
103: }
104:
105: public ScriptExpr createScriptExpr(Object value) {
106: return new JScriptExprImpl(value, this );
107: }
108:
109: public ScriptReference createScriptReference(Object value) {
110: // POR AHORA NO ES PUBLICO.
111: // Quizás más adelante cuando se haga un modelo completo de metaprogramación
112: // JavaScript en java
113: return new JSReferenceImpl(value, itsNatDoc);
114: }
115:
116: public void callNodeMethod(Node node, String methodName,
117: Object[] params, boolean endSentence) {
118: // NO ES PUBLICO.
119:
120: String code = getCallMethodCode(node, methodName, params,
121: endSentence);
122: getItsNatDocumentImpl().addCodeToSend(code);
123: }
124: }
|