|
该版本仍在开发中,尚未被视为稳定。最新稳定版本请使用Spring Shell 3.4.1! |
终端用户界面
终端用户界面是驱动用户界面执行逻辑的主要实现。
创建终端界面
你可以建造终端用户界面手动作,但推荐的方法是使用TerminalUIBuilder它会自动为你配置,并会设置所需的服务。
@Autowired
TerminalUIBuilder builder;
void sample() {
TerminalUI ui = builder.build();
// do something with ui
}
视图配置
终端用户界面有一个辅助方法配置(View),可用于设置
需要与 EventLoop 及其他服务集成。
TerminalUI ui;
void sample() {
BoxView view = new BoxView();
ui.configure(view);
}
运行UI循环
运行终端用户界面执行循环是一种阻塞作。你将需要
一种退出循环的方法,例如Exiting App。
TerminalUI ui;
void sample() {
ui.run();
}
退出应用
如果你想用正常的CTRL-Q键组合退出应用, 你需要为事件注册监听器,并请求中断执行。
@Autowired
Terminal terminal;
void sample() {
TerminalUI ui = new TerminalUI(terminal);
BoxView view = new BoxView();
ui.configure(view);
ui.setRoot(view, true);
EventLoop eventLoop = ui.getEventLoop();
eventLoop.keyEvents()
.subscribe(event -> {
if (event.getPlainKey() == Key.q && event.hasCtrl()) {
eventLoop.dispatch(ShellMessageBuilder.ofInterrupt());
}
});
ui.run();
}
模态视图
终端用户界面支持拥有一个主动的模态视图。模态视角被放置
在所有其他视图之上,并处理所有输入事件。
TerminalUI ui;
void sample() {
DialogView dialog = new DialogView();
// set modal
ui.setModal(dialog);
// clear modal
ui.setModal(null);
}
因为观点不应直接了解任何信息终端界面和
接口ViewService暴露了与模态相关的功能。 |