package příklady;

import rup.česky.tvary.AktivníPlátno;

import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;


/*******************************************************************************
 * Třída Sbl_Třída slouží k ...
 *
 * @author    Rudolf Pecinovský
 * @version   0.00.000,  0.0.2003
 */
public class Klávesnice implements KeyListener
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ METODY TŘÍDY ======================================================

    /***************************************************************************
     * Vypíše základní informace o události předané jako parametr.
     * Čas události je jen jednoduše naormátován, takže nevypisuje
     * místní čas ale tzv. UTC čas, který se může o nějakou hodinu lišit.
     * Zaroveň nejsou tištěny vedoucí nuly u počtu milisekund.
     *
     * @param událost  Text označující ke které ze tří možných událostí došlo.
     * @param ke       Událost, o níž se vypisují informace.
     */
    public static void vypiš( String událost, KeyEvent ke )
    {
        long čas = ke.getWhen();
        System.out.print( událost + ke + "\n       kódKlávesy=" +
            ke.getKeyCode() + ", kódZnaku=" + (int)(ke.getKeyChar()) +
            ", kódPozice=" + ke.getKeyLocation() );
        System.out.printf( ", čas=%02d:%02d:%02d.%03d%n",  
             čas%86400000/3600000, 
             čas%3600000/60000, čas%60000/1000, čas%1000 );
//         System.out.println( "\n, čas=" +
//             //čas/86400000 + "-" + 
//             čas%86400000/3600000 + ":" +
//             čas%3600000/60000 + ":" + čas%60000/1000 + "," + čas%1000 );
    }



//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Implicitní konstruktor třídy Třída
     */
    public Klávesnice()
    {
        //Instance se sama přihlásí jako posluchač klávesnice
        AktivníPlátno.getPlátno().přihlašKlávesnici( this );
        System.out.print('\f');
    }



//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== PŘEKRYTÉ METODY IMPLEMENTOVANÝCH ROZHRANÍ =================================
//== PŘEKRYTÉ ABSTRAKTNÍ METODY RODIČOVSKÉ TŘÍDY ===============================
//== PŘEKRYTÉ KONKRÉTNÍ METODY RODIČOVSKÉ TŘÍDY ================================

    public void keyPressed( KeyEvent ke )
    {
        vypiš("STISK: ", ke );
    }


    public void keyReleased( KeyEvent ke )
    {
        vypiš("PUST:  ", ke );
    }


    public void keyTyped( KeyEvent ke )
    {
        vypiš("ZNAK:  ",  ke );
    }


//== NOVĚ ZAVEDENÉ METODY INSTANCÍ =============================================
//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== VNOŘENÉ A VNITŘNÍ TŘÍDY ===================================================
//== TESTY A METODA MAIN =======================================================
}

