package org.korsakow.ide.ui.components.snupool;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
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 SnuPool extends AbstractPool<SnuEntry, KeywordEntry>
{
@Override
protected Content<KeywordEntry> createContent(SnuEntry entry)
{
Content<KeywordEntry> content = new Content<KeywordEntry>();
content.setCellRenderer(new KeywordCellRenderer());
return content;
}
@Override
protected AbstractHeader createHeader(SnuEntry entry)
{
AbstractHeader header = new AbstractHeader(entry.getSnuName());
return header;
}
@Override
protected void updateEntry(KCollapsiblePane pane, AbstractHeader header, Content<KeywordEntry> content, SnuEntry snuEntry)
{
HashMap<String, KeywordEntry> map = new HashMap<String, KeywordEntry>();
for (String keyword : snuEntry.getInKeywords())
{
KeywordEntry keywordEntry = map.get(keyword);
if (keywordEntry == null) {
keywordEntry = new KeywordEntry(keyword);
map.put(keyword, keywordEntry);
}
keywordEntry.setInKeyword(true);
}
for (String keyword : snuEntry.getOutKeywords())
{
KeywordEntry keywordEntry = map.get(keyword);
if (keywordEntry == null) {
keywordEntry = new KeywordEntry(keyword);
map.put(keyword, keywordEntry);
}
keywordEntry.setOutKeyword(true);
}
List<KeywordEntry> entries = new ArrayList<KeywordEntry>();
for (KeywordEntry entry : map.values())
entries.add(entry);
Collections.sort(entries);
content.setModel(entries);
}
}