1
0
mirror of https://github.com/mitb-archive/filebot synced 2024-08-13 17:03:45 -04:00
filebot/source/net/filebot/ui/FileBotListExportHandler.java
2016-03-21 17:14:04 +00:00

68 lines
1.7 KiB
Java

package net.filebot.ui;
import java.awt.Cursor;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.function.BiConsumer;
import javax.swing.JComponent;
import net.filebot.ui.transfer.ClipboardHandler;
import net.filebot.ui.transfer.TextFileExportHandler;
public class FileBotListExportHandler<T> extends TextFileExportHandler implements ClipboardHandler {
protected final FileBotList<T> list;
protected final BiConsumer<T, PrintWriter> exportItem;
public FileBotListExportHandler(FileBotList<T> list) {
this(list, (item, out) -> out.println(item));
}
public FileBotListExportHandler(FileBotList<T> list, BiConsumer<T, PrintWriter> exportItem) {
this.list = list;
this.exportItem = exportItem;
}
@Override
public boolean canExport() {
return list.getModel().size() > 0;
}
@Override
public void export(PrintWriter out) {
try {
list.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
for (T item : list.getModel()) {
exportItem.accept(item, out);
}
} finally {
list.setCursor(Cursor.getDefaultCursor());
}
}
@Override
public String getDefaultFileName() {
return list.getTitle() + ".txt";
}
@Override
public void exportToClipboard(JComponent c, Clipboard clip, int action) throws IllegalStateException {
StringWriter buffer = new StringWriter();
try (PrintWriter out = new PrintWriter(buffer)) {
list.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
for (T item : list.getListComponent().getSelectedValuesList()) {
exportItem.accept(item, out);
}
} finally {
list.setCursor(Cursor.getDefaultCursor());
}
clip.setContents(new StringSelection(buffer.toString()), null);
}
}