// Path: src/main/java/ninja/eivind/hotsreplayuploader/files/tempwatcher/BattleLobbyTempDirectories.java
// public class BattleLobbyTempDirectories {
// 
//     private final File root;
//     private final File remainder;
// 
//     public BattleLobbyTempDirectories(File root, File remainder) {
//         this.root = root;
//         this.remainder = remainder;
//     }
// 
//     public File getRoot() {
//         return root;
//     }
// 
//     public File getRemainder() {
//         return remainder;
//     }
// }
// 
// Path: src/main/java/ninja/eivind/hotsreplayuploader/utils/Constants.java
// public final class Constants {
// 
//     public static final String APPLICATION_NAME = "HotS Replay Uploader";
// 
//     private Constants() {
//     }
// }


import javafx.application.Platform;
import javafx.stage.Stage;
import ninja.eivind.hotsreplayuploader.files.tempwatcher.BattleLobbyTempDirectories;
import ninja.eivind.hotsreplayuploader.utils.Constants;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.io.File;
import java.net.URL;
        // Add listeners
        trayIcon.addMouseListener(new TrayMouseListenerBase() {
            @Override
            public void mouseClicked(final MouseEvent e) {
                if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() % 2 == 0) {
                    openAction.run();
                }
            }
        });
        showItem.addActionListener(e -> openAction.run());
        exitItem.addActionListener(event -> shutdown());
        return trayIcon;

    }

    /**
     * Shuts down the application by delegating service cleanups
     * to the Application Thread.
     */
    default void shutdown() {
        // let JavaFX shut close its services gracefully
        Platform.exit();
    }

    void browse(String uri);

    URL getLogoUrl();

    boolean isPreloaderSupported();

// Path: src/main/java/ninja/eivind/hotsreplayuploader/files/tempwatcher/BattleLobbyTempDirectories.java
// public class BattleLobbyTempDirectories {
// 
//     private final File root;
//     private final File remainder;
// 
//     public BattleLobbyTempDirectories(File root, File remainder) {
//         this.root = root;
//         this.remainder = remainder;
//     }
// 
//     public File getRoot() {
//         return root;
//     }
// 
//     public File getRemainder() {
//         return remainder;
//     }
// }
// 
// Path: src/main/java/ninja/eivind/hotsreplayuploader/utils/Constants.java
// public final class Constants {
// 
//     public static final String APPLICATION_NAME = "HotS Replay Uploader";
// 
//     private Constants() {
//     }
// }


// Path: src/main/java/ninja/eivind/hotsreplayuploader/services/platform/PlatformService.java
import javafx.application.Platform;
import javafx.stage.Stage;
import ninja.eivind.hotsreplayuploader.files.tempwatcher.BattleLobbyTempDirectories;
import ninja.eivind.hotsreplayuploader.utils.Constants;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.io.File;
import java.net.URL;

        // Add listeners
        trayIcon.addMouseListener(new TrayMouseListenerBase() {
            @Override
            public void mouseClicked(final MouseEvent e) {
                if (e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() % 2 == 0) {
                    openAction.run();
                }
            }
        });
        showItem.addActionListener(e -> openAction.run());
        exitItem.addActionListener(event -> shutdown());
        return trayIcon;

    }

    /**
     * Shuts down the application by delegating service cleanups
     * to the Application Thread.
     */
    default void shutdown() {
        // let JavaFX shut close its services gracefully
        Platform.exit();
    }

    void browse(String uri);

    URL getLogoUrl();

    boolean isPreloaderSupported();

    BattleLobbyTempDirectories getBattleLobbyTempDirectories();