Package cl.rivendel.views

Source Code of cl.rivendel.views.GestionadorTab

package cl.rivendel.views;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.print.PrinterException;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Vector;

import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;

import org.jopendocument.dom.OOUtils;
import org.jopendocument.dom.spreadsheet.SpreadSheet;

import cl.rivendel.modelo.Jugador;
import cl.rivendel.modelo.Mesa;
import cl.rivendel.modelo.MesaTablaModel;
import cl.rivendel.modelo.Ronda;
import cl.rivendel.servicios.Services;

public class GestionadorTab extends JFrame {

  /**
   *
   */
  private static final long serialVersionUID = 1L;
  private JPanel contentPane;
  private JPanel tabPanMesas;
  private JPanel tabPanJugadores;
  private JTextField txtJugador;
  private JTable tbl_jugadores;
  private LinkedList<Jugador> listado;
  private static Vector<String> columnNames;
  private static Vector<String> columnNamesTablaMesa;
  private static DefaultTableModel modelJugadores;
  private static MesaTablaModel modelMesas;
  private JButton btnAgregar;
  private JButton btnPrimeraRonda;
  private Services servicio;
  private JTable tbl_mesas;
  private JScrollPane scrollPane_1;
  private JButton btnNuevaRonda;
  private Ronda rondaActual;
  private JTabbedPane tabbedPane;

  private int posicionTabJugadores = 0;
  private int posicionTabMesa = 1;
  private JButton btnExportar;
  private JButton btnImprimir;

  /**
   * Launch the application.
   */
  public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
      public void run() {
        try {
          GestionadorTab frame = new GestionadorTab();
          frame.setVisible(true);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    });
  }

  /**
   * Create the frame.
   */
  public GestionadorTab() {

    initComponents();
    initEvents();
    initTableProperties();
    initTablesPanel();

  }

  private void initTableProperties() {

    /*
     * Tabla de jugadores
     */

    tbl_jugadores.getTableHeader().setReorderingAllowed(false); // we do not
                                  // allow
    // to move columns
    tbl_jugadores.setRowHeight(25);

    // column names
    Vector<String> nombresCols = new Vector<String>();

    nombresCols.add("Nombre");
    nombresCols.add("Puntos");
    nombresCols.add("Logros");

    columnNames = nombresCols;

    /*
     * tabla de mesas
     */

    tbl_mesas.getTableHeader().setReorderingAllowed(false);
    // to move columns
    tbl_mesas.setRowHeight(25);

    // column names
    Vector<String> nombresColsTableMesas = new Vector<String>();

    nombresColsTableMesas.add("N� Ronda");
    nombresColsTableMesas.add("N� mesa");
    nombresColsTableMesas.add("Jugador");
    nombresColsTableMesas.add("Puntos");

    columnNamesTablaMesa = nombresColsTableMesas;

  }

  private void initComponents() {

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 866, 568);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);

    tabbedPane = new JTabbedPane(JTabbedPane.TOP);
    GroupLayout gl_contentPane = new GroupLayout(contentPane);
    gl_contentPane.setHorizontalGroup(gl_contentPane.createParallelGroup(
        Alignment.LEADING).addGroup(
        gl_contentPane
            .createSequentialGroup()
            .addContainerGap()
            .addComponent(tabbedPane, GroupLayout.DEFAULT_SIZE,
                820, Short.MAX_VALUE).addContainerGap()));
    gl_contentPane.setVerticalGroup(gl_contentPane.createParallelGroup(
        Alignment.LEADING).addGroup(
        gl_contentPane
            .createSequentialGroup()
            .addContainerGap()
            .addComponent(tabbedPane, GroupLayout.DEFAULT_SIZE,
                498, Short.MAX_VALUE).addContainerGap()));

    tabPanJugadores = new JPanel();

    tabbedPane.addTab("Jugadores", null, tabPanJugadores, null);

    JLabel lblJugador = new JLabel("Jugador");

    txtJugador = new JTextField();
    txtJugador.setColumns(10);

    JScrollPane scrollPane = new JScrollPane();

    btnAgregar = new JButton("Agregar");

    btnPrimeraRonda = new JButton("1� Ronda");

    btnExportar = new JButton("Exportar");

    GroupLayout gl_tabPanJugadores = new GroupLayout(tabPanJugadores);
    gl_tabPanJugadores
        .setHorizontalGroup(gl_tabPanJugadores
            .createParallelGroup(Alignment.LEADING)
            .addGroup(
                gl_tabPanJugadores
                    .createSequentialGroup()
                    .addContainerGap()
                    .addGroup(
                        gl_tabPanJugadores
                            .createParallelGroup(
                                Alignment.LEADING)
                            .addComponent(
                                scrollPane,
                                GroupLayout.DEFAULT_SIZE,
                                805,
                                Short.MAX_VALUE)
                            .addGroup(
                                gl_tabPanJugadores
                                    .createSequentialGroup()
                                    .addComponent(
                                        lblJugador)
                                    .addPreferredGap(
                                        ComponentPlacement.UNRELATED)
                                    .addComponent(
                                        txtJugador,
                                        GroupLayout.PREFERRED_SIZE,
                                        239,
                                        GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(
                                        ComponentPlacement.RELATED)
                                    .addComponent(
                                        btnAgregar)
                                    .addGap(18)
                                    .addComponent(
                                        btnPrimeraRonda)
                                    .addPreferredGap(
                                        ComponentPlacement.UNRELATED)
                                    .addComponent(
                                        btnExportar)))
                    .addContainerGap()));
    gl_tabPanJugadores
        .setVerticalGroup(gl_tabPanJugadores
            .createParallelGroup(Alignment.LEADING)
            .addGroup(
                gl_tabPanJugadores
                    .createSequentialGroup()
                    .addContainerGap()
                    .addGroup(
                        gl_tabPanJugadores
                            .createParallelGroup(
                                Alignment.BASELINE)
                            .addComponent(
                                lblJugador)
                            .addComponent(
                                txtJugador,
                                GroupLayout.PREFERRED_SIZE,
                                GroupLayout.DEFAULT_SIZE,
                                GroupLayout.PREFERRED_SIZE)
                            .addComponent(
                                btnAgregar)
                            .addComponent(
                                btnPrimeraRonda)
                            .addComponent(
                                btnExportar))
                    .addGap(20)
                    .addComponent(scrollPane,
                        GroupLayout.DEFAULT_SIZE, 405,
                        Short.MAX_VALUE)
                    .addContainerGap()));

    tbl_jugadores = new JTable();
    scrollPane.setViewportView(tbl_jugadores);
    tabPanJugadores.setLayout(gl_tabPanJugadores);

    tabPanMesas = new JPanel();
    tabbedPane.addTab("Mesas", null, tabPanMesas, null);

    scrollPane_1 = new JScrollPane();

    tbl_mesas = new JTable();
    scrollPane_1.setViewportView(tbl_mesas);

    btnNuevaRonda = new JButton("Nueva Ronda");

    btnImprimir = new JButton("Imprimir");

    GroupLayout gl_tabPanMesas = new GroupLayout(tabPanMesas);
    gl_tabPanMesas.setHorizontalGroup(gl_tabPanMesas
        .createParallelGroup(Alignment.TRAILING)
        .addGroup(
            gl_tabPanMesas
                .createSequentialGroup()
                .addContainerGap()
                .addComponent(scrollPane_1,
                    GroupLayout.PREFERRED_SIZE, 805,
                    GroupLayout.PREFERRED_SIZE)
                .addContainerGap(GroupLayout.DEFAULT_SIZE,
                    Short.MAX_VALUE))
        .addGroup(
            gl_tabPanMesas.createSequentialGroup()
                .addContainerGap(623, Short.MAX_VALUE)
                .addComponent(btnNuevaRonda)
                .addPreferredGap(ComponentPlacement.RELATED)
                .addComponent(btnImprimir).addContainerGap()));
    gl_tabPanMesas.setVerticalGroup(gl_tabPanMesas.createParallelGroup(
        Alignment.TRAILING)
        .addGroup(
            gl_tabPanMesas
                .createSequentialGroup()
                .addContainerGap(GroupLayout.DEFAULT_SIZE,
                    Short.MAX_VALUE)
                .addGroup(
                    gl_tabPanMesas
                        .createParallelGroup(
                            Alignment.BASELINE)
                        .addComponent(btnNuevaRonda)
                        .addComponent(btnImprimir))
                .addPreferredGap(ComponentPlacement.UNRELATED)
                .addComponent(scrollPane_1,
                    GroupLayout.PREFERRED_SIZE,
                    GroupLayout.DEFAULT_SIZE,
                    GroupLayout.PREFERRED_SIZE)));
    tabPanMesas.setLayout(gl_tabPanMesas);
    contentPane.setLayout(gl_contentPane);

    // se inicializa la lista de jugadores
    listado = new LinkedList<Jugador>();

    servicio = new Services();

  }

  private void initEvents() {

    // ========================================
    // click on buttons agregar
    // ========================================

    btnAgregar.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {
        if (!txtJugador.getText().isEmpty()) {

          Jugador jugador = new Jugador();

          jugador.setNombre(txtJugador.getText());

          addJugador(jugador);

          txtJugador.setText("");

        }
      }

    });

    // ========================================
    // click on buttons ronda
    // ========================================

    btnPrimeraRonda.addActionListener(new ActionListener() {

      public void actionPerformed(ActionEvent e) {

        rondaActual = servicio.calculaRondas(listado);

        loadTableMesas(rondaActual);
        tabbedPane.setSelectedIndex(posicionTabMesa);

      }
    });

    // ========================================
    // click on buttons nueva ronda
    // ========================================

    btnNuevaRonda.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {

        rondaActual = servicio.calculaRondas(rondaActual);

        loadTableMesas(rondaActual);

      }
    });

    // ========================================
    // click on buttons tabs
    // ========================================

    tabPanJugadores.addComponentListener(new ComponentAdapter() {
      @Override
      public void componentShown(ComponentEvent arg0) {
        actualizarPuntosjugadores();
      }

    });

    // ========================================
    // click on buttons exportar
    // ========================================

    btnExportar.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {

        Date hoy = Calendar.getInstance().getTime();

        SimpleDateFormat format = new SimpleDateFormat();

        format.applyPattern("dd-MM-yyyy");

        String fecha = format.format(hoy);
        final File file = new File("PosicionesComander" + fecha
            + ".ods");

        try {
          SpreadSheet.createEmpty(modelJugadores).saveAs(file);

          OOUtils.open(file);

        } catch (FileNotFoundException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }

      }
    });

    // ========================================
    // click on buttons Imprimir
    // ========================================

    btnImprimir.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent arg0) {

        boolean seImprimio = false;
        try {
          seImprimio = tbl_mesas.print();
        } catch (PrinterException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }

        if (seImprimio) {
          System.out.println("impresion terminada");
        } else {

          System.out.println("Error en impresion");

        }

      }
    });

  }

  private void initTablesPanel() {

    // actualizarPuntosjugadores();

    Vector<Object> jugadorData;

    modelJugadores = new DefaultTableModel(null, columnNames); // first we
                                  // add the
    // column names

    tbl_jugadores.setModel(modelJugadores); // update the model
    tbl_jugadores.setAutoCreateRowSorter(true);

    // we add each row of the table
    for (Jugador c : listado) {
      jugadorData = new Vector<Object>(); // we load a vector with the
                        // data of each row

      jugadorData.add(c.getNombre()); // data for the column "Nombre"
      jugadorData.add(c.getPuntos()); // data for the column "Punto"
      jugadorData.add(c.getLogros()); // data for the column "Logro"

      modelJugadores.addRow(jugadorData); // we add all data to the table
                        // model
    }
    tbl_jugadores.setModel(modelJugadores); // update the model

    // Now, we have the model loaded, so we can modify its column properties
    tbl_jugadores.getColumnModel().getColumn(0).setResizable(false);
    tbl_jugadores.getColumnModel().getColumn(0).setPreferredWidth(200);

    tbl_jugadores.getColumnModel().getColumn(1).setResizable(false);
    tbl_jugadores.getColumnModel().getColumn(1).setPreferredWidth(200);

    tbl_jugadores.getColumnModel().getColumn(2).setResizable(false);
    tbl_jugadores.getColumnModel().getColumn(2).setPreferredWidth(200);

    /*
     * iniciamos la tabla de mesas
     */

    // modelMesas = new DefaultTableModel(null, columnNamesTablaMesa);
    modelMesas = new MesaTablaModel();
    tbl_mesas.setModel(modelMesas);
    tbl_mesas.setRowSorter(null);
    // Now, we have the model loaded, so we can modify its column properties
    tbl_mesas.getColumnModel().getColumn(0).setResizable(false);
    tbl_mesas.getColumnModel().getColumn(0).setPreferredWidth(200);

    tbl_mesas.getColumnModel().getColumn(1).setResizable(false);
    tbl_mesas.getColumnModel().getColumn(1).setPreferredWidth(200);

    tbl_mesas.getColumnModel().getColumn(2).setResizable(false);
    tbl_mesas.getColumnModel().getColumn(2).setPreferredWidth(200);

  }

  public void addJugador(Jugador p_jugador) {

    if (modelJugadores == null) {
      modelJugadores = new DefaultTableModel(null, columnNames); // first
                                    // we
                                    // add
      // the

    }

    Vector<Object> jugadorData;
    jugadorData = new Vector<Object>();

    jugadorData.add(p_jugador.getNombre()); // data for the column "Nombre"
    jugadorData.add(p_jugador.getPuntos()); // data for the column "Punto"
    jugadorData.add(p_jugador.getLogros()); // data for the column "Logro"

    modelJugadores.addRow(jugadorData); // we add all data to the table
                      // model

    tbl_jugadores.setModel(modelJugadores); // update the model

    listado.add(p_jugador);

  }

  public void loadTableMesas(Ronda p_ronda) {

    if (p_ronda == null) {
      return;
    }

    // Vector<Object> mesaData;

    List<Mesa> mesas = p_ronda.getMesas();
    Integer numeroRonda = p_ronda.getNumeroRonda();

    modelMesas = new MesaTablaModel(mesas, numeroRonda);

    // for (Mesa mesa : mesas) {
    //
    // List<Jugador> jugadores = mesa.getJugadores();
    //
    // for (Jugador jugador : jugadores) {
    //
    // mesaData = new Vector<Object>();
    //
    // mesaData.add(numeroRonda);
    //
    // mesaData.add(mesa.getNumeroMesa()); // data for the column
    // // "Nombre"
    // mesaData.add(jugador.getNombre()); // data for the column
    // // "Punto"
    // mesaData.add(jugador.getPuntos()); // data for the column
    // // "Logro"
    //
    // modelMesas.addRow(mesaData);
    //
    //
    // }
    //
    // }

    tbl_mesas.setModel(modelMesas); // update the model

  }

  @SuppressWarnings("unchecked")
  private void actualizarPuntosjugadores() {

    @SuppressWarnings("rawtypes")
    Vector data = new Vector();
    Vector<Object> jugadorData = null;

    for (Jugador c : listado) {
      jugadorData = new Vector<Object>(); // we load a vector with the
                        // data of each row

      jugadorData.add(c.getNombre()); // data for the column "Nombre"
      jugadorData.add(c.getPuntos()); // data for the column "Punto"
      jugadorData.add(c.getLogros()); // data for the column "Logro"

      data.add(jugadorData); // we add all data to the table model
    }

    Collections.sort(data, new Comparator<Object>() {

      @Override
      public int compare(Object o1, Object o2) {

        Vector<Object> vect1 = (Vector<Object>) o1;
        Vector<Object> vect2 = (Vector<Object>) o2;

        Integer puntos1 = (Integer) vect1.get(1);
        Integer puntos2 = (Integer) vect2.get(1);

        return puntos2.compareTo(puntos1);
      }

    });

    modelJugadores.setDataVector(data, columnNames);
    // model.get
    tbl_jugadores.setModel(modelJugadores); // update the model

  }
}
TOP

Related Classes of cl.rivendel.views.GestionadorTab

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.