增加 AbstractMenuBuilder.java 的注释
This commit is contained in:
parent
b624d11c7d
commit
cf453a012c
@ -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();
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user