diff options
| author | WillemDalton <willemhdalton@gmail.com> | 2025-10-05 19:02:08 -0400 |
|---|---|---|
| committer | WillemDalton <willemhdalton@gmail.com> | 2025-10-05 19:02:08 -0400 |
| commit | 3cc12738542bd7267606185ded60293d0acd7af6 (patch) | |
| tree | 5e31f47ae27fb70ce57f7a8e66779d89c8a940cd /src/main/java/design | |
| parent | 9b67c5fa4c53a558a32926ab04b59def510396ab (diff) | |
| download | designproject-design-6-3cc12738542bd7267606185ded60293d0acd7af6.tar.gz designproject-design-6-3cc12738542bd7267606185ded60293d0acd7af6.tar.bz2 designproject-design-6-3cc12738542bd7267606185ded60293d0acd7af6.zip | |
more work on UI for the course searching
Diffstat (limited to 'src/main/java/design')
8 files changed, 94 insertions, 6 deletions
diff --git a/src/main/java/design/controller/userinput/menus/FiltersMenu.java b/src/main/java/design/controller/userinput/menus/FiltersMenu.java new file mode 100644 index 0000000..434e395 --- /dev/null +++ b/src/main/java/design/controller/userinput/menus/FiltersMenu.java @@ -0,0 +1,42 @@ +package design.controller.userinput.menus; + +import design.controller.userinput.Menu; +import design.controller.userinput.MenuOption; +import design.model.course_search.*; + +import java.util.ArrayList; +import java.util.List; + +public class FiltersMenu extends Menu { + private final List<CourseSorter> filters = new ArrayList<CourseSorter>(); + + @Override + public String getTitle() { + return "filter menu"; + } + + public void addFilter(CourseSorter filter) { + filters.add(filter); + System.out.println("\nAdded filter.\n"); + new SearchMenu().present(); + } + + public void clearFilters() { + filters.clear(); + } + + @Override + public List<MenuOption> getMenuOptions() { + String filterString = "nothing"; + + for (CourseSorter f : filters) + { + filterString += "-->" + f.toString(); + } + + System.out.println("You are filtering by " + filterString); + return List.of( + new MenuOption("return to search", (c) -> new SearchMenu().present()) + ); + } +} diff --git a/src/main/java/design/controller/userinput/menus/SearchMenu.java b/src/main/java/design/controller/userinput/menus/SearchMenu.java index f02de09..cc91795 100644 --- a/src/main/java/design/controller/userinput/menus/SearchMenu.java +++ b/src/main/java/design/controller/userinput/menus/SearchMenu.java @@ -2,6 +2,10 @@ package design.controller.userinput.menus; import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; +import design.model.course_search.SortByDifficulty; +import design.model.course_search.SortByHoles; +import design.model.course_search.SortByLocation; +import design.model.course_search.SortByPar; import java.util.List; @@ -17,11 +21,11 @@ public class SearchMenu extends Menu { return List.of( new MenuOption("return to main menu", (a) -> new MainMenu().present()), new MenuOption("search...", (a) -> new SelectCourse().present()), - new MenuOption("add difficulty filter...", (a) -> {}), - new MenuOption("add hole count filter...", (a) -> {}), - new MenuOption("add location filter...", (a) -> {}), - new MenuOption("add par filter...", (a) -> {}), - new MenuOption("list filters", (a) -> {}), + new MenuOption("add difficulty filter...", (a) -> new FiltersMenu().addFilter(new SortByDifficulty())), + new MenuOption("add hole count filter...", (a) -> new FiltersMenu().addFilter(new SortByHoles())), + new MenuOption("add location filter...", (a) -> new FiltersMenu().addFilter(new SortByLocation())), + new MenuOption("add par filter...", (a) -> new FiltersMenu().addFilter(new SortByPar())), + new MenuOption("list filters", (a) -> new FiltersMenu().present()), new MenuOption("clear all filters", (a) -> {}) ); } diff --git a/src/main/java/design/model/course_search/CourseSorter.java b/src/main/java/design/model/course_search/CourseSorter.java index 7549645..86c48a5 100644 --- a/src/main/java/design/model/course_search/CourseSorter.java +++ b/src/main/java/design/model/course_search/CourseSorter.java @@ -8,4 +8,5 @@ import java.util.List; */ public interface CourseSorter { public void sortCourses(List<ICourse> courses); + public String toString(); }
\ No newline at end of file diff --git a/src/main/java/design/model/course_search/SortByDifficulty.java b/src/main/java/design/model/course_search/SortByDifficulty.java index 8c3251c..7b72b84 100644 --- a/src/main/java/design/model/course_search/SortByDifficulty.java +++ b/src/main/java/design/model/course_search/SortByDifficulty.java @@ -8,8 +8,16 @@ import java.util.Comparator; * Willem Dalton */ public class SortByDifficulty implements CourseSorter { + + @Override public void sortCourses(List<ICourse> courses) { courses.sort(Comparator.comparing(ICourse::getDifficultyRating)); } + + @Override + public String toString() + { + return "Difficulty"; + } }
\ No newline at end of file diff --git a/src/main/java/design/model/course_search/SortByHoles.java b/src/main/java/design/model/course_search/SortByHoles.java index b1badab..76e2649 100644 --- a/src/main/java/design/model/course_search/SortByHoles.java +++ b/src/main/java/design/model/course_search/SortByHoles.java @@ -8,8 +8,17 @@ import java.util.Comparator; * Willem Dalton */ public class SortByHoles implements CourseSorter { + + @Override public void sortCourses(List<ICourse> courses) { courses.sort(Comparator.comparing(ICourse::getHoleCount)); } -}
\ No newline at end of file + + @Override + public String toString() + { + return "Hole Count"; + } + +} diff --git a/src/main/java/design/model/course_search/SortByLocation.java b/src/main/java/design/model/course_search/SortByLocation.java index 0d8a8d2..e5df839 100644 --- a/src/main/java/design/model/course_search/SortByLocation.java +++ b/src/main/java/design/model/course_search/SortByLocation.java @@ -8,8 +8,16 @@ import java.util.Comparator; * Willem Dalton */ public class SortByLocation implements CourseSorter { + + @Override public void sortCourses(List<ICourse> courses) { courses.sort(Comparator.comparing(ICourse::getLocation)); } + + @Override + public String toString() + { + return "Location"; + } }
\ No newline at end of file diff --git a/src/main/java/design/model/course_search/SortByName.java b/src/main/java/design/model/course_search/SortByName.java index 2847d3e..cee3bcc 100644 --- a/src/main/java/design/model/course_search/SortByName.java +++ b/src/main/java/design/model/course_search/SortByName.java @@ -8,8 +8,16 @@ import java.util.Comparator; * Willem Dalton */ public class SortByName implements CourseSorter { + + @Override public void sortCourses(List<ICourse> courses) { courses.sort(Comparator.comparing(ICourse::getName)); } + + @Override + public String toString() + { + return "Name"; + } }
\ No newline at end of file diff --git a/src/main/java/design/model/course_search/SortByPar.java b/src/main/java/design/model/course_search/SortByPar.java index 9a3eaf9..cc402b8 100644 --- a/src/main/java/design/model/course_search/SortByPar.java +++ b/src/main/java/design/model/course_search/SortByPar.java @@ -8,8 +8,16 @@ import java.util.Comparator; * Willem Dalton */ public class SortByPar implements CourseSorter { + + @Override public void sortCourses(List<ICourse> courses) { courses.sort(Comparator.comparing(ICourse::getTotalPar)); } + + @Override + public String toString() + { + return "Total Par"; + } }
\ No newline at end of file |
