package org.korsakow.ide.ui.components.linkpool;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.dsrg.soenea.domain.command.CommandException;
import org.korsakow.domain.CommandExecutor;
import org.korsakow.domain.command.Request;
import org.korsakow.domain.command.Response;
import org.korsakow.domain.command.SimulatedSearchCommand;
import org.korsakow.domain.interf.ISnu;
import org.korsakow.ide.Application;
import org.korsakow.ide.ui.components.KCollapsiblePane;
import org.korsakow.ide.ui.components.pool.AbstractHeader;
import org.korsakow.ide.ui.components.pool.AbstractPool;
import org.korsakow.ide.ui.components.pool.Content;
public class LinkPool extends AbstractPool<SnuHeaderEntry, SnuContentEntry>
{
@Override
protected Content<SnuContentEntry> createContent(SnuHeaderEntry entry)
{
Content<SnuContentEntry> content = new SnuContent();
content.setCellRenderer(new ContentCellRenderer());
return content;
}
@Override
protected AbstractHeader createHeader(SnuHeaderEntry entry)
{
AbstractHeader header = new AbstractHeader(entry.getSnuName());
return header;
}
@Override
protected void updateEntry(KCollapsiblePane pane, AbstractHeader header, Content<SnuContentEntry> content, SnuHeaderEntry headerEntry)
{
// TODO: do this in the model
List<SnuContentEntry> entries = new ArrayList<SnuContentEntry>();
Collection<ISnu> links;
try {
Request request = new Request();
request.set("id", headerEntry.getSnuId());
Response response = CommandExecutor.executeCommand(SimulatedSearchCommand.class, request);
links = (Collection<ISnu>)response.get("results");
} catch (CommandException e) {
Application.getInstance().showUnhandledErrorDialog(e);
links = Collections.EMPTY_LIST;
}
for (ISnu link : links)
{
SnuContentEntry contentEntry = new SnuContentEntry(link.getId(), link.getName());
entries.add(contentEntry);
}
Collections.sort(entries);
content.setModel(entries);
}
}