Advertisement
Guest User

Untitled

a guest
Jun 1st, 2014
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.78 KB | None | 0 0
  1. /**
  2.  *
  3.  * @author Frank van Heeswijk
  4.  */
  5. public class Console extends BorderPane {
  6.     protected final TextArea textArea = new TextArea();
  7.     protected final TextField textField = new TextField();
  8.    
  9.     protected final List<String> history = new ArrayList<>();
  10.     protected int historyPointer = 0;
  11.    
  12.     private Consumer<String> onMessageReceivedHandler;
  13.    
  14.     public Console() {
  15.         textArea.setEditable(false);
  16.         setCenter(textArea);
  17.        
  18.         textField.addEventHandler(KeyEvent.KEY_RELEASED, keyEvent -> {
  19.             switch (keyEvent.getCode()) {
  20.                 case ENTER:
  21.                     String text = textField.getText();
  22.                     textArea.appendText(text + System.lineSeparator());
  23.                     history.add(text);
  24.                     historyPointer++;
  25.                     if (onMessageReceivedHandler != null) {
  26.                         onMessageReceivedHandler.accept(text);
  27.                     }
  28.                     textField.clear();
  29.                     break;
  30.                 case UP:
  31.                     if (historyPointer == 0) {
  32.                         break;
  33.                     }
  34.                     historyPointer--;
  35.                     Platform.runLater(() -> {
  36.                         textField.setText(history.get(historyPointer));
  37.                         textField.selectAll();
  38.                     });
  39.                     break;
  40.                 case DOWN:
  41.                     if (historyPointer == history.size() - 1) {
  42.                         break;
  43.                     }
  44.                     historyPointer++;
  45.                     Platform.runLater(() -> {
  46.                         textField.setText(history.get(historyPointer));
  47.                         textField.selectAll();
  48.                     });
  49.                     break;
  50.                 default:
  51.                     break;
  52.             }
  53.         });
  54.         setBottom(textField);
  55.     }
  56.    
  57.     @Override
  58.     public void requestFocus() {
  59.         super.requestFocus();
  60.         textField.requestFocus();
  61.     }
  62.    
  63.     public void setOnMessageReceivedHandler(final Consumer<String> onMessageReceivedHandler) {
  64.         this.onMessageReceivedHandler = onMessageReceivedHandler;
  65.     }
  66.    
  67.     public void clear() {
  68.         Platform.runLater(() -> textArea.clear());
  69.     }
  70.    
  71.     public void print(final String text) {
  72.         Objects.requireNonNull(text, "text");
  73.         Platform.runLater(() -> textArea.appendText(text));
  74.     }
  75.    
  76.     public void println(final String text) {
  77.         Objects.requireNonNull(text, "text");
  78.         Platform.runLater(() -> textArea.appendText(text + System.lineSeparator()));
  79.     }
  80.    
  81.     public void println() {
  82.         Platform.runLater(() -> textArea.appendText(System.lineSeparator()));
  83.     }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement