mirror of https://github.com/zlatinb/muwire
Refresh library on a timer. Use case-insensitive string comparator. GitHub issue #84
parent
5261fd37c5
commit
6c7a9e3309
|
@ -40,7 +40,6 @@ import com.muwire.core.filefeeds.FeedLoadedEvent
|
||||||
import com.muwire.core.filefeeds.UIDownloadFeedItemEvent
|
import com.muwire.core.filefeeds.UIDownloadFeedItemEvent
|
||||||
import com.muwire.core.filefeeds.UIFeedConfigurationEvent
|
import com.muwire.core.filefeeds.UIFeedConfigurationEvent
|
||||||
import com.muwire.core.files.AllFilesLoadedEvent
|
import com.muwire.core.files.AllFilesLoadedEvent
|
||||||
import com.muwire.core.files.DirectoryUnsharedEvent
|
|
||||||
import com.muwire.core.files.FileDownloadedEvent
|
import com.muwire.core.files.FileDownloadedEvent
|
||||||
import com.muwire.core.files.FileHashedEvent
|
import com.muwire.core.files.FileHashedEvent
|
||||||
import com.muwire.core.files.FileHashingEvent
|
import com.muwire.core.files.FileHashingEvent
|
||||||
|
@ -105,7 +104,9 @@ class MainFrameModel {
|
||||||
volatile Filterer filterer
|
volatile Filterer filterer
|
||||||
boolean treeVisible = true
|
boolean treeVisible = true
|
||||||
private final Set<SharedFile> allSharedFiles = Collections.synchronizedSet(new LinkedHashSet<>())
|
private final Set<SharedFile> allSharedFiles = Collections.synchronizedSet(new LinkedHashSet<>())
|
||||||
def shared
|
List<SharedFile> shared
|
||||||
|
private boolean libraryDirty
|
||||||
|
private final javax.swing.Timer libraryTimer = new javax.swing.Timer(1000, {refreshLibrary()})
|
||||||
TreeModel sharedTree
|
TreeModel sharedTree
|
||||||
DefaultMutableTreeNode allFilesTreeRoot, treeRoot
|
DefaultMutableTreeNode allFilesTreeRoot, treeRoot
|
||||||
final Map<SharedFile, TreeNode> fileToNode = new HashMap<>()
|
final Map<SharedFile, TreeNode> fileToNode = new HashMap<>()
|
||||||
|
@ -313,6 +314,8 @@ class MainFrameModel {
|
||||||
core.eventBus.publish(new ContentControlEvent(term : it, regex: true, add: true))
|
core.eventBus.publish(new ContentControlEvent(term : it, regex: true, add: true))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
libraryTimer.start()
|
||||||
|
|
||||||
chatServerRunning = core.chatServer.isRunning()
|
chatServerRunning = core.chatServer.isRunning()
|
||||||
|
|
||||||
timer.schedule({
|
timer.schedule({
|
||||||
|
@ -454,7 +457,7 @@ class MainFrameModel {
|
||||||
if (filter(e.sharedFile)) {
|
if (filter(e.sharedFile)) {
|
||||||
shared << e.sharedFile
|
shared << e.sharedFile
|
||||||
insertIntoTree(e.sharedFile, treeRoot, null)
|
insertIntoTree(e.sharedFile, treeRoot, null)
|
||||||
view.refreshSharedFiles()
|
libraryDirty = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -468,7 +471,7 @@ class MainFrameModel {
|
||||||
insertIntoTree(e.loadedFile, allFilesTreeRoot, fileToNode)
|
insertIntoTree(e.loadedFile, allFilesTreeRoot, fileToNode)
|
||||||
shared << e.loadedFile
|
shared << e.loadedFile
|
||||||
insertIntoTree(e.loadedFile, treeRoot, null)
|
insertIntoTree(e.loadedFile, treeRoot, null)
|
||||||
view.refreshSharedFiles()
|
libraryDirty = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -608,7 +611,7 @@ class MainFrameModel {
|
||||||
wrapper.updateUploader(e.uploader)
|
wrapper.updateUploader(e.uploader)
|
||||||
else {
|
else {
|
||||||
uploads << new UploaderWrapper(uploader: e.uploader)
|
uploads << new UploaderWrapper(uploader: e.uploader)
|
||||||
view.refreshSharedFilesTable()
|
libraryDirty = true
|
||||||
}
|
}
|
||||||
updateTablePreservingSelection("uploads-table")
|
updateTablePreservingSelection("uploads-table")
|
||||||
}
|
}
|
||||||
|
@ -659,7 +662,7 @@ class MainFrameModel {
|
||||||
|
|
||||||
void onSearchEvent(SearchEvent e) {
|
void onSearchEvent(SearchEvent e) {
|
||||||
runInsideUIAsync {
|
runInsideUIAsync {
|
||||||
view.refreshSharedFilesTable()
|
libraryDirty = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -764,7 +767,7 @@ class MainFrameModel {
|
||||||
if (filter(e.downloadedFile)) {
|
if (filter(e.downloadedFile)) {
|
||||||
shared << e.downloadedFile
|
shared << e.downloadedFile
|
||||||
insertIntoTree(e.downloadedFile,treeRoot, null)
|
insertIntoTree(e.downloadedFile,treeRoot, null)
|
||||||
view.refreshSharedFiles()
|
libraryDirty = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1013,4 +1016,11 @@ class MainFrameModel {
|
||||||
def folder = application.mvcGroupManager.createMVCGroup('message-folder', "folder-${e.name}", props)
|
def folder = application.mvcGroupManager.createMVCGroup('message-folder', "folder-${e.name}", props)
|
||||||
view.addUserMessageFolder(folder)
|
view.addUserMessageFolder(folder)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void refreshLibrary() {
|
||||||
|
if (libraryDirty) {
|
||||||
|
libraryDirty = false
|
||||||
|
view.refreshSharedFiles()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -910,11 +910,13 @@ class MainFrameView {
|
||||||
}
|
}
|
||||||
|
|
||||||
// shared files table and tree
|
// shared files table and tree
|
||||||
def sharedFilesTable = builder.getVariable("shared-files-table")
|
JTable sharedFilesTable = builder.getVariable("shared-files-table")
|
||||||
sharedFilesTable.columnModel.getColumn(1).setCellRenderer(new SizeRenderer())
|
sharedFilesTable.columnModel.getColumn(1).setCellRenderer(new SizeRenderer())
|
||||||
|
|
||||||
sharedFilesTable.rowSorter.addRowSorterListener({ evt -> lastSharedSortEvent = evt })
|
sharedFilesTable.rowSorter.addRowSorterListener({ evt -> lastSharedSortEvent = evt })
|
||||||
sharedFilesTable.rowSorter.setSortsOnUpdates(true)
|
sharedFilesTable.rowSorter.setSortsOnUpdates(true)
|
||||||
|
// default collator comparator is very slow
|
||||||
|
sharedFilesTable.rowSorter.setComparator(0, String.CASE_INSENSITIVE_ORDER)
|
||||||
|
|
||||||
sharedFilesTable.addMouseListener(sharedFilesMouseListener)
|
sharedFilesTable.addMouseListener(sharedFilesMouseListener)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue