Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- *
- * @author Frank van Heeswijk
- */
- public class Console extends BorderPane {
- protected final TextArea textArea = new TextArea();
- protected final TextField textField = new TextField();
- protected final List<String> history = new ArrayList<>();
- protected int historyPointer = 0;
- private Consumer<String> onMessageReceivedHandler;
- public Console() {
- textArea.setEditable(false);
- setCenter(textArea);
- textField.addEventHandler(KeyEvent.KEY_RELEASED, keyEvent -> {
- switch (keyEvent.getCode()) {
- case ENTER:
- String text = textField.getText();
- textArea.appendText(text + System.lineSeparator());
- history.add(text);
- historyPointer++;
- if (onMessageReceivedHandler != null) {
- onMessageReceivedHandler.accept(text);
- }
- textField.clear();
- break;
- case UP:
- if (historyPointer == 0) {
- break;
- }
- historyPointer--;
- Platform.runLater(() -> {
- textField.setText(history.get(historyPointer));
- textField.selectAll();
- });
- break;
- case DOWN:
- if (historyPointer == history.size() - 1) {
- break;
- }
- historyPointer++;
- Platform.runLater(() -> {
- textField.setText(history.get(historyPointer));
- textField.selectAll();
- });
- break;
- default:
- break;
- }
- });
- setBottom(textField);
- }
- @Override
- public void requestFocus() {
- super.requestFocus();
- textField.requestFocus();
- }
- public void setOnMessageReceivedHandler(final Consumer<String> onMessageReceivedHandler) {
- this.onMessageReceivedHandler = onMessageReceivedHandler;
- }
- public void clear() {
- Platform.runLater(() -> textArea.clear());
- }
- public void print(final String text) {
- Objects.requireNonNull(text, "text");
- Platform.runLater(() -> textArea.appendText(text));
- }
- public void println(final String text) {
- Objects.requireNonNull(text, "text");
- Platform.runLater(() -> textArea.appendText(text + System.lineSeparator()));
- }
- public void println() {
- Platform.runLater(() -> textArea.appendText(System.lineSeparator()));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement