package org.korsakow.ide.ui.controller.action;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import org.korsakow.domain.interf.ISnu;
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.ResourceEditor;
import org.korsakow.ide.ui.components.tree.KNode;
import org.korsakow.ide.ui.components.tree.ResourceNode;
import org.korsakow.ide.ui.resourceexplorer.ResourceTreeTable;
public class MediaPropertiesAction implements ActionListener
{
private final ResourceTreeTable resourceTreeTable;
public MediaPropertiesAction(ResourceTreeTable resourceBrowser)
{
resourceTreeTable = resourceBrowser;
}
public void actionPerformed(ActionEvent event)
{
Exception firstException = null;
Application app = Application.getInstance();
List<? extends KNode> selectedNodes = resourceTreeTable.getSelectedNodes();
int x = 0;
int y = 0;
for (KNode node : selectedNodes) {
if (node instanceof ResourceNode) {
ResourceNode resourceNode = (ResourceNode)node;
if (resourceNode.getResourceType() == ResourceType.SNU) {
ResourceEditor editor;
try {
ISnu snu = SnuInputMapper.map(resourceNode.getResourceId());
editor = app.edit(ResourceType.forId(snu.getMainMedia().getType()), snu.getMainMedia().getId());
} catch (Exception e) {
if (firstException == null)
firstException = e;
continue;
}
// stagger windows
editor.setLocation(editor.getX()+x, editor.getY()+y);
x += 20;
y += 20;
}
}
}
if (firstException != null) {
Application.getInstance().showUnhandledErrorDialog(LanguageBundle.getString("general.errors.uncaughtexception.title"), firstException);
}
}
}