Package GUI

Source Code of GUI.VentanaMesero

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package GUI;

import GUI.touchscreen.VentanaLoginTouchScreen;
import Administracion.Mesero;
import Pedidos.Comanda;
import Pedidos.Mesa;
import SistemaDeKioscos.ServicioDeAccesoABaseDeDatos;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.util.ArrayList;
import java.util.Date;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.Timer;
import org.jvnet.substance.SubstanceLookAndFeel;
import org.jvnet.substance.api.SubstanceConstants;
import org.jvnet.substance.api.SubstanceSkin;
import org.jvnet.substance.skin.BusinessBlueSteelSkin;
import org.jvnet.substance.watermark.SubstanceImageWatermark;

/**
*
* @author Administrador
*/
public class VentanaMesero extends javax.swing.JFrame {

    Mesero mesero = new Mesero();
    ArrayList<Mesa> mesas = new ArrayList<Mesa>();
    JFrame login;//VentanaLoginTouchScreen
    private boolean contandoTiempo = false;
    Thread temporizadorLogin;
    ServicioDeAccesoABaseDeDatos baseDeDatos;// = new Servic    ioDeAccesoABaseDeDatos();

    public VentanaMesero(VentanaLoginTouchScreen loginw) {
        this.login = loginw;
        initComponents();
        //TODO hacer que las mesas cambien de color si están ocupadas
    }

    class miAdaptador extends MouseAdapter {

        private Mesa mesa;
        private VentanaMesero ventana;

        private miAdaptador(Mesa mesa, VentanaMesero ventana) {
            this.mesa = mesa;
            this.ventana = ventana;
        }

        @Override
        public void mouseClicked(java.awt.event.MouseEvent evt) {
            //mesa1MouseClicked(evt);
            //consultar en BD si la mesa esta ocupada
            int numeroDeMesa = mesa.getNumeroDeMesa();
            int estadomesa = baseDeDatos.compruebaEstadoMesa(numeroDeMesa, mesero);

            if (estadomesa != ServicioDeAccesoABaseDeDatos.SINDATOS) {
                if (estadomesa == ServicioDeAccesoABaseDeDatos.MESA_DESOCUPADA) {//comprobar en la BD si la mesa ya tenía cuentas abierta
                    cargaNuevaCartaALaMesa(numeroDeMesa);
                    System.out.println("Cargando una nueva carta");
                    ventanaDeCarta carta = new ventanaDeCarta(1, ventana);
                    carta.setMesero(mesero);
                    carta.setVisible(true);
                } else { //si no
                    System.out.println("Verificando que la mesa esté reservada por nosotros");
                    //TODO verificar que la mesa la tenga reservada el mismo mesero
                    if (baseDeDatos.comprobarSiAtiendeMesa(mesero, numeroDeMesa)) {
                        System.out.println("La mesa estaba reservada por nosotros");
                        System.out.println("Cargando carta anterior...");
                        Comanda carta = baseDeDatos.obtenerComandaExistenteDeMesero(numeroDeMesa, mesero);
                        ventanaDeCarta deCarta = new ventanaDeCarta(numeroDeMesa, ventana);
                        deCarta.setOrden(carta);
                        deCarta.setMesero(mesero);
                        deCarta.setVisible(true);
                        setVisible(false);
                    } else {
                        System.out.println("La mesa estaba reservada por alguien más");
                        JOptionPane.showMessageDialog(ventana, "Lo siento pero esta mesa ya está siendo atendida por alguien más");
                    }
                }
                //si ya ignorar, no podrá tocar una mesa usada por alguien más
            } else {
                System.err.println("No se pudo verificar posiblemente base de datos dañada");
            }
        }

    }

    public VentanaMesero(VentanaLoginMesero loginw) {
        this.login = loginw;
        initComponents();
        //TODO hacer que las mesas cambien de color si están ocupadas
    }

    public VentanaMesero(JFrame login, ServicioDeAccesoABaseDeDatos baseDeDatos) {
        this.login = login;
        this.baseDeDatos = baseDeDatos;
        Vector<Mesa> mesas = baseDeDatos.obtenerMesas();
        for (int i = 0; i < mesas.size(); i++) {
            Mesa mesa = mesas.elementAt(i);
            JLabel mesa1 = new JLabel();
            mesa1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
            mesa1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/res/mesas beta de 60x80 cms mesas en restaurante.jpg"))); // NOI18N
            mesa1.setText(mesa.getNumeroDeMesa() + "");
            mesa1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
            mesa1.addMouseListener(new miAdaptador(mesa, this));
            panelMesas.add(mesa1);
            //mesa1.setVisible(true);
            //pack();
        }
    }

    @Override
    public void setVisible(boolean b) {
        super.setVisible(b);
        SubstanceImageWatermark watermark = new SubstanceImageWatermark("GUI/res/texture_33_by_Sirius_sdz.jpg");
        //SubstanceCrosshatchWatermark watermark = new SubstanceCrosshatchWatermark();
        watermark.setKind(SubstanceConstants.ImageWatermarkKind.APP_TILE);
        watermark.setOpacity(0.2f);// 设置水印透明度         
        SubstanceSkin skin = new BusinessBlueSteelSkin()//CremeCoffeeSkin()
                .withWatermark(watermark); // 初始化有水印的皮肤
        SubstanceLookAndFeel.setSkin(skin);
        Vector<Mesa> mesas = baseDeDatos.obtenerMesas();
        for (int i = 0; i < mesas.size(); i++) {
            Mesa mesa = mesas.elementAt(i);
            JLabel mesa1 = new JLabel();
            mesa1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
            mesa1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/res/mesas beta de 60x80 cms mesas en restaurante.jpg"))); // NOI18N
            mesa1.setText(mesa.getNumeroDeMesa() + "");
            mesa1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
            mesa1.addMouseListener(new miAdaptador(mesa, this));
            panelMesas.add(mesa1);
            //mesa1.setVisible(true);
            //pack();
        }
    }

    public ServicioDeAccesoABaseDeDatos getBaseDeDatos() {
        return baseDeDatos;
    }

    public void setBaseDeDatos(ServicioDeAccesoABaseDeDatos baseDeDatos) {
        this.baseDeDatos = baseDeDatos;
    }

    ActionListener actListner = new ActionListener() {

        @Override

        public void actionPerformed(ActionEvent event) {

            if (true == contandoTiempo) {
                //System.out.println("verificando...");
                long tiempoInactivo;
                Date cur_time = new Date();
                tiempoInactivo = cur_time.getTime() - last_act_time.getTime();
                //System.out.println("tiempo inactivo" + tiempoInactivo);
                if (tiempoInactivo >= 7000) { //1min
                    System.out.println("inactivo!");
                    contandoTiempo = false;
                    volverALogin();
                }
            } else {
                last_act_time = new Date();
            }

        }

    };

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        lblBarra = new javax.swing.JLabel();
        btnSalir = new javax.swing.JButton();
        lblCaja = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        panelMesas = new javax.swing.JPanel();

        setTitle("Creación de comandas");
        addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                formFocusGained(evt);
            }
        });

        lblBarra.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/res/6201_l.jpg"))); // NOI18N
        lblBarra.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                lblBarraMouseClicked(evt);
            }
        });

        btnSalir.setText("Salir");
        btnSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSalirActionPerformed(evt);
            }
        });

        lblCaja.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/res/registradora.png"))); // NOI18N
        lblCaja.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                lblCajaMouseClicked(evt);
            }
        });

        jScrollPane1.setViewportView(panelMesas);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(138, 138, 138)
                                .addComponent(lblCaja, javax.swing.GroupLayout.PREFERRED_SIZE, 142, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(layout.createSequentialGroup()
                                .addGap(12, 12, 12)
                                .addComponent(lblBarra, javax.swing.GroupLayout.PREFERRED_SIZE, 368, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(55, 55, 55)
                                .addComponent(btnSalir)))
                        .addGap(0, 116, Short.MAX_VALUE))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 604, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 228, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(28, 28, 28)
                        .addComponent(lblBarra)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(btnSalir)
                        .addGap(62, 62, 62)))
                .addComponent(lblCaja, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(21, 21, 21))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void lblBarraMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lblBarraMouseClicked
        //cargaNuevaCartaALaMesa(-1);
        //TODO: cargar una carta especial apra la barra
    }//GEN-LAST:event_lblBarraMouseClicked

    private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSalirActionPerformed
        volverALogin();
    }//GEN-LAST:event_btnSalirActionPerformed

    private void formFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_formFocusGained
        //registrarMovimiento();
        System.out.println("Ventana Mesero ganó el foco");
    }//GEN-LAST:event_formFocusGained

    private void lblCajaMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lblCajaMouseClicked
//TODO calcular las ventas por mesero (opcional)
//TODO hacer ventana de cajero       

    }//GEN-LAST:event_lblCajaMouseClicked


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnSalir;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JLabel lblBarra;
    private javax.swing.JLabel lblCaja;
    private javax.swing.JPanel panelMesas;
    // End of variables declaration//GEN-END:variables

    Date last_act_time;

    public void registrarMovimiento() {
        last_act_time = new Date();
        // contandoTiempo = true;
        System.out.println("movimiento registrado");
    }

    void volverALogin() {
        this.dispose();
        contandoTiempo = false;
        login.setVisible(true);
    }

    public void correTiempo() {
        //    System.out.println("Iniciando");
        contandoTiempo = true;
        Timer timer = new Timer(500, actListner);

        timer.start();
        registrarMovimiento();
    }

    private void cargaNuevaCartaALaMesa(int i) {
        //    registrarMovimiento();
        baseDeDatos.atenderMesa(mesero, i);
        ventanaDeCarta carta;
        //mandamos esta ventana como referencia para que pueda reactivar el temporizador cuando se cierre
        carta = new ventanaDeCarta(i, this);
        carta.setVisible(true);
        contandoTiempo = false;
        System.out.println("Tiempo parado");
    }

    public void setMesero(Mesero m) {
        this.mesero = m;
    }

    public Mesero getMesero() {
        return mesero;
    }

}
TOP

Related Classes of GUI.VentanaMesero

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.