package com.msksbr.MainFrm;

import com.msksbr.MainFrm.MenuItemDiaog.*;
import com.msksbr.MainFrm.MenuItemDiaog.Adder.BookAdder;
import com.msksbr.MainFrm.MenuItemDiaog.Adder.RentAdder;
import com.msksbr.MainFrm.MenuItemDiaog.Adder.StudentAdder;

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

/**
 * 主窗口菜单栏类，继承自JMenuBar，用于创建和管理菜单栏及其菜单项
 */
public class MenuBar extends JMenuBar {
    // 退出菜单项，用于退出应用程序
    public JMenuItem exitItem;
    // 关于对话框，用于显示关于软件的信息
    protected com.msksbr.MainFrm.MenuItemDiaog.aboutDIalog aboutDIalog;
    // 作者对话框，用于显示软件作者的信息
    protected AuthorDIalog authorDIalog;

    /**
     * 构造方法，初始化菜单栏并添加菜单项
     */
    public MenuBar() {
        // “文件“菜单
        JMenu fileMenu = new JMenu("文件");
        // 创建退出菜单项
        exitItem = new JMenuItem("退出");
        // 将退出菜单项添加到文件菜单
        fileMenu.add(exitItem);

        // ”查询“菜单
        JMenu searchMenu = new JMenu("查询");
        // 创建查询图书信息菜单项
        JMenuItem bookSearch = new JMenuItem("查询图书信息");
        // 为查询图书信息菜单项添加事件监听器，当点击时弹出图书信息查询对话框
        bookSearch.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new SearchDIalog("books");
            }
        });
        // 创建查询学生信息菜单项
        JMenuItem studentSearch = new JMenuItem("查询学生信息");
        // 为查询学生信息菜单项添加事件监听器，当点击时弹出学生信息查询对话框
        studentSearch.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                new SearchDIalog("students");
            }
        });
        // 创建查询借阅信息菜单项
        JMenuItem rentSearch = new JMenuItem("查询借阅信息");
        // 为查询借阅信息菜单项添加事件监听器，当点击时弹出借阅信息查询对话框
        rentSearch.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                new SearchDIalog("rents");
            }
        });
        // 将查询图书信息菜单项添加到查询菜单
        searchMenu.add(bookSearch);
        // 将查询学生信息菜单项添加到查询菜单
        searchMenu.add(studentSearch);
        // 将查询借阅信息菜单项添加到查询菜单
        searchMenu.add(rentSearch);

        // ”添加“菜单
        JMenu addMenu = new JMenu("添加");
        // 创建添加图书信息菜单项
        JMenuItem bookAdd = new JMenuItem("添加图书信息");
        // 为添加图书信息菜单项添加事件监听器，当点击时弹出图书信息添加对话框
        bookAdd.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                new BookAdder();
            }
        });
        // 创建添加学生信息菜单项
        JMenuItem studentAdd = new JMenuItem("添加学生信息");
        // 为添加学生信息菜单项添加事件监听器，当点击时弹出学生信息添加对话框
        studentAdd.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                new StudentAdder();
            }
        });
        // 创建添加借阅信息菜单项
        JMenuItem rentAdd = new JMenuItem("添加借阅信息");
        // 为添加借阅信息菜单项添加事件监听器，当点击时弹出借阅信息添加对话框
        rentAdd.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                new RentAdder();
            }
        });
        // 将添加图书信息菜单项添加到添加菜单
        addMenu.add(bookAdd);
        // 将添加学生信息菜单项添加到添加菜单
        addMenu.add(studentAdd);
        // 将添加借阅信息菜单项添加到添加菜单
        addMenu.add(rentAdd);

        // ”删除“菜单
        JMenu removeMenu = new JMenu("删除");
        // 创建删除图书信息菜单项
        JMenuItem bookRemove = new JMenuItem("删除图书信息");
        // 为删除图书信息菜单项添加事件监听器，当点击时弹出图书信息删除对话框
        bookRemove.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                new Remover("books");
            }
        });
        // 创建删除学生信息菜单项
        JMenuItem studentRemove = new JMenuItem("删除学生信息");
        // 为删除学生信息菜单项添加事件监听器，当点击时弹出学生信息删除对话框
        studentRemove.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                new Remover("students");
            }
        });
        // 创建删除借阅信息菜单项
        JMenuItem rentRemove = new JMenuItem("删除借阅信息");
        // 为删除借阅信息菜单项添加事件监听器，当点击时弹出借阅信息删除对话框
        rentRemove.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                new Remover("rents");
            }
        });
        // 将删除图书信息菜单项添加到删除菜单
        removeMenu.add(bookRemove);
        // 将删除学生信息菜单项添加到删除菜单
        removeMenu.add(studentRemove);
        // 将删除借阅信息菜单项添加到删除菜单
        removeMenu.add(rentRemove);

        // ”关于“菜单
        JMenu aboutMenu = new JMenu("关于");
        // 创建关于软件菜单项
        JMenuItem about = new JMenuItem("关于软件");
        // 创建关于软件的对话框
        aboutDIalog = new aboutDIalog();
        // 为关于软件菜单项添加事件监听器，当点击时显示关于软件的对话框
        about.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                aboutDIalog.setVisible(true);
            }
        });
        // 创建作者菜单项
        JMenuItem author = new JMenuItem("作者");
        // 创建软件作者的对话框
        authorDIalog = new AuthorDIalog();
        // 为作者菜单项添加事件监听器，当点击时显示软件作者的对话框
        author.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                authorDIalog.setVisible(true);
            }
        });
        // 创建MIT许可证菜单项
        JMenuItem MITLicense = new JMenuItem("MIT许可证");
        // 为MIT许可证菜单项添加事件监听器，当点击时显示MIT许可证的对话框
        MITLicense.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                new MITDialog();
            }
        });
        // 创建鸣谢菜单项
        JMenuItem thanksItem = new JMenuItem("鸣谢");
        // 为鸣谢菜单项添加事件监听器，当点击时显示鸣谢信息的对话框
        thanksItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        new AcademyThanksDialog();
                    }
                }
        );
        // 将关于软件菜单项添加到关于菜单
        aboutMenu.add(about);
        // 将作者菜单项添加到关于菜单
        aboutMenu.add(author);
        // 将MIT许可证菜单项添加到关于菜单
        aboutMenu.add(MITLicense);
        // 将鸣谢菜单项添加到关于菜单
        aboutMenu.add(thanksItem);

        //将菜单加入菜单栏
        // 将文件菜单添加到菜单栏
        add(fileMenu);
        // 将查询菜单添加到菜单栏
        add(searchMenu);
        // 将添加菜单添加到菜单栏
        add(addMenu);
        // 将删除菜单添加到菜单栏
        add(removeMenu);
        // 将关于菜单添加到菜单栏
        add(aboutMenu);
    }
}
