package org.rr.jeborker.gui.action;
import java.awt.event.ActionEvent;
import java.util.List;
import java.util.logging.Level;
import javax.swing.AbstractAction;
import javax.swing.Action;
import org.rr.commons.log.LoggerFactory;
import org.rr.commons.mufs.IResourceHandler;
import org.rr.commons.mufs.ResourceHandlerFactory;
import org.rr.commons.mufs.ResourceHandlerUtils;
import org.rr.jeborker.app.preferences.APreferenceStore;
import org.rr.jeborker.app.preferences.PreferenceStoreFactory;
import org.rr.jeborker.gui.MainController;
import org.rr.jeborker.gui.MainMonitor;
import org.rr.jeborker.gui.resources.ImageResourceBundle;
public class FileSystemImportAction extends AbstractAction {
private String targetFolder;
FileSystemImportAction(String targetFolder) {
this.targetFolder = targetFolder;
putValue(Action.SMALL_ICON, ImageResourceBundle.getResourceAsImageIcon("import_16.png"));
putValue(Action.NAME, targetFolder);
putValue(SHORT_DESCRIPTION, Bundle.getString("FileSystemImportAction.tooltip")); //tooltip
}
@Override
public void actionPerformed(ActionEvent evt) {
final MainController controller = MainController.getController();
final List<IResourceHandler> selectedTreeItems = controller.getMainTreeHandler().getSelectedTreeItems();
final IResourceHandler targetRecourceDirectory = ResourceHandlerFactory.getResourceHandler(targetFolder);
final APreferenceStore preferenceStore = PreferenceStoreFactory.getPreferenceStore(PreferenceStoreFactory.DB_STORE);
final String targetBasePath = preferenceStore.getBasePathFor(targetRecourceDirectory);
MainMonitor progressMonitor = MainController.getController().getProgressMonitor();
try {
progressMonitor.blockMainFrame(true).setMessage("Importing files");
boolean delete = preferenceStore.getEntryAsBoolean(PreferenceStoreFactory.PREFERENCE_KEYS.DELETE_EBOOK_AFTER_IMPORT).booleanValue();
List<IResourceHandler> importEbookResources = ActionUtils.importEbookResources(selectedTreeItems, targetBasePath, delete);
if(!importEbookResources.isEmpty()) {
ActionUtils.applyFilter(ResourceHandlerUtils.toFileNames(selectedTreeItems).toArray(new String[0]));
}
} catch(Exception ex) {
LoggerFactory.log(Level.WARNING, this, "Failed to import file to " + targetFolder, ex);
} finally {
progressMonitor.blockMainFrame(false);
}
}
}