package b4j.helper;

import java.awt.*;
import java.awt.datatransfer.*;
import java.io.File;
import java.util.List;
import java.util.ArrayList;

public class ClipboardFileCopier {

   public static void copyFilesToClipboard(java.util.List<String> filePaths) {
    java.util.List<File> files = new java.util.ArrayList<>();
    for (String path : filePaths) {
        File file = new File(path);
        if (file.exists()) {
            files.add(file);
        }
    }

    if (!files.isEmpty()) {
        FileTransferable ft = new FileTransferable(files);
        Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
        clipboard.setContents(ft, null);
    }
}

	public static void copyFilePathsCrossPlatform(java.util.List<String> filePaths) throws IOException {
    String os = System.getProperty("os.name").toLowerCase();

    if (os.contains("win")) {
        copyFilesToClipboard(filePaths); // méthode existante pour Windows
    } else if (os.contains("mac")) {
        for (String path : filePaths) {
            String command = "echo \"" + path + "\" | pbcopy";
            Runtime.getRuntime().exec(new String[]{"bash", "-c", command});
        }
    } else if (os.contains("nux")) {
        for (String path : filePaths) {
            String command = "echo \"" + path + "\" | xclip -selection clipboard";
            Runtime.getRuntime().exec(new String[]{"bash", "-c", command});
        }
    } else {
        System.out.println("Système non pris en charge.");
    }
}


    static class FileTransferable implements Transferable {
        private final List<File> files;

        public FileTransferable(List<File> files) {
            this.files = files;
        }

        public DataFlavor[] getTransferDataFlavors() {
            return new DataFlavor[] { DataFlavor.javaFileListFlavor };
        }

        public boolean isDataFlavorSupported(DataFlavor flavor) {
            return DataFlavor.javaFileListFlavor.equals(flavor);
        }

        public Object getTransferData(DataFlavor flavor) {
            return files;
        }
    }
}
