/* * FontSelectPane.java * * Created on 31 ���� 2006 �., 6:47 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package datechooser.beans.editor.font; import datechooser.events.*; import static datechooser.beans.locale.LocaleUtils.getEditorLocaleString; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; /** * Font selection panel.<br> * ������ ������ ���������� ������. * @author Androsov Vadim * @since 1.0 */ class FontSelectPane extends JPanel { public static final String FONT_EVENT_NAME = "font"; public static int MIN_FONT_SIZE = 3; public static int MAX_FONT_SIZE = 96; private Font font; private JComboBox selFont; private JCheckBox selStyleBold; private JCheckBox selStyleItalic; private SpinnerNumberModel selSize; private JSpinner selSizeSpinner; public FontSelectPane(Font font) { selFont = new JComboBox(new DefaultComboBoxModel(getAllFonts())); selStyleBold = new JCheckBox(getEditorLocaleString("Bold")); selStyleItalic = new JCheckBox(getEditorLocaleString("Italic")); selSize = new SpinnerNumberModel(font.getSize(), MIN_FONT_SIZE, MAX_FONT_SIZE, 1); selSizeSpinner = new JSpinner(selSize); setLayout(new FlowLayout(FlowLayout.CENTER)); JPanel style = new JPanel(new GridLayout(1,2)); style.add(selStyleBold); style.add(selStyleItalic); add(selFont); add(style); add(selSizeSpinner); OnChange changeHandler = new OnChange(); selFont.addActionListener(changeHandler); selStyleBold.addActionListener(changeHandler); selStyleItalic.addActionListener(changeHandler); selSize.addChangeListener(changeHandler); setSelectedFont(font); } public Font getSelectedFont() { Font newFont = font; newFont = new Font((String) selFont.getSelectedItem(), getStyle(), selSize.getNumber().intValue()); return newFont; } public void setSelectedFont(Font font) { this.font = font; selFont.setSelectedItem(font.getFamily()); selStyleBold.setSelected(font.isBold()); selStyleItalic.setSelected(font.isItalic()); selSize.setValue(font.getSize()); } private String[] getAllFonts() { return GraphicsEnvironment.getLocalGraphicsEnvironment(). getAvailableFontFamilyNames(); } private int getStyle() { if (selStyleBold.isSelected() && selStyleItalic.isSelected()) { return Font.BOLD + Font.ITALIC; } if (selStyleBold.isSelected()) { return Font.BOLD; } if (selStyleItalic.isSelected()) { return Font.ITALIC; } return Font.PLAIN; } public void fireChange() { firePropertyChange(FONT_EVENT_NAME, null, null); } class OnChange implements ActionListener, ChangeListener { public void actionPerformed(ActionEvent e) { fireChange(); } public void stateChanged(ChangeEvent e) { fireChange(); } } }