/*
Copyright 2008-2010 Gephi
Authors : Mathieu Bastian <mathieu.bastian@gephi.org>
Website : http://www.gephi.org
This file is part of Gephi.
Gephi is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
Gephi is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Gephi. If not, see <http://www.gnu.org/licenses/>.
*/
package org.gephi.desktop.partition;
import java.awt.BorderLayout;
import java.awt.Color;
import org.gephi.partition.api.Part;
import org.gephi.partition.api.Partition;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
/**
*
* @author Mathieu Bastian
*/
public class PartitionPie extends javax.swing.JPanel {
private DefaultPieDataset data;
private ChartPanel chartPanel;
public PartitionPie() {
initComponents();
}
public void setup(Partition partition) {
data = new DefaultPieDataset();
for (Part p : partition.getParts()) {
data.setValue(p.getDisplayName(), p.getPercentage());
}
final JFreeChart chart = ChartFactory.createPieChart("test", data, false, false, false);
chart.setTitle(new TextTitle());
chart.setBackgroundPaint(null);
PiePlot plot = (PiePlot) chart.getPlot();
plot.setShadowPaint(null);
//plot.setSimpleLabels(true);
plot.setLabelBackgroundPaint(Color.WHITE);
plot.setLabelOutlineStroke(null);
plot.setLabelShadowPaint(null);
plot.setOutlineVisible(false);
plot.setLabelFont(new java.awt.Font("Tahoma", 0, 10));
plot.setLabelPaint(Color.BLACK);
//plot.setLabelGap(0.05);
plot.setCircular(true);
plot.setBackgroundPaint(null);
plot.setBackgroundAlpha(1f);
for (Part p : partition.getParts()) {
plot.setSectionPaint(p.getDisplayName(), p.getColor());
}
chartPanel = new ChartPanel(chart, true);
chartPanel.setOpaque(false);
chartPanel.setPopupMenu(null);
add(chartPanel, BorderLayout.CENTER);
}
public void unsetup() {
remove(chartPanel);
data = null;
chartPanel = null;
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
setOpaque(false);
setLayout(new java.awt.BorderLayout());
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
// End of variables declaration//GEN-END:variables
}