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.ui;
015:
016: import org.itsnat.comp.ItsNatTextArea;
017: import org.itsnat.comp.html.ItsNatHTMLTextArea;
018: import org.itsnat.comp.ui.ItsNatTextAreaUI;
019: import org.itsnat.core.domutil.ItsNatDOMUtil;
020: import org.itsnat.impl.comp.html.ItsNatHTMLTextAreaImpl;
021: import org.itsnat.impl.core.domutil.ItsNatDOMUtilInternal;
022: import org.w3c.dom.html.HTMLTextAreaElement;
023:
024: /**
025: *
026: * @author jmarranz
027: */
028: public class ItsNatHTMLTextAreaUIImpl extends ItsNatHTMLTextBasedUIImpl
029: implements ItsNatTextAreaUI {
030: /**
031: * Creates a new instance of ItsNatHTMLTextAreaUIImpl
032: */
033: public ItsNatHTMLTextAreaUIImpl(ItsNatHTMLTextAreaImpl parentComp) {
034: super (parentComp);
035: }
036:
037: public ItsNatHTMLTextArea getItsNatHTMLTextArea() {
038: return (ItsNatHTMLTextArea) parentComp;
039: }
040:
041: public ItsNatTextArea getItsNatTextArea() {
042: return (ItsNatTextArea) parentComp;
043: }
044:
045: public HTMLTextAreaElement getHTMLTextAreaElement() {
046: return getItsNatHTMLTextArea().getHTMLTextAreaElement();
047: }
048:
049: public String getDOMValueProperty() {
050: HTMLTextAreaElement elem = getHTMLTextAreaElement();
051: return elem.getValue();
052: }
053:
054: public void setDOMValueProperty(String str) {
055: // No es necesario considerar la desactivación de los mutation
056: // events porque este método es llamado por código de la clase
057: // base que ya controla eso.
058: HTMLTextAreaElement elem = getHTMLTextAreaElement();
059: elem.setValue(str);
060: }
061:
062: public void setText(String str) {
063: super .setText(str);
064:
065: if (getItsNatHTMLDocumentImpl().isLoading()) {
066: HTMLTextAreaElement elem = getHTMLTextAreaElement();
067: // Cuando se está cargando el texto inicial debe ir además
068: // como nodo hijo de texto del <textarea>, más adelante
069: // cambiando la propiedad "value" es suficiente.
070: // De esta manera el reset que se haga a nivel de cliente mostrará este nodo
071: ItsNatDOMUtil.setTextContent(elem, str);
072: }
073: }
074:
075: public boolean isEditable() {
076: HTMLTextAreaElement element = getHTMLTextAreaElement();
077: return element.getReadOnly();
078: }
079:
080: public void setEditable(boolean b) {
081: if (b == isEditable())
082: return; // No hacer nada
083:
084: HTMLTextAreaElement element = getHTMLTextAreaElement();
085: element.setReadOnly(!b);
086: }
087:
088: public int getColumns() {
089: HTMLTextAreaElement element = getHTMLTextAreaElement();
090: return element.getCols();
091: }
092:
093: public void setColumns(int cols) {
094: HTMLTextAreaElement element = getHTMLTextAreaElement();
095: element.setCols(cols);
096: }
097:
098: public int getRows() {
099: HTMLTextAreaElement element = getHTMLTextAreaElement();
100: return element.getRows();
101: }
102:
103: public void setRows(int rows) {
104: HTMLTextAreaElement element = getHTMLTextAreaElement();
105: element.setRows(rows);
106: }
107:
108: public boolean isLineWrap() {
109: // El atributo wrap no es W3C pero está definido en MSIE y FireFox
110: // http://www.htmlcodetutorial.com/forms/_TEXTAREA_WRAP.html
111: HTMLTextAreaElement element = getHTMLTextAreaElement();
112: String res = element.getAttribute("wrap");
113: res = res.toLowerCase();
114: return !res.equals("off");
115: }
116:
117: public void setLineWrap(boolean wrap) {
118: HTMLTextAreaElement element = getHTMLTextAreaElement();
119: if (wrap)
120: element.removeAttribute("wrap"); // Por defecto tanto MSIE como FireFox hace wrap
121: else
122: ItsNatDOMUtilInternal.setAttribute(element, "wrap", "off");
123: }
124:
125: public boolean isEnabled() {
126: HTMLTextAreaElement element = getHTMLTextAreaElement();
127: return !element.getDisabled();
128: }
129:
130: public void setEnabled(boolean b) {
131: HTMLTextAreaElement element = getHTMLTextAreaElement();
132: element.setDisabled(!b);
133: }
134: }
|