|
@@ -3,31 +3,80 @@ package me.hammerle.console;
|
|
|
import java.awt.Color;
|
|
|
import java.awt.event.KeyAdapter;
|
|
|
import java.awt.event.KeyEvent;
|
|
|
+import java.util.ArrayList;
|
|
|
import me.hammerle.code.ScriptControl;
|
|
|
|
|
|
public class InputBox extends BlackBox
|
|
|
{
|
|
|
+ private final ArrayList<String> history;
|
|
|
+ private int historyPosition;
|
|
|
+
|
|
|
public InputBox(Console c)
|
|
|
{
|
|
|
super(c);
|
|
|
+ history = new ArrayList<>();
|
|
|
+ historyPosition = -1;
|
|
|
area.addKeyListener(new KeyAdapter()
|
|
|
{
|
|
|
@Override
|
|
|
public void keyPressed(KeyEvent e)
|
|
|
{
|
|
|
- if(e.getKeyCode() == KeyEvent.VK_ENTER)
|
|
|
+ //System.out.println(e.getKeyCode());
|
|
|
+ switch(e.getKeyCode())
|
|
|
{
|
|
|
- if(e.isShiftDown())
|
|
|
+ case KeyEvent.VK_ENTER:
|
|
|
{
|
|
|
- insertAtCaret("\n", null);
|
|
|
- e.consume();
|
|
|
+ if(e.isShiftDown())
|
|
|
+ {
|
|
|
+ insertAtCaret("\n", null);
|
|
|
+ e.consume();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ConsoleUtils.sendMessage("> " + area.getText(), Color.GRAY);
|
|
|
+ history.add(area.getText());
|
|
|
+ ScriptControl.startScriptFromCode(area.getText());
|
|
|
+ area.setText(null);
|
|
|
+ e.consume();
|
|
|
+ historyPosition = -1;
|
|
|
+ }
|
|
|
+ break;
|
|
|
}
|
|
|
- else
|
|
|
+ case KeyEvent.VK_UP:
|
|
|
{
|
|
|
- ConsoleUtils.sendMessage("> " + area.getText(), Color.GRAY);
|
|
|
- ScriptControl.startScriptFromCode(area.getText());
|
|
|
- area.setText(null);
|
|
|
- e.consume();
|
|
|
+ if(e.isShiftDown())
|
|
|
+ {
|
|
|
+ if(historyPosition == -1)
|
|
|
+ {
|
|
|
+ historyPosition = history.size();
|
|
|
+ }
|
|
|
+ else if(historyPosition == 0)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ historyPosition--;
|
|
|
+ area.setText(history.get(historyPosition));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case KeyEvent.VK_DOWN:
|
|
|
+ {
|
|
|
+ if(e.isShiftDown())
|
|
|
+ {
|
|
|
+ if(historyPosition == -1)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ else if(historyPosition >= history.size() - 1)
|
|
|
+ {
|
|
|
+ historyPosition = -1;
|
|
|
+ area.setText("");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ historyPosition++;
|
|
|
+ area.setText(history.get(historyPosition));
|
|
|
+ }
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
}
|