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


/**
 * Clase encargada de la creacion y administracion de la interfaz grafica
 * @author Luis Fuentes Weber
 */

public class clientPane extends JPanel {
    private JTextArea inputText;
    private JScrollPane inputScrollPane;
    private JScrollPane mainScrollPane;
    private JTextArea mainText;
    private javax.swing.JButton sendButton;

    /**
     * Constructor que crea, ordena e inicializa los elementos de la interfaz
     * grafica
     */
    public clientPane(){
        setLayout(new BorderLayout(10,10));
        setBorder(BorderFactory.createEmptyBorder(10,10,10,10));

        JPanel inPanel = new JPanel();
        inPanel.setLayout(new BorderLayout(10,0));
        

        JPanel outPanel = new JPanel();
        outPanel.setLayout(new BoxLayout(outPanel, BoxLayout.LINE_AXIS));


	inputScrollPane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        inputText = new JTextArea();
        sendButton = new JButton();
        mainScrollPane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        mainText = new JTextArea();

        inputText.setColumns(20);
        inputText.setRows(4);
        inputScrollPane.setViewportView(inputText);

        sendButton.setText("Send");
       

        mainText.setColumns(20);
        mainText.setEditable(false);
        mainText.setRows(10);
        mainText.setLineWrap(true);
        inputText.setLineWrap(true);
        mainScrollPane.setViewportView(mainText);


 
        outPanel.add(mainScrollPane);
        inPanel.add(BorderLayout.CENTER, inputScrollPane );
        inPanel.add(BorderLayout.EAST, sendButton );
        add(BorderLayout.CENTER,outPanel);
        add(BorderLayout.SOUTH,inPanel);

    }

    /**
     * Actualiza el cuadro de texto principal, anadiendo una nueva linea al
     * al final de lo existente
     * @param s Nueva linea a anadir.
     */
    public void updateMainText(String s){
        mainText.append(s+"\n");
        mainText.setCaretPosition(mainText.getDocument().getLength()); //Scroll al final
    }

    /**
     * Obtiene y retorna el string desde el cuadro de texto de entrada.
     * @return Texto desde inputText.
     */
    public String getText(){
        return inputText.getText();
    }

    /**
     * Borra todo el contenido del cuadro de texto de entrada.
     */
    public void clearText(){
        inputText.setText("");
    }

    /**
     * Agrega un sendListener al boton send.
     * @param sl sendListener a agregar.
     */
    public void addSendListener(sendListener sl){
        sendButton.addActionListener(sl);
    }
}