diff --git a/src/main/java/org/jabref/gui/maintable/MainTableColumnFactory.java b/src/main/java/org/jabref/gui/maintable/MainTableColumnFactory.java index ff343bc16c4..6133fc9c5e3 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTableColumnFactory.java +++ b/src/main/java/org/jabref/gui/maintable/MainTableColumnFactory.java @@ -35,6 +35,7 @@ import org.jabref.gui.util.OptionalValueTableCellFactory; import org.jabref.gui.util.ValueTableCellFactory; import org.jabref.gui.util.comparator.RankingFieldComparator; +import org.jabref.gui.util.comparator.ReadStatusFieldComparator; import org.jabref.logic.l10n.Localization; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; @@ -201,6 +202,11 @@ private TableColumn column.setComparator(new RankingFieldComparator()); } + // Added comparator for Read Status + if (specialField == SpecialField.READ_STATUS) { + column.setComparator(new ReadStatusFieldComparator()); + } + column.setSortable(true); return column; } diff --git a/src/main/java/org/jabref/gui/util/comparator/ReadStatusFieldComparator.java b/src/main/java/org/jabref/gui/util/comparator/ReadStatusFieldComparator.java new file mode 100644 index 00000000000..d4317cd7464 --- /dev/null +++ b/src/main/java/org/jabref/gui/util/comparator/ReadStatusFieldComparator.java @@ -0,0 +1,27 @@ +package org.jabref.gui.util.comparator; + +import java.util.Comparator; +import java.util.Optional; + +import org.jabref.gui.specialfields.SpecialFieldValueViewModel; + +public class ReadStatusFieldComparator implements Comparator> { + + @Override + public int compare(Optional val1, Optional val2) { + if (val1.isPresent()) { + if (val2.isPresent()) { + return val1.get().getValue().compareTo(val2.get().getValue()); + } else { + return -1; + } + } else { + if (val2.isPresent()) { + return 1; + } else { + return 0; + } + } + } + +}