package basics.gui;

import static basics.gui.toolkit.GU.*;
import java.awt.Dimension;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import basics.gui.toolkit.CommandInputReader;
import basics.gui.toolkit.ConsoleDocument;

public class MainView
{
int             SCR_W, SCR_H, LINE_H;
ConsoleDocument modelConsole = new ConsoleDocument();
JTextPane       console      = textPane(modelConsole);

public MainView(Dimension size, int lh, CommandInputReader inputReader)
{
   SCR_W = (int)size.getWidth();
   SCR_H = (int)size.getHeight();
   LINE_H = lh;
   console.addKeyListener(inputReader);
}

public JScrollPane getView()
{
   JScrollPane paneConsole = scrollpane(console);
   size(paneConsole, SCR_W / 2, SCR_H / 2);
   defaultborder(paneConsole);
   return paneConsole;
}

public void inputFocus()
{
   console.requestFocus();
}

public void appendMessage(String msg)
{
   String txt = console.getText();
   int offset = txt.length();
   if(txt.endsWith("\n")) modelConsole.insertString(offset, "E>" + msg + "\n");
   else modelConsole.insertString(offset, "E>\n" + msg + "\n");
   console.setCaretPosition(console.getText().length());
}

public void cls()
{
   console.setText("");
}

public void clearInput()
{
   String txt = console.getText();
   int idx = txt.lastIndexOf('\n') + 1;
   txt = txt.substring(0, idx);
   console.setText(txt);
   console.setCaretPosition(txt.length());
}

public String getInput()
{
   String txt = console.getText();
   int idx = txt.lastIndexOf('\n', console.getCaretPosition() - 1);
   String input = txt.substring(idx != -1 ? idx : 0, console.getCaretPosition()); // txt.length());
   return input;
}
}
