import java.util.*;
import javax.swing.*;
import java.awt.*;

/**
 * Clase encargada de la creacion y administracion de la interfaz grafica.
 * @author Luis Fuentes Weber
 */
public class serverPane extends JPanel {
    private JTextArea inputText;
    private JScrollPane jScrollPane1;
    private static JTextArea mainText;
    private final Vector <clientData> clients;

     /**
     * Constructor que crea, ordena e inicializa los elementos de la interfaz
     * grafica
     */
    public serverPane(Vector <clientData> clients){
        this.clients = clients;

        setLayout(new BorderLayout(10,10));
        setBorder(BorderFactory.createEmptyBorder(10,10,10,10));

        jScrollPane1 = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        mainText = new JTextArea();

        jScrollPane1.setViewportView(inputText);

        mainText.setColumns(30);
        mainText.setEditable(false);
        mainText.setRows(10);
        mainText.setLineWrap(true);

        jScrollPane1.setViewportView(mainText);
        add(jScrollPane1);
    }

    /**
     * Reescribe los clientes existentes en el cuadro de texto en la interfaz grafica.
     * Sincronizado con el vector de clientes para evitar reescribir mientras se
     * agrega o elimina un cliente.
     */
    public void reWrite(){
        synchronized(clients){
            mainText.setText(clients.size() + " clients connected: \n");
            for(int i=0; i<clients.size(); i++){
                mainText.append("- "+clients.get(i).getSocket().getInetAddress().getHostName()+":" + clients.get(i).getSocket().getPort() + "\n" );
            }
            mainText.setCaretPosition(mainText.getDocument().getLength()); //Scoll al final
        }
    }

}
