package com.houarizegai.chatfx.controllers;

import static com.houarizegai.chatfx.bot.ChatBot.responseBot;
import com.jfoenix.controls.JFXListView;
import com.jfoenix.controls.JFXTextField;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.Label;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;

public class ChatController implements Initializable {

    @FXML
    private VBox root;

    @FXML
    private JFXListView msgNodes;

    @FXML
    private JFXTextField msgField;

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        root.setOnKeyPressed(e -> {
            if (e.getCode().equals(KeyCode.ENTER)) {
                sendMsg();
            }
        });
    }

    @FXML
    private void sendMsg() {
        if(msgField.getText() == null || msgField.getText().trim().isEmpty())
            return;
        
        addMsg(msgField.getText().trim(), false);
        String msg = responseBot.get(msgField.getText().trim().toLowerCase());
        msgField.setText(null);
        addMsg((msg == null) ? "what ?" : msg, true);
        
    }

    @FXML
    private void emojiChooser() {

    }

    private void addMsg(String msg, boolean senderIsRobot) {
        Label lbl = new Label(msg);
        lbl.setStyle("-fx-font-size: 16px;"
                + "-fx-background-color: #" + ((senderIsRobot) ? "B00020" : "2196f3") + ";"
                + "-fx-text-fill: #FFF;"
                + "-fx-background-radius:25;"
                + "-fx-padding: 10px;");
        lbl.setWrapText(true);
        lbl.setMaxWidth(400);
        HBox container = new HBox();
        container.setPrefHeight(40);
        container.setAlignment(Pos.CENTER_LEFT);
        container.setPadding(new Insets(0, 10, 0, 10));
        container.setSpacing(10);
        container.getChildren().add(lbl);

        msgNodes.getItems().add(container);
    }
}