このバージョンはまだ開発中であり、まだ安定しているとは見なされていません。最新の安定バージョンについては、Spring Shell 3.4.1 を使用してください! |
ターミナル UI
TerminalUI は、UI 実行ロジックを駆動するための主要な実装です。
ターミナル UI の作成
TerminalUI を手動でビルドすることもできますが、自動的に構成され、必要なサービスを設定する TerminalUIBuilder を使用することをお勧めします。
@Autowired
TerminalUIBuilder builder;
void sample() {
TerminalUI ui = builder.build();
// do something with ui
}ビューの構成
TerminalUI にはヘルパーメソッドの configure(View) があり、イベントループやその他のサービスに必要な統合を設定するために使用できます。
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 は、1 つのアクティブなモーダルビューをサポートします。モーダルビューは他のすべてのビューの上に配置され、すべての入力イベントを受け取ります。
TerminalUI ui;
void sample() {
DialogView dialog = new DialogView();
// set modal
ui.setModal(dialog);
// clear modal
ui.setModal(null);
} ビューは TerminalUi について直接何も知る必要がないため、インターフェース ViewService はモーダル関連の関数を公開します。 |