package com.kennycason.kumo;
import com.kennycason.kumo.bg.PixelBoundryBackground;
import com.kennycason.kumo.font.scale.LinearFontScalar;
import com.kennycason.kumo.nlp.FrequencyAnalyzer;
import com.kennycason.kumo.palette.ColorPalette;
import javax.swing.*;
import java.awt.*;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
* Created by kenny on 2/21/16.
*
*
*/
public class JPanelDemo extends JPanel {
private final WordCloud wordCloud;
public static void main(String[] args) throws IOException {
final JFrame frame = new JFrame("JPanel WordCloud");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JPanelDemo());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public JPanelDemo() throws IOException {
wordCloud = buildWordCloud();
final JLabel wordCloudLabel = new JLabel(new ImageIcon(wordCloud.getBufferedImage()));
add(wordCloudLabel);
repaint();
}
private static WordCloud buildWordCloud() throws IOException {
final FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
frequencyAnalyzer.setWordFrequenciesToReturn(300);
frequencyAnalyzer.setMinWordLength(5);
final List<WordFrequency> wordFrequencies = frequencyAnalyzer.load(getInputStream("text/datarank.txt"));
final Dimension dimension = new Dimension(500, 312);
final WordCloud wordCloud = new WordCloud(dimension, CollisionMode.PIXEL_PERFECT);
wordCloud.setPadding(1);
wordCloud.setBackground(new PixelBoundryBackground(getInputStream("backgrounds/whale_small.png")));
wordCloud.setColorPalette(new ColorPalette(new Color(0x4055F1), new Color(0x408DF1), new Color(0x40AAF1), new Color(0x40C5F1), new Color(0x40D3F1), new Color(0xFFFFFF)));
wordCloud.setFontScalar(new LinearFontScalar(10, 40));
wordCloud.build(wordFrequencies);
return wordCloud;
}
private static InputStream getInputStream(final String path) {
return Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
}
}