Package org.itsnat.impl.core.jsren.dom.event.domstd.w3c

Source Code of org.itsnat.impl.core.jsren.dom.event.domstd.w3c.JSRenderW3CKeyboardEventImpl

/*
  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.jsren.dom.event.domstd.w3c;

import org.itsnat.core.event.ItsNatKeyEvent;
import org.itsnat.impl.core.clientdoc.ClientDocumentStfulImpl;
import org.itsnat.impl.core.event.client.domstd.w3c.W3CKeyboardEventImpl;
import org.w3c.dom.events.Event;

/**
*
* @author jmarranz
*/
public abstract class JSRenderW3CKeyboardEventImpl extends JSRenderW3CKeyEventImpl
{
    /**
     * Creates a new instance of JSWebKitDefaultKeyEventRenderImpl
     */
    public JSRenderW3CKeyboardEventImpl()
    {
    }

    public abstract String toKeyIdentifierByBrowser(int keyCode);

    public String toKeyIdentifier(int keyCode)
    {
        String keyIdentifier = toKeyIdentifierByBrowser(keyCode);
        if (keyIdentifier != null)
            return keyIdentifier;
        // Formato: U+XXXX  donde XXXX es hexadecimal
        keyIdentifier = Integer.toString(keyCode,16);
        if (keyIdentifier.length() < 4)
        {
            int len = keyIdentifier.length();
            for(int i = 1; i <= 4 - len; i++)
                keyIdentifier = '0' + keyIdentifier;
        }
        keyIdentifier = "U+" + keyIdentifier;
        return keyIdentifier;
    }

    public abstract boolean needsAuxiliarCharCode();

    public int renderCharCodeCalcKeyCode(ItsNatKeyEvent keyEvt,String evtVarName,StringBuilder code)
    {
        int keyCode;
        if (keyEvt.getType().equals("keypress"))
        {
            int charCode = keyEvt.getCharCode();
            if (needsAuxiliarCharCode())
                code.append(evtVarName + ".itsnat_charCode = " + charCode + ";\n");

            // Cuando se pulsa la tecla 'a' el keyCode es el c�digo ASCII de la 'A'
            if (Character.isLowerCase((char)charCode))
                keyCode = Character.toUpperCase((char)charCode);
            else
                keyCode = charCode;
        }
        else // keydown y keyup
        {
            keyCode = keyEvt.getKeyCode();
        }

        return keyCode;
    }

    public String getInitEvent(Event evt,String evtVarName,ClientDocumentStfulImpl clientDoc)
    {
        ItsNatKeyEvent keyEvt = (ItsNatKeyEvent)evt;

        StringBuilder code = new StringBuilder();

        String keyIdentifier;
        int keyLocation;
        int keyCode = renderCharCodeCalcKeyCode(keyEvt,evtVarName,code);

        if (keyEvt instanceof W3CKeyboardEventImpl) // Evento del cliente
        {
            W3CKeyboardEventImpl dom3KeyEvt = (W3CKeyboardEventImpl)keyEvt;
            keyIdentifier = dom3KeyEvt.getKeyIdentifier();
            keyLocation = dom3KeyEvt.getKeyLocation();
        }
        else // Del servidor
        {
            keyIdentifier = toKeyIdentifier(keyCode);
            keyLocation = 0; // No hay manera de saberlo.
        }

        return getInitKeyboardEvent(code,keyEvt,evtVarName,keyIdentifier,keyLocation,keyCode,clientDoc);
    }

    public abstract String getInitKeyboardEvent(StringBuilder code,ItsNatKeyEvent keyEvt,String evtVarName,String keyIdentifier,int keyLocation,int keyCode,ClientDocumentStfulImpl clientDoc);

}
TOP

Related Classes of org.itsnat.impl.core.jsren.dom.event.domstd.w3c.JSRenderW3CKeyboardEventImpl

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.