commit 1757c8042b7d0260da04e75b2d26c685f201bd0c
parent 5cdc5e68839f3a145fcfea12d77a0d326d501560
Author: William Lindholm <a22willi@student.his.se>
Date: Wed, 29 Mar 2023 13:52:29 +0200
Changed sort to use separate comparator classes
Diffstat:
4 files changed, 49 insertions(+), 22 deletions(-)
diff --git a/OOP2023_a22willi_a21liltr_assignment2/src/assignment2/TaskHandler.java b/OOP2023_a22willi_a21liltr_assignment2/src/assignment2/TaskHandler.java
@@ -14,7 +14,7 @@ import javax.swing.SwingUtilities;
import se.his.it401g.todo.Task;
import se.his.it401g.todo.TaskListener;
-public class TaskHandler implements TaskListener, Comparator<Task> {
+public class TaskHandler implements TaskListener {
private JPanel taskList;
private JScrollPane scrollPane;
private JLabel taskProgress;
@@ -62,16 +62,6 @@ public class TaskHandler implements TaskListener, Comparator<Task> {
return taskList;
}
- /**
- * Sorts components in taskList according to specific requirements.
- * @param sortingOption
- */
- @Override
- public int compare(Object o1, Object o2) {
- // TODO Auto-generated method stub
- return 0;
- }
-
public void sort(String sortingOption) {
List<Task> sortedList = new ArrayList<Task>();
for (int i = 0; i < taskList.getComponentCount(); i++) {
@@ -81,21 +71,13 @@ public class TaskHandler implements TaskListener, Comparator<Task> {
switch (sortingOption)
{
case "Alphabetical":
- Collections.sort(sortedList,
- (o1, o2) ->
- o1.getText().toLowerCase()
- .compareTo(o2.getText().toLowerCase()));
+ Collections.sort(sortedList, new comparators.SortByName());
break;
case "Type":
- Collections.sort(sortedList,
- (o1, o2) ->
- o1.getTaskType()
- .compareTo(o2.getTaskType()));
+ Collections.sort(sortedList, new comparators.SortByType());
break;
case "Completed":
- Collections.sort(sortedList,
- (o1, o2) ->
- Boolean.compare(o1.isComplete(), o2.isComplete()));
+ Collections.sort(sortedList, new comparators.SortByState());
break;
default:
diff --git a/OOP2023_a22willi_a21liltr_assignment2/src/comparators/SortByName.java b/OOP2023_a22willi_a21liltr_assignment2/src/comparators/SortByName.java
@@ -0,0 +1,15 @@
+package comparators;
+
+import java.util.Comparator;
+
+import se.his.it401g.todo.Task;
+
+public class SortByName implements Comparator<Task> {
+
+ @Override
+ public int compare(Task o1, Task o2) {
+ //compare names (after converting to lowercase
+ return o1.getText().toLowerCase().compareTo(o2.getText().toLowerCase());
+ }
+
+}
diff --git a/OOP2023_a22willi_a21liltr_assignment2/src/comparators/SortByState.java b/OOP2023_a22willi_a21liltr_assignment2/src/comparators/SortByState.java
@@ -0,0 +1,15 @@
+package comparators;
+
+import java.util.Comparator;
+
+import se.his.it401g.todo.Task;
+
+public class SortByState implements Comparator<Task> {
+
+ @Override
+ public int compare(Task o1, Task o2) {
+ //sort based on completion.
+ return Boolean.compare(o1.isComplete(), o2.isComplete());
+ }
+
+}
diff --git a/OOP2023_a22willi_a21liltr_assignment2/src/comparators/SortByType.java b/OOP2023_a22willi_a21liltr_assignment2/src/comparators/SortByType.java
@@ -0,0 +1,15 @@
+package comparators;
+
+import java.util.Comparator;
+
+import se.his.it401g.todo.Task;
+
+public class SortByType implements Comparator<Task> {
+
+ @Override
+ public int compare(Task o1, Task o2) {
+ //compare based on the type of task
+ return o1.getTaskType().compareTo(o2.getTaskType());
+ }
+
+}