package org.korsakow.ide.ui.controller.action; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.FileNotFoundException; import java.util.Collection; import java.util.HashSet; import java.util.List; import org.dsrg.soenea.domain.MapperException; import org.korsakow.domain.interf.IMedia; import org.korsakow.domain.mapper.input.MediaInputMapper; import org.korsakow.domain.mapper.input.SnuInputMapper; import org.korsakow.ide.Application; import org.korsakow.ide.lang.LanguageBundle; import org.korsakow.ide.resources.ResourceType; import org.korsakow.ide.ui.components.tree.KNode; import org.korsakow.ide.ui.components.tree.ResourceNode; import org.korsakow.ide.ui.resourceexplorer.ResourceTreeTable; import org.korsakow.ide.util.ShellExec; import org.korsakow.ide.util.ShellExec.ShellException; public class RevealInPlatformFilesystemBrowserAction implements ActionListener { private final ResourceTreeTable resourceTreeTable; public RevealInPlatformFilesystemBrowserAction(ResourceTreeTable resourceBrowser) { resourceTreeTable = resourceBrowser; } public void actionPerformed(ActionEvent event) { Application app = Application.getInstance(); Collection<IMedia> media = new HashSet<IMedia>(); try { List<? extends KNode> selectedNodes = resourceTreeTable.getSelectedNodes(); for (KNode node : selectedNodes) { if (node instanceof ResourceNode == false) continue; ResourceNode resourceNode = (ResourceNode)node; if (resourceNode.getResourceType() == ResourceType.SNU) { media.add(SnuInputMapper.map(resourceNode.getResourceId()).getMainMedia()); } else if (resourceNode.getResourceType().isMedia()) { media.add(MediaInputMapper.map(resourceNode.getResourceId())); } } } catch (MapperException e) { app.showUnhandledErrorDialog(e); } try { for (IMedia medium : media) { String filename; try { filename = medium.getAbsoluteFilename(); } catch (FileNotFoundException e) { filename = medium.getFilename(); } ShellExec.revealInPlatformFilesystemBrowser(filename); } } catch (ShellException e) { app.showUnhandledErrorDialog(LanguageBundle.getString("general.errors.cantrunscript.title"), "general.errors.cantrunscript.message", e); } } }