Package org.itsnat.impl.core.listener.domstd

Source Code of org.itsnat.impl.core.listener.domstd.ItsNatDOMStdEventListenerWrapperImpl

/*
  ItsNat Java Web Application Framework
  Copyright (C) 2007-2011 Jose Maria Arranz Santamaria, Spanish citizen

  This software is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as
  published by the Free Software Foundation; either version 3 of
  the License, or (at your option) any later version.
  This software is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  Lesser General Public License for more details. You should have received
  a copy of the GNU Lesser General Public License along with this program.
  If not, see <http://www.gnu.org/licenses/>.
*/

package org.itsnat.impl.core.listener.domstd;

import org.itsnat.core.CommMode;
import org.itsnat.core.event.ParamTransport;
import org.itsnat.impl.core.doc.ItsNatStfulDocumentImpl;
import org.itsnat.impl.core.servlet.ItsNatServletResponseImpl;
import org.itsnat.impl.core.browser.Browser;
import org.itsnat.impl.core.clientdoc.ClientDocumentStfulImpl;
import org.itsnat.impl.core.event.DOMStdEventTypeInfo;
import org.itsnat.impl.core.event.client.ClientItsNatDOMEventImpl;
import org.itsnat.impl.core.event.client.ClientItsNatNormalEventImpl;
import org.itsnat.impl.core.event.client.domstd.ClientItsNatDOMStdEventFactory;
import org.itsnat.impl.core.event.client.domstd.ClientItsNatDOMStdEventImpl;
import org.itsnat.impl.core.jsren.dom.event.domstd.JSRenderItsNatDOMStdEventImpl;
import org.itsnat.impl.core.listener.ItsNatDOMEventListenerWrapperImpl;
import org.itsnat.impl.core.req.norm.RequestNormalEventImpl;
import org.w3c.dom.events.EventListener;
import org.w3c.dom.events.EventTarget;

/**
*
* @author jmarranz
*/
public class ItsNatDOMStdEventListenerWrapperImpl extends ItsNatDOMEventListenerWrapperImpl
{
    protected int commMode;
    protected String type;
    protected boolean useCapture;
    protected int typeCode;

    /**
     * Creates a new instance of ItsNatDOMStdEventListenerWrapperImpl
     */
    public ItsNatDOMStdEventListenerWrapperImpl(ItsNatStfulDocumentImpl itsNatDoc,ClientDocumentStfulImpl clientDoc,EventTarget elem,String type,EventListener listener,boolean useCapture,int commMode,ParamTransport[] extraParams,String preSendCode,long eventTimeout,String bindToListener)
    {
        super(itsNatDoc,clientDoc,elem,listener,extraParams,preSendCode,eventTimeout,bindToListener);

        this.commMode = commMode;
        this.type = type;
        this.useCapture = useCapture;

        this.typeCode = DOMStdEventTypeInfo.getEventTypeCode(type)// type no cambia por lo que no hay problema de "sincronizaci�n". Obtenerlo de una vez es mejor pues hay que buscar en una colecci�n
    }

    public int getCommModeDeclared()
    {
        return commMode;
    }

    public String getType()
    {
        return type;
    }

    public int getTypeCode()
    {
        return typeCode;
    }

    public boolean getUseCapture()
    {
        return useCapture;
    }

    @Override
    public void handleEvent(ClientItsNatDOMEventImpl event)
    {
        super.handleEvent(event);

        boolean sync = (event.getCommMode() == CommMode.XHR_SYNC); // S�lo XHR s�ncrono es completamente s�ncrono

        StringBuilder retEvent = new StringBuilder();
        if (sync)
        {
            if (event.getPreventDefault())
            {
                ClientDocumentStfulImpl clientDoc = event.getClientDocumentStful();
                Browser browser = clientDoc.getBrowser();
                JSRenderItsNatDOMStdEventImpl render = JSRenderItsNatDOMStdEventImpl.getJSItsNatDOMStdEventRender((ClientItsNatDOMStdEventImpl)event,browser);
                retEvent.append( render.getPreventDefault("event.getNativeEvent()",clientDoc) );
            }

            if (event.getStopPropagation())
            {
                ClientDocumentStfulImpl clientDoc = event.getClientDocumentStful();
                Browser browser = clientDoc.getBrowser();
                JSRenderItsNatDOMStdEventImpl render = JSRenderItsNatDOMStdEventImpl.getJSItsNatDOMStdEventRender((ClientItsNatDOMStdEventImpl)event,browser);
                retEvent.append( render.getStopPropagation("event.getNativeEvent()",clientDoc) );
            }
        }

        if (retEvent.length() > 0)
        {
            ItsNatServletResponseImpl itsNatResponse = event.getItsNatServletResponseImpl();
            itsNatResponse.addCodeToSend(retEvent.toString()); // Este c�digo no es notificado a los observers
        }
    }

    public ClientItsNatNormalEventImpl createClientItsNatNormalEvent(RequestNormalEventImpl request)
    {
        return ClientItsNatDOMStdEventFactory.createClientItsNatDOMStdEvent(this,request);
    }
}
TOP

Related Classes of org.itsnat.impl.core.listener.domstd.ItsNatDOMStdEventListenerWrapperImpl

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.