package org.rr.jeborker.gui.action;
import static org.rr.commons.utils.StringUtil.EMPTY;
import javax.swing.Action;
import javax.swing.JFileChooser;
import org.rr.commons.mufs.IResourceHandler;
import org.rr.commons.net.imagefetcher.ImageWebSearchFetcherFactory;
import org.rr.commons.swing.SwingUtils;
import org.rr.commons.swing.dialogs.JImageDownloadDialog;
import org.rr.commons.utils.ListUtils;
import org.rr.commons.utils.StringUtil;
import org.rr.jeborker.db.IDBObject;
import org.rr.jeborker.db.item.EbookPropertyItem;
import org.rr.jeborker.db.item.EbookPropertyItemUtils;
import org.rr.jeborker.gui.MainController;
import org.rr.jeborker.gui.resources.ImageResourceBundle;
class SetCoverFromDownload extends SetCoverFrom<JImageDownloadDialog> implements IDoOnlyOnceAction<JImageDownloadDialog> {
private static final long serialVersionUID = -6464113132395695332L;
private JImageDownloadDialog imageDownloadDialog;
SetCoverFromDownload(IResourceHandler resourceHandler) {
super(resourceHandler);
String name = Bundle.getString("SetCoverFromDownloadAction.name");
putValue(Action.NAME, SwingUtils.removeMnemonicMarker(name));
putValue(Action.SMALL_ICON, ImageResourceBundle.getResourceAsImageIcon("image_websearch_16.png"));
putValue(Action.LARGE_ICON_KEY, ImageResourceBundle.getResourceAsImageIcon("image_websearch_22.png"));
putValue(ApplicationAction.NON_THREADED_ACTION_KEY, Boolean.TRUE); //No threading
putValue(MNEMONIC_KEY, SwingUtils.getMnemonicKeyCode(name));
}
@Override
public JImageDownloadDialog doOnce() {
if(imageDownloadDialog == null) {
final MainController controller = MainController.getController();
imageDownloadDialog = new JImageDownloadDialog(controller.getMainWindow(), ImageWebSearchFetcherFactory.getInstance());
//default search phrase
String searchPhrase = EMPTY;
EbookPropertyItem item = ListUtils.first(EbookPropertyItemUtils.getEbookPropertyItemByResource(resourceHandler));
//no author in the search term for now. Big Book Search did not like it.
if(item != null) {
String authors = item.getAuthor() != null ? item.getAuthor().replace(IDBObject.LIST_SEPARATOR_CHAR, " ") : null;
if(StringUtil.isNotEmpty(authors)) {
searchPhrase += authors + " ";
}
}
if(item != null && StringUtil.isNotEmpty(item.getTitle())) {
searchPhrase += item.getTitle();
} else {
searchPhrase += this.resourceHandler.getName();
searchPhrase = searchPhrase.substring(0, searchPhrase.length() - this.resourceHandler.getFileExtension().length()).trim();
if(searchPhrase.endsWith(".")) {
searchPhrase = searchPhrase.substring(0, searchPhrase.length()-1);
}
}
searchPhrase = StringUtil.replace(searchPhrase, "-", " ");
imageDownloadDialog.setSearchPhrase(searchPhrase);
imageDownloadDialog.setVisible(true);
IResourceHandler selectedImage = imageDownloadDialog.getSelectedImage();
if(selectedImage != null) {
setDialogOption(JFileChooser.APPROVE_OPTION);
setDialogResult(selectedImage);
} else {
setDialogOption(JFileChooser.CANCEL_OPTION);
}
}
return this.imageDownloadDialog;
}
@Override
public void setDoOnceResult(JImageDownloadDialog result) {
this.imageDownloadDialog = result;
if(this.imageDownloadDialog != null) {
IResourceHandler selectedImage = imageDownloadDialog.getSelectedImage();
if(selectedImage != null) {
setDialogOption(JFileChooser.APPROVE_OPTION);
setDialogResult(selectedImage);
} else {
setDialogOption(JFileChooser.CANCEL_OPTION);
}
}
}
}