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.ui.ItsNatButtonUI;
017: import javax.swing.ButtonModel;
018: import javax.swing.event.ChangeEvent;
019: import org.itsnat.core.NameValue;
020: import org.itsnat.core.ItsNatException;
021: import org.itsnat.impl.comp.ItsNatButtonBasedSharedImpl;
022: import org.itsnat.impl.comp.ItsNatButtonInternal;
023: import org.w3c.dom.events.Event;
024: import org.w3c.dom.html.HTMLInputElement;
025:
026: /**
027: *
028: * @author jmarranz
029: */
030: public abstract class ItsNatHTMLInputButtonBaseImpl extends
031: ItsNatHTMLInputImpl implements ItsNatButtonInternal {
032:
033: /**
034: * Creates a new instance of ItsNatHTMLInputButtonBaseImpl
035: */
036: public ItsNatHTMLInputButtonBaseImpl(HTMLInputElement element,
037: NameValue[] artifacts,
038: ItsNatHTMLComponentManagerImpl componentMgr) {
039: super (element, artifacts, componentMgr);
040: }
041:
042: public boolean hasDefaultBehaviorChangeEvent() {
043: return false; // En el caso de los toggles es el click y no el change el que hace el cambio de estado
044: }
045:
046: public void enableEventListeners() {
047: super .enableEventListeners();
048:
049: // Es un botón
050:
051: enableEventListener("click"); // Por defecto se procesa, pues es lo importante
052: }
053:
054: public ItsNatButtonUI getItsNatButtonUI() {
055: return (ItsNatButtonUI) compUI;
056: }
057:
058: public void bindDataModel() {
059: ItsNatButtonBasedSharedImpl.bindDataModel(this );
060: }
061:
062: public void unbindDataModel() {
063: ItsNatButtonBasedSharedImpl.unbindDataModel(this );
064: }
065:
066: public void syncUIWithDataModel() {
067: ItsNatButtonBasedSharedImpl.syncUIWithDataModel(this );
068: }
069:
070: public void stateChanged(ChangeEvent e) {
071: ItsNatButtonBasedSharedImpl.stateChanged(this , e);
072: }
073:
074: public ButtonModel getButtonModel() {
075: return (ButtonModel) dataModel;
076: }
077:
078: public void setButtonModel(ButtonModel dataModel) {
079: setDataModel(dataModel);
080: }
081:
082: public boolean isEnabled() {
083: // Está propiedad está en el modelo no sólo en el DOM
084: // el modelo modifica el DOM via listeners pues es el modelo el que manda
085: return getButtonModel().isEnabled();
086: }
087:
088: public void setEnabled(boolean b) {
089: // Está propiedad está en el modelo no sólo en el DOM
090: // el modelo modificará el DOM via listeners pues es el modelo el que manda
091: getButtonModel().setEnabled(b);
092: }
093:
094: public void processDOMEvent(Event evt) {
095: // Evento click al menos
096: // Redefinir para cada tipo de botón si es necesario
097:
098: if (!ItsNatHTMLFormCompButtonSharedImpl.handleEvent(
099: getButtonModel(), evt, this ))
100: return;
101:
102: super .processDOMEvent(evt);
103: }
104:
105: public void setNewValueOnChange(String newValue, Event evt) {
106: throw new ItsNatException("INTERNAL ERROR"); // Nunca es llamado, no hay comportamiento por defecto en el caso "change" y botones
107: /*
108: boolean wasDisabled = disableSendCodeToRequesterIfServerUpdating();
109:
110: try
111: {
112: // Sincroniza el atributo value cuando se cambia desde JavaScript
113: setDOMValueProperty(newValue);
114: }
115: finally
116: {
117: if (wasDisabled) enableSendCodeToRequester();
118: }
119: */
120: }
121:
122: public void setNewValueOnKeyUp(String newValue, Event evt) {
123: // No tiene sentido en botones pues si se pulsa ENTER encima de un botón
124: // de todas formas se genera un click
125: }
126:
127: /*
128: public void setDOMValueProperty(String newValue)
129: {
130: HTMLInputElement elem = getHTMLInputElement();
131: elem.setValue(newValue);
132: }
133: */
134: /*
135: public String getDOMValueProperty()
136: {
137: HTMLInputElement elem = getHTMLInputElement();
138: return elem.getValue();
139: }
140: */
141: }
|