Package Interfaz

Source Code of Interfaz.Teclado$ThreadLanzar

/*
* Teclado.java
*
* Created on 25 de junio de 2009, 10:55
*/

package Interfaz;

import Funcion.Barrido;
import Manejo.Movimiento;
import Manejo.MovimientoTablero;
import Manejo.Seleccion;
import Manejo.TratamientoDatosRun;

import Tipos.Tablero;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import javax.swing.SpinnerListModel;


public class Teclado extends javax.swing.JDialog {
   
    public static String[] teclas= {"ENTER","Q","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","�",
    "Z","X","C","V","B","N","M","SPACE","flecha derecha","flecha izquierda",
    "flecha arriba","flecha abajo","0","1","2","3","4","5","6","7","8","9"};
    public static String[] disponibles= new String[44];
   
    //public static String tecla="ENTER";
    public static String teclaSel="ENTER";
    public static String teclaBarr="ENTER";
    public static TratamientoDatosRun tdr;
   
   
    public static Tablero t = Tablero.getInstance();
    //List<String> disponibles= new ArrayList<String>();
    static {
         try {
            //System.load("c:\\driverTeclado.dll");
            //System.load("/home/josh/isa/prueba.so");
            System.loadLibrary("driverTeclado");
            System.out.println("Libreria teclado cargada");
         } catch (UnsatisfiedLinkError e) {
            System.out.println("No se puede cargar la libreria dinamica");
        }
    }
   
    public boolean alPulsar=true;
    boolean cambioEstado=true;
    public int tecladoUso;
   
    // uso: 0= manejo; 1= barrer por filas; 2= barrer por columnas; 3= barrer por columnas 2D; 4= no se utiliza
    public Teclado(javax.swing.JFrame parent, boolean modal, int uso){ // quitar el uso de aqui
        super(parent, modal);
        //tecladoUso=uso;
       
       
       
       
    }
    public void finalizar(){
        unRegisterHook();
    }
    public void almacenarLibres(){
        int j=0;
        for (int i=0; i< teclas.length; i++){
            if (teclaLibre(teclas[i])){
                //System.out.println("libre");
                this.disponibles[j]=teclas[i];
                j++;
            }
        }
       
       
    }
    public class ThreadLanzar extends Thread {
        Teclado tthread;
        public ThreadLanzar(String str,Teclado t) {
            super(str);
            tthread=t;
        }
        public void run() {
            System.out.println("Entro a run");
            registerHook();
           
           
        }
       
    }
   
    // <editor-fold defaultstate="collapsed" desc=" C�digo Generado  ">//GEN-BEGIN:initComponents
    private void initComponents() {
        buttonGroupGenerar = new javax.swing.ButtonGroup();
        jPanelSeleccionar = new javax.swing.JPanel();
        jSpinnerTeclas = new javax.swing.JSpinner();
        jButtonAceptar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("");
        setLocationByPlatform(true);
        jPanelSeleccionar.setBorder(javax.swing.BorderFactory.createTitledBorder("Seleccione la tecla"));
        jSpinnerTeclas.setModel(new SpinnerListModel(disponibles));
        jSpinnerTeclas.setFocusCycleRoot(true);
        jSpinnerTeclas.setFocusable(false);

        javax.swing.GroupLayout jPanelSeleccionarLayout = new javax.swing.GroupLayout(jPanelSeleccionar);
        jPanelSeleccionar.setLayout(jPanelSeleccionarLayout);
        jPanelSeleccionarLayout.setHorizontalGroup(
            jPanelSeleccionarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelSeleccionarLayout.createSequentialGroup()
                .addGap(88, 88, 88)
                .addComponent(jSpinnerTeclas, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(102, Short.MAX_VALUE))
        );
        jPanelSeleccionarLayout.setVerticalGroup(
            jPanelSeleccionarLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelSeleccionarLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jSpinnerTeclas, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jButtonAceptar.setText("Aceptar");
        jButtonAceptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonAceptarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jButtonAceptar, javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jPanelSeleccionar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanelSeleccionar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jButtonAceptar)
                .addContainerGap())
        );
        pack();
    }// </editor-fold>//GEN-END:initComponents
   
    private void jButtonAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAceptarActionPerformed
        //        // Boton seleccionado
        //tecla= jSpinnerTeclas.getValue().toString();
        if (this.tecladoUso==t.SELECCIONAR){
            System.out.println("Sel");
            t.teclaSeleccion= ((String)jSpinnerTeclas.getValue());
            teclaSel= t.teclaSeleccion;
        } else if (this.tecladoUso==t.BARRER){
            System.out.println("Barr");
            t.teclaBarrido=((String)jSpinnerTeclas.getValue());
            System.out.println("spinner justo despues: " + (String)jSpinnerTeclas.getValue());
            teclaBarr= t.teclaBarrido;
        }
        System.out.println("tecladoUso: " + tecladoUso);
        //System.out.println("tecla: " + tecla);
        System.out.println("tecla Seleccion: " + t.teclaSeleccion);
        System.out.println("tecla barrer: " + t.teclaBarrido);
        System.out.println("Valor del spinner antes de salir: " + (String)jSpinnerTeclas.getValue());
        this.dispose();
       
    }//GEN-LAST:event_jButtonAceptarActionPerformed
   
//    int processKey(int key, boolean pressed) {
//        String s;
//        System.out.println("uso: " + t.uso_teclado + " tecla reconocida: " + key + "tecla capt: "+ tecla);
//        if (decodificar(key).equals(tecla)){
//            return(1);
//        }
//        else return(0);
//    }
   
   
   
   
    int processKey(int key, boolean pressed) {
        String s;
        //System.out.println("---------------------He recibido: " + decodificar(key));
        //System.out.println("uso: " + t.uso_teclado + " tecla reconocida: " + key + "tecla capt: "+ tecla);
        if ((decodificar(key).equals("ESC"))){
           System.out.println("He pulsado ESC desde driver teclado y lo dejo pasar");
           return(0); // no capturo la tecla
        }
        else if (((decodificar(key).equals(teclaSel) && (t.uso_teclado==t.SELECCIONAR)))
        || ((decodificar(key).equals(teclaBarr) && (t.uso_teclado==t.BARRER)))
        || ((((decodificar(key).equals(teclaSel)||(decodificar(key).equals(teclaBarr))) && (t.uso_teclado==t.SELEC_BARRER))))
       
       
        ){
           System.out.println("INFO: pressed: "+ pressed + " cambioEstado: "+ cambioEstado + " arrastrando: "+ Seleccion.arrastrando +" activo: "+ t.activo.getName());
                if ((t.uso_teclado==t.SELECCIONAR) || ((t.uso_teclado== t.SELEC_BARRER) && (decodificar(key).equals(teclaSel)))){ // seleccionar
                  
                    if (
                            (((((t.tipoMovimiento== t.NOMANTENIDOPULSAR)|| (t.tipoMovimiento==t.MANTENIDO))&& pressed && cambioEstado) ||
                        ((t.tipoMovimiento== t.NOMANTENIDOSOLTAR)&& (!pressed)))
                        && (!t.activo.getName().equals("Parar") ))
                   
                    ||
                        (
                            (
                                ((t.tipoMovimiento== t.NOMANTENIDOPULSAR)&& pressed && cambioEstado) ||
                            (
                                ((t.tipoMovimiento== t.NOMANTENIDOSOLTAR)|| (t.tipoMovimiento== t.MANTENIDO))&& (!pressed))
                            )
                            && (t.activo.getName().equals("Parar"))
                            )
                            
                        )
                   
                   
                   
                   
                   
                   
                    {
                   

                    System.out.println("******************** Se toma en cuenta: "+ pressed);
                    if (pressed){
                        if (cambioEstado){
                            cambioEstado=false;
                            System.out.println("Pressed, cambiamos de estado a false");
                        }
                    } else{
                        cambioEstado=true;
                    }
                    if ((Barrido.barriendo)&& (t.barrido==t.AUTOMATICO)){
                        if (((t.tipoBarrido==t.B_FILAS)|| (t.tipoBarrido==t.B_COLUMNAS))&&(t.primeraFase)){
                            System.out.println("Barrido 2 fases en primera fase");
                            t.primeraFase=false;
                            Barrido.resetBarrido();
                        } else{
                            System.out.println("Barrido 2 fases en segunda fase");
                            System.out.println("___________________Activo: " + t.activo.getName());
                            //Manejo.TratamientoDatos.tratarEnter();
                            tdr= new TratamientoDatosRun("tenter");
                            tdr.start();
                        }
                        // }
                       
                    }
                    // si estamos seleccionando y el barrido es manual
                    else if ((t.barrido==t.MANUAL_FILAS_COLUMNAS)|| (t.barrido== t.MANUAL_FILAS)|| (t.barrido==t.MANUAL_COLUMNAS)){
                        System.out.println("Es barrido manual y estoy seleccionando");
                        if ((t.barrido==t.MANUAL_FILAS_COLUMNAS)&& (t.seleccionandoFila)){
                            System.out.println("He elegido una fila");
                            //t.barrido= t.MANUAL_COLUMNAS;
                            t.seleccionandoFila=false;
                            // limpio todos los botones
                            int iter=0;
                            while((iter < t.coleccion.size())){
                                t.coleccion.get(iter).setOpaque(true);
                                t.coleccion.get(iter).setBackground(t.colorBot);
                                iter++;
                            }
                            // Revisar si la 1� es parar
                            MovimientoTablero.seleccionar(t.coleccion.get(t.filaBarrida*t.columnas));
                        } else { // si es manual: filas, columnas, o filas_columnas sin seleccionar fila
                            System.out.println("Elijo la activa");
                            System.out.println("___________________Activo: " + t.activo.getName());
                            //Manejo.TratamientoDatos.tratarEnter();
                            tdr= new TratamientoDatosRun("tenter");
                            tdr.start();
                        }
                       
                    }
                    }
                    else if ((t.tipoMovimiento== t.NOMANTENIDOPULSAR)&& (!pressed)){
                        cambioEstado=true;
                        System.out.println("******************** Se deja pasar NOMANTENIDOPULSAR: "+ pressed);
                        return(0);
                    }
                    else if ((t.tipoMovimiento== t.NOMANTENIDOSOLTAR)&& (pressed)){
                        System.out.println("******************** Se deja pasar NOMANTENIDOSOLTAR: "+ pressed);
                        cambioEstado=false;
                        return(0);
                    }
                    else if ((t.tipoMovimiento== t.MANTENIDO)&& pressed){// && (t.activo.getName().equals("Parar"))){
                        System.out.println("******************** Se deja pasar MANTENIDO: "+ pressed);
                        cambioEstado=false;
                        return(0);
                    }
                    else if ((t.tipoMovimiento== t.MANTENIDO)&& (!pressed)){// && (!t.activo.getName().equals("Parar"))){
                        System.out.println("******************** Se deja pasar MANTENIDO: "+ pressed);
                        cambioEstado=true;
                        return(0);
                    }
//                  }  // fin if grande
                   
                } // fin seleccionar
                // si el teclado se usa para barrer manualmente
                else if ((t.usoBarrer("teclado"))|| ((t.uso_teclado== t.SELEC_BARRER) && (decodificar(key).equals(teclaBarr)))) {
                    if (pressed && cambioEstado ){
                        cambioEstado=false;
                    System.out.println("Barro manualmente con el teclado");
                    // si barro por columnas
                    if (t.barrido==t.MANUAL_COLUMNAS){
                        System.out.println("Activo manualmente: " + t.activo.getName());
                        if (!t.enMovimiento){
                            MovimientoTablero.MoverDerecha();
                        }
                    } else if (t.barrido==t.MANUAL_FILAS){
                        System.out.println("Activo manualmente: " + t.activo.getName());
                        if (!t.enMovimiento){
                            MovimientoTablero.MoverAbajoCircular();
                        }
                    } else if (t.barrido==t.MANUAL_FILAS_COLUMNAS){
                        // si estoy seleccionando la fila
                        if (t.seleccionandoFila){ // falta manual en filas y columnas
                            if (t.filaBarrida<(t.filas-1)){
                                t.filaBarrida++;
                            } else {
                                t.filaBarrida=0;
                            }
                            System.out.println("Fila barrida: "+ t.filaBarrida);
                            MovimientoTablero.barridoManualPorFilas(t.filaBarrida);
                            System.out.println("Me movere por las filas");
                            //t.seleccionandoFila=false;
                        } else{ // ya no estoy seleccionando fila
                            if (!t.enMovimiento){
                                MovimientoTablero.barridoManualPorFilas(t.filaBarrida);
                                System.out.println("Me movere por las columnas de esa fila");
                            }
                        }
                    }
                    } // fin pressed de barrer
                    else if (!pressed){ // released
                        cambioEstado=true;
                    }
                } // fin barrer
                    
            return(1);
        }
       
        // la tecla no es la que busco
        else{
            //cambioEstado=true;
           
            System.out.println("Antes de return 0");
            return(0); // no capturo la tecla
        }
//     System.out.println("NOOOOOO Capturada");
    
    }
   
   
   
    public static String decodificar(int tecla){
        if (tecla==65) return "A";
        else if (tecla==66) return "B";
        else if (tecla==67) return "C";
        else if (tecla==68) return "D";
        else if (tecla==69) return "E";
        else if (tecla==70) return "F";
        else if (tecla==71) return "G";
        else if (tecla==72) return "H";
        else if (tecla==73) return "I";
        else if (tecla==74) return "J";
        else if (tecla==75) return "K";
        else if (tecla==76) return "L";
        else if (tecla==77) return "M";
        else if (tecla==78) return "N";
        else if (tecla==192) return "�";
        else if (tecla==79) return "O";
        else if (tecla==80) return "P";
        else if (tecla==81) return "Q";
        else if (tecla==82) return "R";
        else if (tecla==83) return "S";
        else if (tecla==84) return "T";
        else if (tecla==85) return "U";
        else if (tecla==86) return "V";
        else if (tecla==87) return "W";
        else if (tecla==88) return "X";
        else if (tecla==89) return "Y";
        else if (tecla==90) return "Z";
        else if (tecla==32) return "SPACE";
        else if (tecla==48) return "0";
        else if (tecla==49) return "1";
        else if (tecla==50) return "2";
        else if (tecla==51) return "3";
        else if (tecla==52) return "4";
        else if (tecla==53) return "5";
        else if (tecla==54) return "6";
        else if (tecla==55) return "7";
        else if (tecla==56) return "8";
        else if (tecla==57) return "9";
        else if (tecla==27) return "ESC";
        else if (tecla==13) return "ENTER";
        else if (tecla==39) return "flecha derecha";
        else if (tecla==37) return "flecha izquierda";
        else if (tecla==38) return "flecha arriba";
        else if (tecla==40) return "flecha abajo";
        else return(" ");
    }
   
   
    public void capturar(String mitecla){
        capturaTecla(mitecla);
    }
    native boolean teclaLibre(String tecla);
    native void capturaTecla(String tecla);
    native void registerHook();
    native void unRegisterHook();
   
    public void lanzarRegister(){
        ThreadLanzar tl=new ThreadLanzar("Lanzar",this);
        tl.start();
    }
   
    public void crearInterfaz(int uso) {
        if (this.jSpinnerTeclas != null){
            System.out.println("Valor spinner ppio: " + ((String)this.jSpinnerTeclas.getValue()));
        }
        System.out.println("crearInterfaz con uso: " + uso);
        tecladoUso=uso;
       
        if (t.tipoMovimiento==t.NOMANTENIDOPULSAR) alPulsar= true;
        else if (t.tipoMovimiento==t.NOMANTENIDOSOLTAR) alPulsar= false;
        //manejoTeclado=teclado;
//        ThreadLanzar tl=new ThreadLanzar("Lanzar",this);
//        tl.start();
        // miro a ver las teclas que estan libres
        almacenarLibres();
        initComponents();
        ActualizarIdioma();
        System.out.println("Valor spinner despues: " + ((String)this.jSpinnerTeclas.getValue()));
        if (this.tecladoUso== t.SELECCIONAR){
            System.out.println("Asigno sel");
            jSpinnerTeclas.setValue((String)t.teclaSeleccion);
        } else if (this.tecladoUso== t.BARRER){
            System.out.println("Asigno barrido");
            jSpinnerTeclas.setValue((String)t.teclaBarrido);
        }
        // Creamos la interfaz
        if (this.tecladoUso==t.SELECCIONAR){
           //this.setTitle("Manejo Teclado");
            jPanelSeleccionar.setBorder(javax.swing.BorderFactory.createTitledBorder(ResourceBundle.getBundle("idiomas.fich_idiomas",t.Idiomas).getString("strSeleccionar")));
        } else if (this.tecladoUso==t.BARRER){
            System.out.println("Barrido");
            //this.setTitle("Barrido manual con el teclado");
            jPanelSeleccionar.setBorder(javax.swing.BorderFactory.createTitledBorder(ResourceBundle.getBundle("idiomas.fich_idiomas",t.Idiomas).getString("strSeleccionarManual")));
        }
       
       
        this.setVisible(true);
    }

    private void ActualizarIdioma() {
        this.jPanelSeleccionar.setBorder(javax.swing.BorderFactory.createTitledBorder(ResourceBundle.getBundle("idiomas.fich_idiomas",t.Idiomas).getString("strSeleccionar")));
        this.setTitle(ResourceBundle.getBundle("idiomas.fich_idiomas",t.Idiomas).getString("strTituloTeclado"));
        this.jButtonAceptar.setText(ResourceBundle.getBundle("idiomas.fich_idiomas",t.Idiomas).getString("strAceptar"));
       
    }
   
   
    // Declaraci�n de varibales -no modificar//GEN-BEGIN:variables
    private javax.swing.ButtonGroup buttonGroupGenerar;
    private javax.swing.JButton jButtonAceptar;
    private javax.swing.JPanel jPanelSeleccionar;
    private static javax.swing.JSpinner jSpinnerTeclas;
    // Fin de declaraci�n de variables//GEN-END:variables
   
}
TOP

Related Classes of Interfaz.Teclado$ThreadLanzar

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.