import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.input.KeyCombination;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

/**
 * @author dvhaus gmbh in cooperation with intechcore gmbh
 */
public class Main extends Application {

    public static void main(final String[] args) {
        launch(args);
    }

    @Override
    public void start(final Stage primaryStage) {

        final BorderPane root = new BorderPane();
        root.setPrefSize(400, 200);

        final TextArea textArea = new TextArea("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.");

        final KeyCombination ctrlF5 = KeyCombination.keyCombination("ctrl+F5");
        final KeyCombination ctrlR = KeyCombination.keyCombination("ctrl+r");

        textArea.addEventHandler(KeyEvent.KEY_PRESSED, event -> {
            if (ctrlF5.match(event) || ctrlR.match(event)) {
                int cpNext = textArea.getCaretPosition() + 5;
                if (cpNext > textArea.getText().length() - 1) {
                    cpNext = 0;
                }
                textArea.positionCaret(cpNext);
                event.consume();
            }
        });
        textArea.setWrapText(true);

        root.setCenter(textArea);

        primaryStage.setTitle("Test MoveCaret 1");
        primaryStage.setScene(new Scene(root));
        primaryStage.show();
    }
}
