TerminalUI
是驱动 UI 执行逻辑的主要实现。
创建 TerminalUI
您可以手动构建,但推荐的方法是使用 build 为您自动配置,并将设置所需的服务。TerminalUI
TerminalUIBuilder
@Autowired
TerminalUIBuilder builder;
void sample() {
TerminalUI ui = builder.build();
// do something with ui
}
配置视图
TerminalUI
有一个辅助方法 configure(View),可用于设置
需要集成到 EventLoop 和其他服务中。
TerminalUI ui;
void sample() {
BoxView view = new BoxView();
ui.configure(view);
}
运行 UI 循环
运行执行循环是一个阻塞操作。你将需要
一种退出循环的方法,例如退出应用程序。TerminalUI
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
支持有一个活动的模态视图。放置模态视图
在所有其他视图之上,并接受所有输入事件。
TerminalUI ui;
void sample() {
DialogView dialog = new DialogView();
// set modal
ui.setModal(dialog);
// clear modal
ui.setModal(null);
}
由于视图不应直接了解 和
接口公开模态相关函数。TerminalUi ViewService |
由于视图不应直接了解 和
接口公开模态相关函数。TerminalUi ViewService |