增加 AbstractMenuBuilder.java 的注释

This commit is contained in:
许轲 2023-10-11 02:08:16 +08:00
parent b624d11c7d
commit cf453a012c

View File

@ -0,0 +1,138 @@
package org.jcnc.jnotepad.api.core.component.stage;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.*;
/**
* 抽象菜单建造者类
*
* <p>
* 该抽象类用于构建菜单包括菜单项单选菜单项复选菜单项分割线等
* 子类应继承此类以实现具体的菜单构建逻辑
* </p>
*
* @param <B> 建造者类型
* @param <T> 构建结果类型
*
* @author gewuyou
*/
public abstract class AbstractMenuBuilder<B, T> {
/**
* 获取子类的建造者实例
*
* @return 建造者实例
*/
protected abstract B getBuilder();
/**
* 获取菜单的菜单项列表
*
* @return 菜单项列表
*/
protected abstract ObservableList<MenuItem> getItems();
/**
* 添加菜单项
*
* @param label 菜单项名称
* @param eventHandler 事件处理器
* @return 当前建造者实例
*/
public B addMenuItem(String label, EventHandler<ActionEvent> eventHandler) {
MenuItem menuItem = new MenuItem(label);
menuItem.setOnAction(eventHandler);
getItems().add(menuItem);
return getBuilder();
}
/**
* 添加菜单项
*
* @param label 菜单项名称
* @param eventHandler 事件处理器
* @param disable 是否禁用
* @return 当前建造者实例
*/
public B addMenuItem(String label, EventHandler<ActionEvent> eventHandler, boolean disable) {
if (!disable) {
return getBuilder();
}
MenuItem menuItem = new MenuItem(label);
menuItem.setOnAction(eventHandler);
getItems().add(menuItem);
return getBuilder();
}
/**
* 添加单选菜单项
*
* @param label 菜单项名称
* @param eventHandler 事件处理器
* @return 当前建造者实例
*/
public B addRadioMenuItem(String label, EventHandler<ActionEvent> eventHandler) {
RadioMenuItem menuItem = new RadioMenuItem(label);
menuItem.setOnAction(eventHandler);
getItems().add(menuItem);
return getBuilder();
}
/**
* 添加复选菜单项
*
* @param label 菜单项名称
* @param eventHandler 事件处理器
* @return 当前建造者实例
*/
public B addCheckMenuItem(String label, EventHandler<ActionEvent> eventHandler) {
CheckMenuItem menuItem = new CheckMenuItem(label);
menuItem.setOnAction(eventHandler);
getItems().add(menuItem);
return getBuilder();
}
/**
* 添加菜单
*
* @param menu 菜单
* @return 当前建造者实例
*/
public B addMenu(Menu menu) {
getItems().add(menu);
return getBuilder();
}
/**
* 添加菜单
*
* @param menu 菜单
* @param disable 是否禁用
* @return 当前建造者实例
*/
public B addMenu(Menu menu, boolean disable) {
if (!disable) {
return getBuilder();
}
getItems().add(menu);
return getBuilder();
}
/**
* 添加分割线
*
* @return 当前建造者实例
*/
public B addSeparatorMenuItem() {
getItems().add(new SeparatorMenuItem());
return getBuilder();
}
/**
* 构建菜单
*
* @return 构建的菜单
*/
public abstract T build();
}