package design.controller.userinput.menus; import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; import design.model.course_search.*; import java.util.List; /* * The main control panel for course searching. */ public class SearchMenu extends Menu { private final CurrentSearchQuery query = new CurrentSearchQuery(); @Override public String getTitle() { return "search menu"; } @Override public List getMenuOptions() { List menuOptions = new java.util.ArrayList<>(); menuOptions.add(new MenuOption("return to main menu", () -> new MainMenu().present())); menuOptions.add(new MenuOption("search...", () -> new CourseSearch(query).present())); menuOptions.add(new MenuOption("sort by difficulty", () -> addFilter(new SortByDifficulty()))); menuOptions.add(new MenuOption("sort by hole count", () -> addFilter(new SortByHoles()))); menuOptions.add(new MenuOption("sort by location", () -> addFilter(new SortByLocation()))); menuOptions.add(new MenuOption("sort by par", () -> addFilter(new SortByPar()))); menuOptions.add(new MenuOption("list filters", () -> { System.out.println("\nYou are filtering by "); System.out.println(query.printFilters()); this.present(); })); menuOptions.add(new MenuOption("clear sorting filters", () -> { query.clearFilters(); System.out.println("\nCleared all filters.\n"); this.present(); })); return menuOptions; } /* * Add a new filter to our filter list */ public void addFilter(CourseSorter filter) { query.addFilter(filter); System.out.println("\nAdded sorting filter.\n"); this.present(); } }