VistaJugadorModal.java 5.23 KB
package es.mde.componentes;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import es.mde.entidades.Federado;
import es.mde.entidades.Jugador;
import es.mde.entidades.Principiante;
import es.mde.repositorios.JugadorDAO;

public class VistaJugadorModal extends JDialog {
    private Jugador jugador;
    private List<Jugador> jugadoresSimilares;
    private JPanel infoPanel;
    private JPanel similarPlayersPanel;

    public VistaJugadorModal(JFrame parent, Jugador jugador) {
        super(parent, "Ver Jugador", true);
        this.jugador = jugador;

        setLayout(new BorderLayout());

        // Panel principal con BoxLayout para evitar grandes espacios vacíos
        JPanel mainPanel = new JPanel();
        mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS));

        // Panel de información del jugador
        infoPanel = new JPanel();
        infoPanel.setLayout(new BoxLayout(infoPanel, BoxLayout.Y_AXIS));
        infoPanel.setBorder(BorderFactory.createEmptyBorder(10, 100, 10, 100)); // Márgenes: arriba, izquierda, abajo, derecha

        // Mostrar información del jugador
        infoPanel.add(new JLabel("Nombre: " + jugador.getNombre() + " " + jugador.getApellido1() + " " + jugador.getApellido2()));
        infoPanel.add(new JLabel("DNI: " + jugador.getDni()));
        infoPanel.add(new JLabel("Teléfono: " + jugador.getTelefono()));
        infoPanel.add(new JLabel("Correo Electrónico: " + jugador.getEmail()));
        infoPanel.add(new JLabel("Campo: " + jugador.getCampo().getNombre()));

        if (jugador.getTipo().equals("Federado")) {
            infoPanel.add(new JLabel("Handicap: " + ((Federado) jugador).getHandicap()));
            if (((Federado) jugador).isProfesional()) {
                infoPanel.add(new JLabel("Profesional: Sí"));
            }
        } else if (jugador.getTipo().equals("Principiante")) {
            infoPanel.add(new JLabel("Puntuación Largo: " + ((Principiante) jugador).getPuntuacionLargo()));
            infoPanel.add(new JLabel("Puntuación Corto: " + ((Principiante) jugador).getPuntuacionCorto()));
        }

        mainPanel.add(infoPanel);

        // Panel de jugadores similares
        similarPlayersPanel = new JPanel(new BorderLayout());

        // Crear el modelo de la tabla para los jugadores similares
        DefaultTableModel tableModel = new DefaultTableModel();
        tableModel.addColumn("Nombre");
        tableModel.addColumn("Handicap");

        // Cargar jugadores similares en el modelo de la tabla
        jugadoresSimilares = new JugadorDAO().getSimilares(jugador);
        for (Jugador similar : jugadoresSimilares) {
            String nombreCompleto = similar.getNombre() + " " + similar.getApellido1() + " " + similar.getApellido2();
            String handicap = String.valueOf(similar.getTipo().equals("Federado") ? ((Federado) similar).getHandicap() : ((Principiante) similar).getHandicap());
            tableModel.addRow(new Object[]{nombreCompleto, handicap});
        }

        // Crear la tabla con el modelo de datos
        JTable similarPlayersTable = new JTable(tableModel);

        // Asegurar que las celdas de la tabla tengan un fondo blanco
        DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
        renderer.setBackground(Color.WHITE);
        similarPlayersTable.setDefaultRenderer(Object.class, renderer);

        // Añadir la tabla al panel de jugadores similares
        JScrollPane scrollPane = new JScrollPane(similarPlayersTable);
        scrollPane.setBorder(BorderFactory.createTitledBorder("Jugadores de Nivel Similar"));
        similarPlayersPanel.add(scrollPane, BorderLayout.CENTER);

        mainPanel.add(similarPlayersPanel);

        add(mainPanel, BorderLayout.CENTER);

        JButton closeButton = new JButton("Cerrar");
        closeButton.addActionListener(e -> dispose());
        JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        buttonPanel.add(closeButton);
        add(buttonPanel, BorderLayout.SOUTH);

        pack();
        setLocationRelativeTo(parent);
    }

    private void cargarJugadoresSimilares() {
        jugadoresSimilares = new JugadorDAO().getSimilares(jugador);
        for (Jugador similar : jugadoresSimilares) {
            System.out.println(similar.getNombre() + ", " + similar.getTipo());

            JPanel jugadorPanel = new JPanel();
            jugadorPanel.setLayout(new BoxLayout(jugadorPanel, BoxLayout.Y_AXIS));
            jugadorPanel.add(new JLabel("Nombre: " + similar.getNombre() + " " + similar.getApellido1() + " " + similar.getApellido2()));
            jugadorPanel.add(new JLabel("Handicap: " + (similar.getTipo().equals("Federado") ? ((Federado) similar).getHandicap() : ((Principiante) similar).getHandicap())));
            similarPlayersPanel.add(jugadorPanel);
        }
        similarPlayersPanel.revalidate();
        similarPlayersPanel.repaint();
    }
}