Package test.comp.html

Source Code of test.comp.html.TestHTMLForm

/*
* TestSelectComboBoxListener.java
*
* Created on 26 de octubre de 2006, 16:59
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package test.comp.html;

import org.itsnat.comp.ItsNatComponentManager;
import org.itsnat.core.html.ItsNatHTMLDocument;
import org.itsnat.comp.ItsNatHTMLForm;
import org.itsnat.core.CommMode;
import org.itsnat.core.event.ItsNatDOMStdEvent;
import org.w3c.dom.Document;
import org.w3c.dom.events.Event;
import org.w3c.dom.events.EventListener;
import org.w3c.dom.html.HTMLFormElement;
import test.shared.TestBaseHTMLDocument;

/**
*
* @author jmarranz
*/
public class TestHTMLForm extends TestBaseHTMLDocument implements EventListener
{
    /**
     * Creates a new instance of TestSelectComboBoxListener
     */
    public TestHTMLForm(ItsNatHTMLDocument itsNatDoc)
    {
        super(itsNatDoc);

        initForm();
    }

    public void initForm()
    {
        Document doc = itsNatDoc.getDocument();
        HTMLFormElement formElem = (HTMLFormElement)doc.getElementById("formId");
        ItsNatComponentManager componentMgr = itsNatDoc.getItsNatComponentManager();
        ItsNatHTMLForm form = (ItsNatHTMLForm)componentMgr.findItsNatComponent(formElem);

        form.setEventListenerParams("submit",false,CommMode.XHR_SYNC,null,null,-1); // Es necesario que sea s�ncrono pues sino no funciona la llamada preventDefault()
        form.setEventListenerParams("reset",false,CommMode.XHR_SYNC,null,null,-1); // Es necesario que sea s�ncrono pues sino no funciona la llamada preventDefault()

        form.addEventListener("submit",this);
        form.addEventListener("reset",this);
    }

    public void handleEvent(Event evt)
    {
        if (evt.getTarget() instanceof Document)
        {
            // Es el caso del reset al formulario de test que hacemos con JavaScript en el onload (ej. myform.reset())
            // para evitar el llenado autom�tico que hace el Firefox
            // ante un reload con los datos de la p�gina anterior,
            // que hace que tras la carga el formulario no contenga los mismos datos que hay en el servidor.
            // http://weblogs.mozillazine.org/gerv/archives/2006/10/firefox_reload_behaviour.html

            // Este problema no existe con MSIE 6
            // La propiedad target representa el nodo que "dispar�" el evento, al parece Firefox
            // considera que es el Document y no el form (ciertamente no se usa el nodo form)            //

            // Firefox al enviar el evento pone como target el Document
            // con el MSIE no se pasa por aqu�, pues el target es el form
            // por tanto aunque en MSIE 6 se cancele el reset da igual pues en este navegador no hay autollenado
            // Nos interesa en Firefox por tanto que se haga el reset, no cancelamos
            return;
        }

        ItsNatDOMStdEvent itsNatEvent = (ItsNatDOMStdEvent)evt;

        if (itsNatEvent.getCommMode() != CommMode.XHR_SYNC)
            throw new RuntimeException("This browser doesn't support AJAX syncronous");
       

        outText("OK " + evt.getType() + " (canceled) "); // Para que se vea

        evt.preventDefault(); // Cancelamos el env�o del formulario o el reset
    }

}
TOP

Related Classes of test.comp.html.TestHTMLForm

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.