package application;

import java.util.stream.Collectors;

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.Clipboard;
import javafx.scene.input.ClipboardContent;
import javafx.scene.input.DataFormat;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;


public class Main extends Application {
	private static final String CONTENT = "A\r\nB";
	@Override
	public void start(Stage primaryStage) {
		try {
			Button copy = new Button("Copy To Clipboard");
			copy.setOnAction( e -> {
				final Clipboard clipboard = Clipboard.getSystemClipboard();
				ClipboardContent c = new ClipboardContent();
				c.put(DataFormat.PLAIN_TEXT, CONTENT);
				clipboard.setContent(c);
				System.out.println("copied '" + CONTENT +"'");
				System.out.println("Length: " + CONTENT.length() );
			});

			Button paste = new Button("Paste From Clipboard");
			paste.setOnAction( e -> {
				final Clipboard clipboard = Clipboard.getSystemClipboard();
				System.out.println("Pasted '" + clipboard.getString() + "'" );
				System.out.println("Length: " + clipboard.getString().length() );
				System.out.println(CONTENT.equals(clipboard.getString()));
				System.err.println(clipboard.getString().chars().mapToObj( c -> {
					if( c == '\r' ) {
						return "\\r";
					} else if( c == '\n' ) {
						return "\\n";
					}
					return String.valueOf((char)c);
				}).collect(Collectors.joining()));
			});

			BorderPane root = new BorderPane(new HBox(copy,paste));
			Scene scene = new Scene(root,400,400);
			scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
			primaryStage.setScene(scene);
			primaryStage.show();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		launch(args);
	}
}

