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.comp.html;
015:
016: import org.itsnat.comp.html.ItsNatHTMLTextArea;
017: import org.itsnat.comp.ui.ItsNatComponentUI;
018: import org.itsnat.comp.ui.ItsNatTextAreaUI;
019: import org.itsnat.comp.ui.ItsNatTextComponentUI;
020: import org.itsnat.impl.comp.ItsNatTextBasedSharedImpl;
021: import org.itsnat.impl.comp.html.ui.ItsNatHTMLTextAreaUIImpl;
022: import javax.swing.event.DocumentEvent;
023: import javax.swing.text.Document;
024: import javax.swing.text.PlainDocument;
025: import org.itsnat.core.NameValue;
026: import org.itsnat.impl.comp.ItsNatTextComponentInternal;
027: import org.itsnat.impl.core.html.ItsNatHTMLDocumentImpl;
028: import org.w3c.dom.Node;
029: import org.w3c.dom.events.Event;
030: import org.w3c.dom.html.HTMLFormElement;
031: import org.w3c.dom.html.HTMLTextAreaElement;
032:
033: /**
034: *
035: * @author jmarranz
036: */
037: public class ItsNatHTMLTextAreaImpl extends
038: ItsNatHTMLFormCompValueBasedImpl implements ItsNatHTMLTextArea,
039: ItsNatTextComponentInternal {
040:
041: /**
042: * Creates a new instance of ItsNatHTMLTextAreaImpl
043: */
044: public ItsNatHTMLTextAreaImpl(HTMLTextAreaElement element,
045: NameValue[] artifacts,
046: ItsNatHTMLComponentManagerImpl componentMgr) {
047: super (element, artifacts, componentMgr);
048:
049: init();
050: }
051:
052: public boolean hasDefaultBehaviorChangeEvent() {
053: return true;
054: }
055:
056: public HTMLFormElement getHTMLFormElement() {
057: return getHTMLTextAreaElement().getForm();
058: }
059:
060: public HTMLTextAreaElement getHTMLTextAreaElement() {
061: return (HTMLTextAreaElement) getHTMLElement();
062: }
063:
064: public void setNewValueOnChange(String newValue, Event evt) {
065: // Al final se hará un setValue al HTMLTextAreaElement pero a través del modelo de datos
066: ItsNatTextBasedSharedImpl.incrementalChange(this , newValue);
067: }
068:
069: public void setNewValueOnKeyUp(String newValue, Event evt) {
070: ItsNatTextBasedSharedImpl.incrementalChange(this , newValue);
071: }
072:
073: public String getText() {
074: return ItsNatTextBasedSharedImpl.getText(this );
075: }
076:
077: public void setText(String t) {
078: ItsNatTextBasedSharedImpl.setText(this , t);
079: }
080:
081: public Document getDocument() {
082: // Ojo es el javax.swing.text.Document del Swing
083: return (Document) dataModel;
084: }
085:
086: public void setDocument(Document dataModel) {
087: setDataModel(dataModel);
088: }
089:
090: public ItsNatTextComponentUI getItsNatTextComponentUI() {
091: return (ItsNatTextComponentUI) compUI;
092: }
093:
094: public ItsNatTextAreaUI getItsNatTextAreaUI() {
095: return (ItsNatTextAreaUI) compUI;
096: }
097:
098: public void bindDataModel() {
099: ItsNatTextBasedSharedImpl.bindDataModel(this );
100: }
101:
102: public void unbindDataModel() {
103: ItsNatTextBasedSharedImpl.unbindDataModel(this );
104: }
105:
106: public void syncUIWithDataModel() {
107: ItsNatTextBasedSharedImpl.syncUIWithDataModel(this );
108: }
109:
110: public void insertUpdate(DocumentEvent e) {
111: ItsNatTextBasedSharedImpl.insertUpdate(this , e);
112: }
113:
114: public void removeUpdate(DocumentEvent e) {
115: ItsNatTextBasedSharedImpl.removeUpdate(this , e);
116: }
117:
118: public void changedUpdate(DocumentEvent e) {
119: ItsNatTextBasedSharedImpl.changedUpdate(this , e);
120: }
121:
122: public ItsNatTextAreaUI createDefaultItsNatHTMLTextAreaUI() {
123: return new ItsNatHTMLTextAreaUIImpl(this );
124: }
125:
126: public ItsNatComponentUI createDefaultItsNatComponentUI() {
127: return createDefaultItsNatHTMLTextAreaUI();
128: }
129:
130: public void blur() {
131: ItsNatHTMLDocumentImpl itsNatDoc = getItsNatHTMLDocumentImpl();
132: itsNatDoc.getJSScriptUtilImpl().callNodeMethod(
133: getHTMLElement(), "blur", new Object[0], true);
134: }
135:
136: public void focus() {
137: ItsNatHTMLDocumentImpl itsNatDoc = getItsNatHTMLDocumentImpl();
138: itsNatDoc.getJSScriptUtilImpl().callNodeMethod(
139: getHTMLElement(), "focus", new Object[0], true);
140: }
141:
142: public void select() {
143: ItsNatHTMLDocumentImpl itsNatDoc = getItsNatHTMLDocumentImpl();
144: itsNatDoc.getJSScriptUtilImpl().callNodeMethod(
145: getHTMLElement(), "select", new Object[0], true);
146: }
147:
148: public Object createDefaultModelInternal() {
149: return createDefaultDocument();
150: }
151:
152: public Document createDefaultDocument() {
153: return new PlainDocument();
154: }
155:
156: public void appendString(String str) {
157: ItsNatTextBasedSharedImpl.appendString(this , str);
158: }
159:
160: public void replaceString(String str, int start, int end) {
161: ItsNatTextBasedSharedImpl.replaceString(this , str, start, end);
162: }
163:
164: public void insertString(String str, int pos) {
165: ItsNatTextBasedSharedImpl.insertString(this , str, pos);
166: }
167:
168: public String getText(int offs, int len) {
169: return ItsNatTextBasedSharedImpl.getText(this , offs, len);
170: }
171:
172: public Node createDefaultNode() {
173: HTMLTextAreaElement elem = (HTMLTextAreaElement) getItsNatDocument()
174: .getDocument().createElement("textarea");
175: elem.setCols(10); // atributo obligatorio
176: elem.setRows(5); // atributo obligatorio
177: return elem;
178: }
179:
180: }
|