operations on multiple selection in shared files table

This commit is contained in:
Zlatin Balevsky
2019-10-09 03:38:08 +01:00
parent 4133384e48
commit f530ab999d
2 changed files with 29 additions and 12 deletions

View File

@@ -270,10 +270,12 @@ class MainFrameController {
} }
void unshareSelectedFile() { void unshareSelectedFile() {
SharedFile sf = view.selectedSharedFile() def sf = view.selectedSharedFiles()
if (sf == null) if (sf == null)
return return
core.eventBus.publish(new FileUnsharedEvent(unsharedFile : sf)) sf.each {
core.eventBus.publish(new FileUnsharedEvent(unsharedFile : it))
}
} }
void stopWatchingDirectory() { void stopWatchingDirectory() {

View File

@@ -23,6 +23,7 @@ import javax.swing.table.DefaultTableCellRenderer
import com.muwire.core.Constants import com.muwire.core.Constants
import com.muwire.core.MuWireSettings import com.muwire.core.MuWireSettings
import com.muwire.core.SharedFile
import com.muwire.core.download.Downloader import com.muwire.core.download.Downloader
import com.muwire.core.files.FileSharedEvent import com.muwire.core.files.FileSharedEvent
import com.muwire.core.trust.RemoteTrustList import com.muwire.core.trust.RemoteTrustList
@@ -615,22 +616,36 @@ class MainFrameView {
menu.show(event.getComponent(), event.getX(), event.getY()) menu.show(event.getComponent(), event.getX(), event.getY())
} }
def selectedSharedFile() { def selectedSharedFiles() {
def sharedFilesTable = builder.getVariable("shared-files-table") def sharedFilesTable = builder.getVariable("shared-files-table")
int selected = sharedFilesTable.getSelectedRow() int[] selected = sharedFilesTable.getSelectedRows()
if (selected < 0) if (selected.length == 0)
return null return null
if (lastSharedSortEvent != null) List<SharedFile> rv = new ArrayList<>()
selected = sharedFilesTable.rowSorter.convertRowIndexToModel(selected) if (lastSharedSortEvent != null) {
model.shared[selected] for (int i = 0; i < selected.length; i ++) {
selected[i] = sharedFilesTable.rowSorter.convertRowIndexToModel(selected[i])
}
}
selected.each {
rv.add(model.shared[it])
}
rv
} }
def copyHashToClipboard() { def copyHashToClipboard() {
def selected = selectedSharedFile() def selectedFiles = selectedSharedFiles()
if (selected == null) if (selectedFiles == null)
return return
String root = Base64.encode(selected.infoHash.getRoot()) String roots = ""
StringSelection selection = new StringSelection(root) for (Iterator<SharedFile> iterator = selectedFiles.iterator(); iterator.hasNext(); ) {
SharedFile selected = iterator.next()
String root = Base64.encode(selected.infoHash.getRoot())
roots += root
if (iterator.hasNext())
roots += "\n"
}
StringSelection selection = new StringSelection(roots)
def clipboard = Toolkit.getDefaultToolkit().getSystemClipboard() def clipboard = Toolkit.getDefaultToolkit().getSystemClipboard()
clipboard.setContents(selection, null) clipboard.setContents(selection, null)
} }