package com.msksbr.MainFrm.MenuItemDiaog;

import com.msksbr.LoginFrm.ScreenSize;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 * MITDialog 类用于显示 MIT 许可证信息的对话框。
 */
public class MITDialog extends JDialog {
    // 内容面板
    private JPanel contentPane;
    // 确认按钮
    private JButton buttonOK;
    // 显示 MIT 许可证文本的文本面板
    private JTextPane MITPane;

    /**
     * MITDialog 构造函数，初始化对话框并设置相关属性。
     */
    public MITDialog() {
        // 设置对话框标题
        setTitle("开源信息");
        // 设置 MITPane 为不可编辑
        MITPane.setEditable(false);
        // 设置 MITPane 的文本内容为 MIT 许可证信息
        MITPane.setText("MIT License\n" +
                "\n" +
                "Copyright (c) 2024 御坂昴\n" +
                "\n" +
                "Permission is hereby granted, free of charge, to any person obtaining a copy\n" +
                "of this software and associated documentation files (the \"Software\"), to deal\n" +
                "in the Software without restriction, including without limitation the rights\n" +
                "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n" +
                "copies of the Software, and to permit persons to whom the Software is\n" +
                "furnished to do so, subject to the following conditions:\n" +
                "\n" +
                "The above copyright notice and this permission notice shall be included in all\n" +
                "copies or substantial portions of the Software.\n" +
                "\n" +
                "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n" +
                "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n" +
                "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n" +
                "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n" +
                "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n" +
                "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n" +
                "SOFTWARE.\n");
        // 设置对话框的内容面板
        setContentPane(contentPane);
        // 设置对话框为模态对话框
        setModal(true);
        // 设置默认按钮为确认按钮
        getRootPane().setDefaultButton(buttonOK);
        // 设置对话框为非模态对话框
        setModal(false);

        // 为确认按钮添加事件监听器
        buttonOK.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // 点击确认按钮时执行的操作
                onOK();
            }
        });

        // 调整对话框大小以适应内容
        pack();
        // 设置对话框不可调整大小
        setResizable(false);
        // 设置对话框位置
        setLocation();
        // 设置对话框始终在最顶层显示
        setAlwaysOnTop(true);
        // 设置对话框可见
        setVisible(true);
    }

    /**
     * 点击确认按钮时执行的操作，关闭对话框。
     */
    private void onOK() {
        // 关闭对话框
        dispose();
    }

    /**
     * 设置对话框位置，使其居中显示在屏幕上。
     */
    public void setLocation() {
        // 设置对话框位置，使其居中显示在屏幕上
        setLocation(new ScreenSize().width / 2 - getWidth() / 2, new ScreenSize().height / 2 - getHeight() / 2);
    }
}
