/*
 *  Kolage
 */

package easycomm;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.EtchedBorder;
import javax.swing.text.DefaultCaret;

public class ClientGUI {

    JButton button;
    static JTextArea messageMemo;
    static JTextArea clientMemo;
    static JLabel label;
    static JTextField inputArea;

    class ButtonListener implements ActionListener{
        public void actionPerformed(ActionEvent e) {
            Client.sendMessage("NEW " + inputArea.getText());
            inputArea.setText("");
        }
    }

    class MouseeListener implements MouseListener{
        public void mouseClicked(MouseEvent e) {
            inputArea.setText("");
        }

        public void mousePressed(MouseEvent e) {
        }

        public void mouseReleased(MouseEvent e) {
        }

        public void mouseEntered(MouseEvent e) {
        }

        public void mouseExited(MouseEvent e) {
        }
    }


    static void messageMemoChange(String text) {
        messageMemo.setText(text);
    }

    static void labelChange(String text) {
        label.setText(text);
    }

    static void clientMemoChange(String text) {
        clientMemo.setText(text);
    }

    public ClientGUI() {

        JFrame.setDefaultLookAndFeelDecorated(false);
        JFrame frame = new JFrame("EasyComm klient");
        frame.setBounds(10, 10, 300, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container contnr = frame.getContentPane();
        contnr.setLayout(new BorderLayout(5, 5));

        JPanel panel = new JPanel(new BorderLayout(5,5));

        button = new JButton("Odeslat");
        button.setPreferredSize(new Dimension(100, 30));

        messageMemo = new JTextArea("... Prichozi zpravy ...");
        messageMemo.setEditable(true);
        messageMemo.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
        JScrollPane scrollMsg = new JScrollPane(messageMemo);
        DefaultCaret caret = (DefaultCaret)messageMemo.getCaret();
        caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);

        clientMemo = new JTextArea("Klienti");
        clientMemo.setEditable(false);
        clientMemo.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
        JScrollPane scrollClient = new JScrollPane(clientMemo);
        clientMemo.setLineWrap(true);

        JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
                           scrollClient, scrollMsg);

        splitPane.setOneTouchExpandable(true);
        splitPane.setDividerLocation(150);

        scrollMsg.setMinimumSize(new Dimension(300, 300));
        scrollClient.setMinimumSize(new Dimension(150, 300));

        splitPane.setPreferredSize(new Dimension(500,300));
        
        label = new JLabel("Connected to server ...");
        inputArea = new JTextField("Text zpravy");
        inputArea.setFont(new Font("Arial", 1, 14));

        button.addActionListener(new ButtonListener());
        inputArea.addActionListener(new ButtonListener());
        inputArea.addMouseListener(new MouseeListener());

        panel.add(inputArea);
        panel.add(button, BorderLayout.EAST);

        contnr.add(splitPane);
        contnr.add(label, BorderLayout.NORTH);
        contnr.add(panel, BorderLayout.SOUTH);

        DefaultListModel model = new DefaultListModel();
        JList dataList = new JList(model);

        frame.pack();
        frame.setVisible(true);
    }
}
