/* * FontsPreferencesSection.java * * Copyright (C) 2006-2014 Andrew Rambaut * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * 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 Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package figtree.application.preferences; import figtree.application.FigTreeApplication; import figtree.treeviewer.painters.LabelPainterController; import figtree.treeviewer.painters.ScaleBarPainterController; import figtree.ui.FontChooserPanel; import jam.panels.OptionsPanel; import jam.preferences.PreferencesSection; import jam.util.IconUtils; import javax.swing.*; import javax.swing.border.TitledBorder; import java.awt.*; /** * @author Andrew Rambaut * @version $Id$ * * $HeadURL$ * * $LastChangedBy$ * $LastChangedDate$ * $LastChangedRevision$ */ public class FontsPreferencesSection implements PreferencesSection { Icon projectToolIcon = IconUtils.getIcon(FigTreeApplication.class, "images/prefsFonts.png"); public String getTitle() { return "Fonts"; } public Icon getIcon() { return projectToolIcon; } public JPanel getPanel() { OptionsPanel optionsPanel = new OptionsPanel(12, 18); if (tipLabelFontChooser == null) { Font font = new Font( LabelPainterController.DEFAULT_FONT_NAME, LabelPainterController.DEFAULT_FONT_STYLE, LabelPainterController.DEFAULT_FONT_SIZE); tipLabelFontChooser = new FontChooserPanel(font); } JPanel panel = new JPanel(new BorderLayout()); panel.add(tipLabelFontChooser, BorderLayout.CENTER); panel.setBorder(new TitledBorder("Tip Labels")); optionsPanel.addSpanningComponent(panel); if (nodeLabelFontChooser == null) { Font font = new Font( LabelPainterController.DEFAULT_FONT_NAME, LabelPainterController.DEFAULT_FONT_STYLE, LabelPainterController.DEFAULT_FONT_SIZE); nodeLabelFontChooser = new FontChooserPanel(font); } panel = new JPanel(new BorderLayout()); panel.add(nodeLabelFontChooser, BorderLayout.CENTER); panel.setBorder(new TitledBorder("Node Labels")); optionsPanel.addSpanningComponent(panel); if (branchLabelFontChooser == null) { Font font = new Font( LabelPainterController.DEFAULT_FONT_NAME, LabelPainterController.DEFAULT_FONT_STYLE, LabelPainterController.DEFAULT_FONT_SIZE); branchLabelFontChooser = new FontChooserPanel(font); } panel = new JPanel(new BorderLayout()); panel.add(branchLabelFontChooser, BorderLayout.CENTER); panel.setBorder(new TitledBorder("Branch Labels")); optionsPanel.addSpanningComponent(panel); if (scaleLabelFontChooser == null) { Font font = new Font( LabelPainterController.DEFAULT_FONT_NAME, LabelPainterController.DEFAULT_FONT_STYLE, LabelPainterController.DEFAULT_FONT_SIZE); scaleLabelFontChooser = new FontChooserPanel(font); } panel = new JPanel(new BorderLayout()); panel.add(scaleLabelFontChooser, BorderLayout.CENTER); panel.setBorder(new TitledBorder("Scale Bar/Axis Labels")); optionsPanel.addSpanningComponent(panel); optionsPanel.addFlexibleSpace(); return optionsPanel; } public void retrievePreferences() { String name = LabelPainterController.PREFS.get("tipLabels" + "." + LabelPainterController.FONT_NAME_KEY, LabelPainterController.DEFAULT_FONT_NAME); int size = LabelPainterController.PREFS.getInt("tipLabels" + "." + LabelPainterController.FONT_SIZE_KEY, LabelPainterController.DEFAULT_FONT_SIZE); int style = LabelPainterController.PREFS.getInt("tipLabels" + "." + LabelPainterController.FONT_STYLE_KEY, LabelPainterController.DEFAULT_FONT_STYLE); Font font = new Font(name, style, size); tipLabelFontChooser.setSelectedFont(font); name = LabelPainterController.PREFS.get("nodeLabels" + "." + LabelPainterController.FONT_NAME_KEY, LabelPainterController.DEFAULT_FONT_NAME); size = LabelPainterController.PREFS.getInt("nodeLabels" + "." + LabelPainterController.FONT_SIZE_KEY, LabelPainterController.DEFAULT_FONT_SIZE); style = LabelPainterController.PREFS.getInt("nodeLabels" + "." + LabelPainterController.FONT_STYLE_KEY, LabelPainterController.DEFAULT_FONT_STYLE); font = new Font(name, style, size); nodeLabelFontChooser.setSelectedFont(font); name = LabelPainterController.PREFS.get("branchLabels" + "." + LabelPainterController.FONT_NAME_KEY, LabelPainterController.DEFAULT_FONT_NAME); size = LabelPainterController.PREFS.getInt("branchLabels" + "." + LabelPainterController.FONT_SIZE_KEY, LabelPainterController.DEFAULT_FONT_SIZE); style = LabelPainterController.PREFS.getInt("branchLabels" + "." + LabelPainterController.FONT_STYLE_KEY, LabelPainterController.DEFAULT_FONT_STYLE); font = new Font(name, style, size); branchLabelFontChooser.setSelectedFont(font); name = ScaleBarPainterController.PREFS.get(ScaleBarPainterController.CONTROLLER_KEY + "." + ScaleBarPainterController.FONT_NAME_KEY, ScaleBarPainterController.DEFAULT_FONT_NAME); size = ScaleBarPainterController.PREFS.getInt(ScaleBarPainterController.CONTROLLER_KEY + "." + ScaleBarPainterController.FONT_SIZE_KEY, ScaleBarPainterController.DEFAULT_FONT_SIZE); style = ScaleBarPainterController.PREFS.getInt(ScaleBarPainterController.CONTROLLER_KEY + "." + ScaleBarPainterController.FONT_STYLE_KEY, ScaleBarPainterController.DEFAULT_FONT_STYLE); font = new Font(name, style, size); scaleLabelFontChooser.setSelectedFont(font); } public void storePreferences() { Font font = tipLabelFontChooser.getSelectedFont(); LabelPainterController.PREFS.put("tipLabels" + "." + LabelPainterController.FONT_NAME_KEY, font.getName()); LabelPainterController.PREFS.putInt("tipLabels" + "." + LabelPainterController.FONT_SIZE_KEY, font.getSize()); LabelPainterController.PREFS.putInt("tipLabels" + "." + LabelPainterController.FONT_STYLE_KEY, font.getStyle()); font = nodeLabelFontChooser.getSelectedFont(); LabelPainterController.PREFS.put("nodeLabels" + "." + LabelPainterController.FONT_NAME_KEY, font.getName()); LabelPainterController.PREFS.putInt("nodeLabels" + "." + LabelPainterController.FONT_SIZE_KEY, font.getSize()); LabelPainterController.PREFS.putInt("nodeLabels" + "." + LabelPainterController.FONT_STYLE_KEY, font.getStyle()); font = branchLabelFontChooser.getSelectedFont(); LabelPainterController.PREFS.put("branchLabels" + "." + LabelPainterController.FONT_NAME_KEY, font.getName()); LabelPainterController.PREFS.putInt("branchLabels" + "." + LabelPainterController.FONT_SIZE_KEY, font.getSize()); LabelPainterController.PREFS.putInt("branchLabels" + "." + LabelPainterController.FONT_STYLE_KEY, font.getStyle()); font = scaleLabelFontChooser.getSelectedFont(); ScaleBarPainterController.PREFS.put(ScaleBarPainterController.CONTROLLER_KEY + "." + ScaleBarPainterController.FONT_NAME_KEY, font.getName()); ScaleBarPainterController.PREFS.putInt(ScaleBarPainterController.CONTROLLER_KEY + "." + ScaleBarPainterController.FONT_SIZE_KEY, font.getSize()); ScaleBarPainterController.PREFS.putInt(ScaleBarPainterController.CONTROLLER_KEY + "." + ScaleBarPainterController.FONT_STYLE_KEY, font.getStyle()); } FontChooserPanel tipLabelFontChooser = null; FontChooserPanel nodeLabelFontChooser = null; FontChooserPanel branchLabelFontChooser = null; FontChooserPanel scaleLabelFontChooser = null; }