package org.aohe.show;

import cn.hutool.core.io.resource.ResourceUtil;
import org.aohe.constant.SocketEnum;
import org.aohe.web.SocketUtils;

import javax.swing.*;
import java.awt.*;

public class TrayFrame {

    public void create() throws Exception {
        //创建Socket连接，默认是执行了start操作
        SocketUtils.start(SocketEnum.SCAN_SOCKET);

        // 确保事件调度线程（EDT）创建和显示GUI
        SwingUtilities.invokeLater(() -> {
            // 检查系统是否支持系统托盘
            if (!SystemTray.isSupported()) {
                System.out.println("系统托盘不被支持");
                return;
            }

            // 获取系统托盘实例
            SystemTray tray = SystemTray.getSystemTray();

            // 创建一个图像，作为托盘图标

            Image image = Toolkit.getDefaultToolkit().getImage(ResourceUtil.getResource("ah.png").getFile());

            // 创建一个弹出菜单
            PopupMenu popup = new PopupMenu();

            // 创建菜单项
            MenuItem aboutItem = new MenuItem("About");
            //CheckboxMenuItem cb1 = new CheckboxMenuItem("Enable Message"); // 使用CheckboxMenuItem替换JCheckBoxMenuItem
            MenuItem exitItem = new MenuItem("Exit");
            MenuItem startServiceItem = new MenuItem("Start Service");
            MenuItem stopServiceItem = new MenuItem("Stop Service");

            // 初始化按钮状态
            startServiceItem.setEnabled(false);
            stopServiceItem.setEnabled(true);

            // 将菜单项添加到弹出菜单
            popup.add(aboutItem);
            //popup.add(cb1);
            popup.addSeparator();
            popup.add(startServiceItem);
            popup.add(stopServiceItem);
            popup.addSeparator();
            popup.add(exitItem);

            // 创建托盘图标
            TrayIcon trayIcon = new TrayIcon(image, "Scan Tray Program", popup);

            // 设置托盘图标大小
            trayIcon.setImageAutoSize(true);

            // 添加托盘图标到系统托盘
            try {
                tray.add(trayIcon);
            } catch (AWTException e) {
                System.out.println("无法添加托盘图标");
                return;
            }

            // 添加事件监听器
            aboutItem.addActionListener(e -> JOptionPane.showMessageDialog(null, "AoHe 的扫描托盘程序"));

//            cb1.addItemListener(e -> {
//                if (cb1.getState()) {
//                    System.out.println("通知已启用");
//                } else {
//                    System.out.println("通知已禁用");
//                }
//            });

            startServiceItem.addActionListener(e -> {
                try {
                    SocketUtils.start(SocketEnum.SCAN_SOCKET);
                } catch (Exception ex) {
                    throw new RuntimeException(ex);
                }
                startServiceItem.setEnabled(false);
                stopServiceItem.setEnabled(true);
                System.out.println("服务已启动");
            });

            stopServiceItem.addActionListener(e -> {
                SocketUtils.safeStop(SocketEnum.SCAN_SOCKET);
                startServiceItem.setEnabled(true);
                stopServiceItem.setEnabled(false);
                System.out.println("服务已停止");
            });

            exitItem.addActionListener(e -> {
                tray.remove(trayIcon);
                SocketUtils.safeStop(SocketEnum.SCAN_SOCKET);
                System.exit(0);
            });
        });
    }

}

