package comeon.ui.add; import comeon.core.Core; import comeon.ui.CursorChangingWorker; import comeon.ui.UI; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.swing.*; import java.awt.*; import java.io.File; import java.text.MessageFormat; import java.util.concurrent.ExecutionException; public class AdderWorker extends CursorChangingWorker { private static final Logger LOGGER = LoggerFactory.getLogger(AdderWorker.class); private final AddModel model; private final Core core; public AdderWorker(final AddModel model, final Core core) { this.model = model; this.core = core; } @Override protected Void doInBackground() throws Exception { model.getTemplate().load(); final File[] files = model.getMediaFiles(); if (files.length > 0) { core.addMedia(files, model.getTemplate(), model.getExternalMetadataSource()); } return null; } @Override protected void done() { super.done(); try { super.get(); } catch (final ExecutionException e) { LOGGER.warn("Adding media failed", e); final Window window = UI.findInstance(); JOptionPane.showMessageDialog( window, MessageFormat.format(UI.BUNDLE.getString("error.addmedia.failed"), e.getCause().getLocalizedMessage()), UI.BUNDLE.getString("error.generic.title"), JOptionPane.ERROR_MESSAGE); } catch (final InterruptedException e) { Thread.interrupted(); } } }