package org.korsakow.ide.ui.controller.action.media; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FilenameFilter; import java.util.Arrays; import java.util.List; import org.korsakow.domain.interf.IMedia; import org.korsakow.ide.Application; import org.korsakow.ide.controller.ApplicationAdapter; import org.korsakow.ide.lang.LanguageBundle; import org.korsakow.ide.ui.components.tree.KNode; import org.korsakow.ide.ui.components.tree.ResourceNode; import org.korsakow.ide.ui.controller.dnd.AbstractMediaFileTransferHandler; import org.korsakow.ide.ui.resourceexplorer.ResourceTreeTable; import org.korsakow.ide.util.FileUtil; public class ImportMediaAction extends ApplicationAdapter implements ActionListener { ResourceTreeTable tree; public ImportMediaAction(ResourceTreeTable tree) { this.tree = tree; } public void actionPerformed(ActionEvent event) { File defaultDir = new File("."); File file = Application.getInstance().showFileOpenDialog(Application.getInstance().getProjectExplorer(), defaultDir, null, new MediaFilenameFilter()); if (file == null) return; List<File> files = Arrays.asList(file); try { List<? extends IMedia> media = AbstractMediaFileTransferHandler.convertToMedia(files); for ( IMedia medium : media ) { KNode node = ResourceNode.create( medium ); tree.getTreeTableModel().appendNode( node, tree.getTreeTableModel().getRoot() ); Application.getInstance().notifyResourceAdded(medium); } } catch (Exception e) { Application.getInstance().showUnhandledErrorDialog(LanguageBundle.getString("general.errors.cantimport.title"), e); } } private static class MediaFilenameFilter implements FilenameFilter { public boolean accept(File dir, String name) { return FileUtil.isMediaFile(name); } } }