001/* ===========================================================
002 * JFreeChart : a free chart library for the Java(tm) platform
003 * ===========================================================
004 *
005 * (C) Copyright 2000-present, by David Gilbert and Contributors.
006 *
007 * Project Info:  http://www.jfree.org/jfreechart/index.html
008 *
009 * This library is free software; you can redistribute it and/or modify it
010 * under the terms of the GNU Lesser General Public License as published by
011 * the Free Software Foundation; either version 2.1 of the License, or
012 * (at your option) any later version.
013 *
014 * This library is distributed in the hope that it will be useful, but
015 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
016 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
017 * License for more details.
018 *
019 * You should have received a copy of the GNU Lesser General Public
020 * License along with this library; if not, write to the Free Software
021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
022 * USA.
023 *
024 * [Oracle and Java are registered trademarks of Oracle and/or its affiliates. 
025 * Other names may be trademarks of their respective owners.]
026 *
027 */
028
029package org.jfree.chart.ui;
030
031import java.awt.Font;
032import java.util.ResourceBundle;
033import javax.swing.JTextField;
034import org.jfree.chart.util.ResourceBundleWrapper;
035
036/**
037 * A field for displaying a font selection.  The display field itself is
038 * read-only, to the developer must provide another mechanism to allow the
039 * user to change the font.
040 */
041public class FontDisplayField extends JTextField {
042
043    /** The current font. */
044    private Font displayFont;
045
046    /** The resourceBundle for the localization. */
047    protected static final ResourceBundle localizationResources =
048            ResourceBundleWrapper.getBundle("org.jfree.chart.ui.LocalizationBundle");
049
050    /**
051     * Standard constructor - builds a FontDescriptionField initialised with
052     * the specified font.
053     *
054     * @param font  the font.
055     */
056    public FontDisplayField(Font font) {
057        super("");
058        setDisplayFont(font);
059        setEnabled(false);
060    }
061
062    /**
063     * Returns the current font.
064     *
065     * @return the font.
066     */
067    public Font getDisplayFont() {
068        return this.displayFont;
069    }
070
071    /**
072     * Sets the font.
073     *
074     * @param font  the font.
075     */
076    public void setDisplayFont(Font font) {
077        this.displayFont = font;
078        setText(fontToString(this.displayFont));
079    }
080
081    /**
082     * Returns a string representation of the specified font.
083     *
084     * @param font  the font.
085     *
086     * @return a string describing the font.
087     */
088    private String fontToString(Font font) {
089        if (font != null) {
090            return font.getFontName() + ", " + font.getSize();
091        }
092        else {
093            return localizationResources.getString("No_Font_Selected");
094        }
095    }
096
097}
098