01: /*
02: ItsNat Java Web Application Framework
03: Copyright (C) 2007 Innowhere Software Services S.L., Spanish Company
04: Author: Jose Maria Arranz Santamaria
05:
06: This program is free software: you can redistribute it and/or modify
07: it under the terms of the GNU Affero General Public License as published by
08: the Free Software Foundation, either version 3 of the License, or
09: (at your option) any later version. See the GNU Affero General Public
10: License for more details. See the copy of the GNU Affero General Public License
11: included in this program. If not, see <http://www.gnu.org/licenses/>.
12: */
13:
14: package org.itsnat.impl.comp.html;
15:
16: import org.itsnat.comp.ItsNatButtonLabel;
17: import org.itsnat.core.NameValue;
18: import org.itsnat.core.domutil.ElementRenderer;
19: import org.w3c.dom.Element;
20: import org.w3c.dom.html.HTMLInputElement;
21:
22: /**
23: *
24: * @author jmarranz
25: */
26: public abstract class ItsNatHTMLInputButtonTextImpl extends
27: ItsNatHTMLInputButtonNormalImpl implements ItsNatButtonLabel {
28: protected ElementRenderer renderer;
29: protected Object value;
30:
31: /**
32: * Creates a new instance of ItsNatHTMLInputButtonTextImpl
33: */
34: public ItsNatHTMLInputButtonTextImpl(HTMLInputElement element,
35: NameValue[] artifacts,
36: ItsNatHTMLComponentManagerImpl componentMgr) {
37: super (element, artifacts, componentMgr);
38:
39: this .renderer = HTMLInputButtonTextRenderer.SINGLETON;
40: }
41:
42: public Object getLabelValue() {
43: return value;
44: }
45:
46: public void setLabelValue(Object value) {
47: this .value = value;
48:
49: // Provocará un mutation event, no es necesario lanzar más tipos de eventos
50: // el modelo del botón no considera los cambios en el texto
51: ElementRenderer renderer = getElementRenderer();
52: if (renderer != null)
53: renderer.render(this , value, getHTMLInputElement(), false);
54: }
55:
56: public ElementRenderer getElementRenderer() {
57: return renderer;
58: }
59:
60: public void setElementRenderer(ElementRenderer renderer) {
61: this .renderer = renderer;
62: }
63:
64: static class HTMLInputButtonTextRenderer implements ElementRenderer {
65: public static final HTMLInputButtonTextRenderer SINGLETON = new HTMLInputButtonTextRenderer();
66:
67: public void render(Object userObj, Object value, Element elem,
68: boolean isNew) {
69: HTMLInputElement inputElem = (HTMLInputElement) elem;
70: inputElem.setValue(value.toString());
71: }
72:
73: public void unrender(Object userObj, Element elem) {
74: }
75: }
76: }
|