diff --git a/gui/griffon-app/views/com/muwire/gui/BrowseView.groovy b/gui/griffon-app/views/com/muwire/gui/BrowseView.groovy index df749f52..32cc039f 100644 --- a/gui/griffon-app/views/com/muwire/gui/BrowseView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/BrowseView.groovy @@ -165,6 +165,8 @@ class BrowseView { resultsTable.rowSorter.addRowSorterListener({evt -> lastSortEvent = evt}) resultsTable.rowSorter.setSortsOnUpdates(true) + resultsTable.rowSorter.setComparator(0, new UIResultEventComparator(true)) + def selectionModel = resultsTable.getSelectionModel() selectionModel.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION) selectionModel.addListSelectionListener({ diff --git a/gui/griffon-app/views/com/muwire/gui/SearchTabView.groovy b/gui/griffon-app/views/com/muwire/gui/SearchTabView.groovy index 97d0fd66..9a84d383 100644 --- a/gui/griffon-app/views/com/muwire/gui/SearchTabView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/SearchTabView.groovy @@ -389,7 +389,7 @@ class SearchTabView { resultsTable.rowSorter.addRowSorterListener({ evt -> lastSortEvent = evt}) resultsTable.rowSorter.setSortsOnUpdates(true) - + resultsTable.rowSorter.setComparator(0, new UIResultEventComparator(false)) resultsTable.addMouseListener(resultsMouseListener) @@ -455,6 +455,7 @@ class SearchTabView { resultsTable2.columnModel.getColumn(1).setCellRenderer(new SizeRenderer()) resultsTable2.rowSorter.addRowSorterListener({evt -> lastResults2SortEvent = evt}) resultsTable2.rowSorter.setSortsOnUpdates(true) + resultsTable2.rowSorter.setComparator(0, new UIResultEventComparator(false)) selectionModel = resultsTable2.getSelectionModel() selectionModel.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION) selectionModel.addListSelectionListener({ @@ -499,6 +500,7 @@ class SearchTabView { new ResultNameTableCellRenderer(model.core.fileManager::isShared, true)) sendersTable2.rowSorter.addRowSorterListener({ evt -> lastSenders2SortEvent = evt}) sendersTable2.rowSorter.setSortsOnUpdates(true) + sendersTable2.rowSorter.setComparator(1, new UIResultEventComparator(true)) selectionModel = sendersTable2.getSelectionModel() selectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) selectionModel.addListSelectionListener({ diff --git a/gui/src/main/groovy/com/muwire/gui/UIResultEventComparator.groovy b/gui/src/main/groovy/com/muwire/gui/UIResultEventComparator.groovy new file mode 100644 index 00000000..80c72509 --- /dev/null +++ b/gui/src/main/groovy/com/muwire/gui/UIResultEventComparator.groovy @@ -0,0 +1,26 @@ +package com.muwire.gui + +import com.muwire.core.search.UIResultEvent + +import java.text.Collator + +class UIResultEventComparator implements Comparator{ + + private final boolean fullPath + UIResultEventComparator(boolean fullPath) { + this.fullPath = fullPath + } + + @Override + int compare(UIResultEvent o1, UIResultEvent o2) { + String s1,s2 + if (fullPath) { + s1 = o1.getFullPath() + s2 = o2.getFullPath() + } else { + s1 = o1.getName() + s2 = o2.getName() + } + return Collator.getInstance().compare(s1, s2) + } +}