ability to remove files from collection in review

pull/53/head
Zlatin Balevsky 2020-11-11 15:58:55 +00:00
parent 040203cd58
commit cd619a023a
No known key found for this signature in database
GPG Key ID: A72832072D525E41
1 changed files with 41 additions and 0 deletions

View File

@ -6,6 +6,8 @@ import static com.muwire.gui.Translator.trans
import java.awt.BorderLayout import java.awt.BorderLayout
import java.awt.datatransfer.DataFlavor import java.awt.datatransfer.DataFlavor
import java.awt.datatransfer.Transferable import java.awt.datatransfer.Transferable
import java.awt.event.MouseAdapter
import java.awt.event.MouseEvent
import java.awt.event.WindowAdapter import java.awt.event.WindowAdapter
import java.awt.event.WindowEvent import java.awt.event.WindowEvent
@ -16,10 +18,13 @@ import net.i2p.data.DataHelper
import javax.swing.JComponent import javax.swing.JComponent
import javax.swing.JDialog import javax.swing.JDialog
import javax.swing.JFrame import javax.swing.JFrame
import javax.swing.JMenuItem
import javax.swing.JOptionPane import javax.swing.JOptionPane
import javax.swing.JPanel import javax.swing.JPanel
import javax.swing.JPopupMenu
import javax.swing.JTable import javax.swing.JTable
import javax.swing.JTree import javax.swing.JTree
import javax.swing.ListSelectionModel
import javax.swing.SwingConstants import javax.swing.SwingConstants
import javax.swing.TransferHandler import javax.swing.TransferHandler
import javax.swing.border.TitledBorder import javax.swing.border.TitledBorder
@ -38,6 +43,7 @@ class CollectionWizardView {
def nameTextField def nameTextField
def commentTextArea def commentTextArea
JTable filesTable JTable filesTable
def lastFilesTableSortEvent
JTree jTree JTree jTree
void initUI() { void initUI() {
@ -132,6 +138,24 @@ class CollectionWizardView {
void mvcGroupInit(Map<String,String> args) { void mvcGroupInit(Map<String,String> args) {
filesTable.setDefaultRenderer(Long.class, new SizeRenderer()) filesTable.setDefaultRenderer(Long.class, new SizeRenderer())
filesTable.setTransferHandler(new SFTransferHandler()) filesTable.setTransferHandler(new SFTransferHandler())
filesTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)
filesTable.rowSorter.addRowSorterListener({evt -> lastFilesTableSortEvent = evt})
JPopupMenu filesMenu = new JPopupMenu()
JMenuItem removeItem = new JMenuItem(trans("REMOVE"))
removeItem.addActionListener({removeSelectedFiles()})
filesMenu.add(removeItem)
filesTable.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {
if (e.isPopupTrigger() || e.getButton() == MouseEvent.BUTTON3)
filesMenu.show(e.getComponent(), e.getX(), e.getY())
}
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger() || e.getButton() == MouseEvent.BUTTON3)
filesMenu.show(e.getComponent(), e.getX(), e.getY())
}
})
window.addWindowListener(new WindowAdapter() { window.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent e) { public void windowClosed(WindowEvent e) {
@ -142,6 +166,23 @@ class CollectionWizardView {
window.setVisible(true) window.setVisible(true)
} }
void removeSelectedFiles() {
int[] selected = filesTable.getSelectedRows()
if (selected.length == 0)
return
if (lastFilesTableSortEvent != null) {
for (int i = 0; i < selected.length; i++)
selected[i] = filesTable.rowSorter.convertRowIndexToModel(selected[i])
}
Arrays.sort(selected)
for(int i = selected.length - 1; i >= 0; i--) {
def sf = model.files.remove(selected[i])
model.uniqueFiles.remove(sf)
}
filesTable.model.fireTableDataChanged()
}
private class SFTransferHandler extends TransferHandler { private class SFTransferHandler extends TransferHandler {
@Override @Override
public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) { public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) {