Author: echatellier Date: 2010-12-09 11:46:40 +0100 (Thu, 09 Dec 2010) New Revision: 305 Url: http://nuiton.org/repositories/revision/nuiton-matrix/305 Log: Modify chart panel construction with overidable methods Removed: trunk/nuiton-matrix-gui/src/main/java/org/nuiton/math/matrix/viewer/renderer/jfreechart/JFreeChartPanel.java Modified: trunk/nuiton-matrix-gui/src/main/java/org/nuiton/math/matrix/viewer/renderer/MatrixChartRenderer.java Modified: trunk/nuiton-matrix-gui/src/main/java/org/nuiton/math/matrix/viewer/renderer/MatrixChartRenderer.java =================================================================== --- trunk/nuiton-matrix-gui/src/main/java/org/nuiton/math/matrix/viewer/renderer/MatrixChartRenderer.java 2010-12-09 10:25:35 UTC (rev 304) +++ trunk/nuiton-matrix-gui/src/main/java/org/nuiton/math/matrix/viewer/renderer/MatrixChartRenderer.java 2010-12-09 10:46:40 UTC (rev 305) @@ -27,13 +27,29 @@ import static org.nuiton.i18n.I18n._; +import java.awt.BorderLayout; import java.awt.Component; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import javax.swing.Icon; +import javax.swing.JComboBox; +import javax.swing.JPanel; +import org.jfree.chart.ChartPanel; +import org.jfree.chart.JFreeChart; +import org.jfree.chart.axis.CategoryAxis; +import org.jfree.chart.axis.CategoryLabelPositions; +import org.jfree.chart.axis.NumberAxis3D; +import org.jfree.chart.axis.ValueAxis; +import org.jfree.chart.plot.CategoryPlot; +import org.jfree.chart.renderer.category.CategoryItemRenderer; +import org.jfree.data.category.CategoryDataset; import org.nuiton.math.matrix.MatrixND; import org.nuiton.math.matrix.viewer.MatrixRenderer; -import org.nuiton.math.matrix.viewer.renderer.jfreechart.JFreeChartPanel; +import org.nuiton.math.matrix.viewer.renderer.jfreechart.GraphComboRenderer; +import org.nuiton.math.matrix.viewer.renderer.jfreechart.GraphMatrixNDDataset; +import org.nuiton.math.matrix.viewer.renderer.jfreechart.GraphRendererComboBoxModel; import org.nuiton.util.Resource; /** @@ -47,14 +63,18 @@ */ public class MatrixChartRenderer implements MatrixRenderer { + protected JComboBox chartRendererComboBox; + protected JFreeChart chart; + /* * @see org.nuiton.math.matrix.viewer.MatrixRenderer#getPanel(org.nuiton.math.matrix.MatrixND) */ @Override public Component getComponent(MatrixND matrix) { - JFreeChartPanel panel = new JFreeChartPanel(matrix); + JPanel panel = getJFreeChartPanel(matrix); return panel; } + /* * @see org.nuiton.math.matrix.viewer.MatrixRenderer#getIcon() */ @@ -71,4 +91,99 @@ return _("nuitonmatrix.viewer.renderer.chart"); } + protected JPanel getJFreeChartPanel(MatrixND matrix) { + JPanel panel = new JPanel(new BorderLayout()); + chartRendererComboBox = getChartRendererComboBox(); + panel.add(chartRendererComboBox, BorderLayout.NORTH); + + chart = getJFreeChart(matrix); + panel.add(getChartPanel(chart), BorderLayout.CENTER); + return panel; + } + + /** + * Chart renderer combo box. + * + * @return + */ + protected JComboBox getChartRendererComboBox() { + JComboBox rendererComboBox = new JComboBox(); + GraphRendererComboBoxModel rendererComboBoxModel = new GraphRendererComboBoxModel(); + rendererComboBox.setModel(rendererComboBoxModel); + rendererComboBox.setRenderer(new GraphComboRenderer()); + + // add listener combobox > chart + rendererComboBox.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + CategoryItemRenderer renderer = (CategoryItemRenderer)e.getItem(); + chart.getCategoryPlot().setRenderer(renderer); + } + }); + + return rendererComboBox; + } + + /** + * Data model. + * + * @param matrix + * @return + */ + protected CategoryDataset getCategoryDataset(MatrixND matrix) { + CategoryDataset categoryDataset = new GraphMatrixNDDataset(matrix); + return categoryDataset; + } + + /** + * Abscisse (nom + valeur à la verticale). + * + * @param matrix + * @return + */ + protected CategoryAxis getCategoryAxis(MatrixND matrix) { + CategoryAxis horizontalAxis = new CategoryAxis(); + horizontalAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90); + horizontalAxis.setLabel(_(matrix.getDimensionName(0))); + return horizontalAxis; + } + + /** + * Ordonnées (valeur seule). + * + * @param matrix + * @return + */ + protected ValueAxis getValueAxis(MatrixND matrix) { + ValueAxis verticalAxis = new NumberAxis3D(); + return verticalAxis; + } + + /** + * Plot. + * + * @param matrix + * @return + */ + protected CategoryPlot getCategoryPlot(MatrixND matrix) { + CategoryPlot categoryPlot = new CategoryPlot(getCategoryDataset(matrix), + getCategoryAxis(matrix), getValueAxis(matrix), + (CategoryItemRenderer)chartRendererComboBox.getSelectedItem()); + return categoryPlot; + } + + /** + * Build chart. + * + * @return + */ + protected JFreeChart getJFreeChart(MatrixND matrix) { + JFreeChart chart = new JFreeChart(_(matrix.getName()), JFreeChart.DEFAULT_TITLE_FONT, getCategoryPlot(matrix), true); + return chart; + } + + protected ChartPanel getChartPanel(JFreeChart chart) { + ChartPanel chartPanel = new ChartPanel(chart); + return chartPanel; + } } Deleted: trunk/nuiton-matrix-gui/src/main/java/org/nuiton/math/matrix/viewer/renderer/jfreechart/JFreeChartPanel.java =================================================================== --- trunk/nuiton-matrix-gui/src/main/java/org/nuiton/math/matrix/viewer/renderer/jfreechart/JFreeChartPanel.java 2010-12-09 10:25:35 UTC (rev 304) +++ trunk/nuiton-matrix-gui/src/main/java/org/nuiton/math/matrix/viewer/renderer/jfreechart/JFreeChartPanel.java 2010-12-09 10:46:40 UTC (rev 305) @@ -1,108 +0,0 @@ -/* - * #%L - * - * - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2010 Codelutin, Chatellier Eric - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program 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 General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Lesser Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/lgpl-3.0.html>. - * #L% - */ - -package org.nuiton.math.matrix.viewer.renderer.jfreechart; - -import static org.nuiton.i18n.I18n._; - -import java.awt.BorderLayout; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; - -import javax.swing.JComboBox; -import javax.swing.JPanel; - -import org.jfree.chart.ChartPanel; -import org.jfree.chart.JFreeChart; -import org.jfree.chart.axis.CategoryAxis; -import org.jfree.chart.axis.CategoryLabelPositions; -import org.jfree.chart.axis.NumberAxis3D; -import org.jfree.chart.axis.ValueAxis; -import org.jfree.chart.plot.CategoryPlot; -import org.jfree.chart.renderer.category.CategoryItemRenderer; -import org.jfree.data.category.CategoryDataset; -import org.nuiton.math.matrix.MatrixND; - -/** - * Jfreechart rendering panel. - * - * @author chatellier - * @version $Revision$ - * - * Last update : $Date$ - * By : $Author$ - */ -public class JFreeChartPanel extends JPanel { - - /** serialVersionUID. */ - private static final long serialVersionUID = 97401315671737565L; - - protected MatrixND matrix; - - protected JFreeChart chart; - - public JFreeChartPanel(MatrixND matrix) { - super(new BorderLayout()); - this.matrix = matrix; - - buildPanel(); - } - - protected void buildPanel() { - - // renderer combo box - JComboBox rendererComboBox = new JComboBox(); - GraphRendererComboBoxModel rendererComboBoxModel = new GraphRendererComboBoxModel(); - rendererComboBox.setModel(rendererComboBoxModel); - rendererComboBox.setRenderer(new GraphComboRenderer()); - add(rendererComboBox, BorderLayout.NORTH); - - // data model - CategoryDataset categoryDataset = new GraphMatrixNDDataset(matrix); - - // abscisse (nom + valeur à la verticale) - CategoryAxis horizontalAxis = new CategoryAxis(); - horizontalAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90); - horizontalAxis.setLabel(_(matrix.getDimensionName(0))); - - // ordonnées (valeur seule) - ValueAxis verticalAxis = new NumberAxis3D(); - - // plot - CategoryPlot categoryPlot = new CategoryPlot(categoryDataset, horizontalAxis, verticalAxis, (CategoryItemRenderer)rendererComboBox.getSelectedItem()); - chart = new JFreeChart(_(matrix.getName()), JFreeChart.DEFAULT_TITLE_FONT, categoryPlot, true); - ChartPanel chartPanel = new ChartPanel(chart); - add(chartPanel, BorderLayout.CENTER); - - // add listener combobox > chart - rendererComboBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - CategoryItemRenderer renderer = (CategoryItemRenderer)e.getItem(); - chart.getCategoryPlot().setRenderer(renderer); - } - }); - } -}
participants (1)
-
echatellier@users.nuiton.org