シングルセレクト

単一選択コンポーネントは、ユーザーにリストから 1 つの項目を選択するよう求めます。これは、単純なドロップボックスの実装に似ています。次のリストは例を示しています。

public class ComponentCommands {

	@Command(name = "component single", description = "Single selector", group = "Components")
	public String singleSelector() {
		SelectorItem<String> i1 = SelectorItem.of("key1", "value1");
		SelectorItem<String> i2 = SelectorItem.of("key2", "value2");
		List<SelectorItem<String>> items = Arrays.asList(i1, i2);
		SingleItemSelector<String, SelectorItem<String>> component = new SingleItemSelector<>(getTerminal(),
				items, "testSimple", null);
		ResourceLoader resourceLoader = null; // getResourceLoader();
		TemplateExecutor templateExecutor = null; // getTemplateExecutor();
		component.setResourceLoader(resourceLoader);
		component.setTemplateExecutor(templateExecutor);
		SingleItemSelectorContext<String, SelectorItem<String>> context = component
			.run(SingleItemSelectorContext.empty());
		String result = context.getResultItem().flatMap(si -> Optional.ofNullable(si.getItem())).get();
		return "Got value " + result;
	}

}

次のスクリーンキャストは、単一の選択コンポーネントの一般的な出力を示しています。

コンテキストオブジェクトは SingleItemSelectorContext です。次の表に、そのコンテキスト変数を示します。

表 1: SingleItemSelectorContext テンプレート変数
キー 説明

value

コンポーネントが存在する場合の戻り値。

rows

行に名前と選択されたアイテムのマップが含まれる、表示されているアイテム。

model

親コンテキスト変数 ( SelectorComponentContext テンプレート変数を参照)。

アイテムを公開するように定義することで、アイテムを事前に選択できます。これは、デフォルトが分かっていて、ユーザーが Enter を押すだけで選択できる場合に便利です。次のリストは、デフォルトを設定します。

SelectorItem<String> i1 = SelectorItem.of("key1", "value1");
SelectorItem<String> i2 = SelectorItem.of("key2", "value2");
List<SelectorItem<String>> items = Arrays.asList(i1, i2);
SingleItemSelector<String, SelectorItem<String>> component = new SingleItemSelector<>(getTerminal(),
		items, "testSimple", null);
component.setDefaultExpose(i2);