/* * JChartPanel.java * * Copyright (c) 2002-2015 Alexei Drummond, Andrew Rambaut and Marc Suchard * * This file is part of BEAST. * See the NOTICE file distributed with this work for additional * information regarding copyright ownership and licensing. * * BEAST 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 2 * of the License, or (at your option) any later version. * * BEAST 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with BEAST; if not, write to the * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, * Boston, MA 02110-1301 USA */ package dr.app.gui.chart; import dr.app.gui.components.JVerticalLabel; import javax.swing.*; import java.awt.*; import java.awt.print.PageFormat; import java.awt.print.Printable; public class JChartPanel extends JPanel implements Printable { /** * */ private static final long serialVersionUID = -737128752110140264L; public JChartPanel(JChart chart, String title, String xAxisTitle, String yAxisTitle) { setOpaque(false); ChartLayout layout = new ChartLayout(4, 4); setLayout(layout); if (chart != null) { add(chart, "Chart"); } setTitle(title); setXAxisTitle(xAxisTitle); setYAxisTitle(yAxisTitle); } public void setTitle(String title) { if (titleLabel != null) { remove(titleLabel); } if (title != null) { titleLabel = new JLabel(title, JLabel.CENTER); add(titleLabel, "Title"); } } public void setXAxisTitle(String xAxisTitle) { if (xAxisLabel != null) { remove(xAxisLabel); } if (xAxisTitle != null) { xAxisLabel = new JLabel(xAxisTitle, JLabel.CENTER); add(xAxisLabel, "XLabel"); } } public void setYAxisTitle(String yAxisTitle) { if (yAxisLabel != null) { remove(yAxisLabel); } if (yAxisTitle != null) { yAxisLabel = new JVerticalLabel(yAxisTitle, JLabel.CENTER, false); add(yAxisLabel, "YLabel"); } } public String getTitle() { return titleLabel.getText(); } public String getXAxisTitle() { return xAxisLabel.getText(); } public String getYAxisTitle() { return yAxisLabel.getText(); } //******************************************************************** //******************************************************************** // Printable interface //******************************************************************** public int print(Graphics g, PageFormat pageFormat, int pageIndex) { if (pageIndex > 0) { return(NO_SUCH_PAGE); } else { Graphics2D g2d = (Graphics2D)g; double x0 = pageFormat.getImageableX(); double y0 = pageFormat.getImageableY(); double w0 = pageFormat.getImageableWidth(); double h0 = pageFormat.getImageableHeight(); double w1 = getWidth(); double h1 = getHeight(); double scale; if (w0 / w1 < h0 / h1) { scale = w0 / w1; } else { scale = h0 /h1; } g2d.translate(x0, y0); g2d.scale(scale, scale); Color bg = getBackground(); setBackground(Color.white); paint(g2d); setBackground(bg); return(PAGE_EXISTS); } } private JLabel titleLabel = null; private JLabel xAxisLabel = null; private JLabel yAxisLabel = null; }