MenuCreator.java

package com.github.quizclash.application.screen.menu;

import com.github.quizclash.application.screen.OptionScreen;
import com.github.quizclash.application.screen.ScreenFactory;
import com.github.quizclash.domain.Displayable;

import java.util.List;

public class MenuCreator {
  private final String menuTitle;
  private final Displayable[] menuItems;
  private final ScreenFactory screenFactory;

  public MenuCreator(String menuTitle, Displayable[] menuItems, ScreenFactory screenFactory) {
    this.menuTitle = menuTitle;
    this.menuItems = menuItems;
    this.screenFactory = screenFactory;
  }

  public int displayAndGetSelection() {
    int selection = 0;
    while (selection <= 0 || selection > menuItems.length) {
      OptionScreen optionScreen = screenFactory.createOptionScreen(menuTitle, List.of(menuItems));
      optionScreen.render();
      selection = optionScreen.getOptionInput().getActionValue();
    }
    return selection;
  }
}