package edu.harvard.wcfia.yoshikoder.ui;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSpinner;
import javax.swing.JTextArea;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeListener;
import edu.harvard.wcfia.yoshikoder.util.DialogUtil;
import edu.harvard.wcfia.yoshikoder.util.Messages;
public class FontPanel extends JPanel {
static String previewText = Messages.getString("FontPanel.fontPreviewLabel");
SpinnerModel fsModel;
JComboBox fontFamilyCombo;
DefaultComboBoxModel fontFamilyComboModel;
Font font;
public FontPanel(Font f) {
super(new BorderLayout());
font = f;
final JTextArea preview = new JTextArea(4,20);
preview.setText(previewText);
preview.setFont(f);
fsModel = new SpinnerNumberModel(f.getSize(), 8, 64, 1);
final JSpinner sizeSpinner = new JSpinner(fsModel);
sizeSpinner.setValue(new Integer(f.getSize()));
sizeSpinner.addChangeListener(new ChangeListener(){
public void stateChanged(javax.swing.event.ChangeEvent e) {
Integer val = (Integer)sizeSpinner.getValue();
font = new Font(font.getFamily(), Font.PLAIN, val.intValue());
preview.setFont(font);
}
});
List ffn = DialogUtil.getFontFamilyNames();
fontFamilyComboModel =
new DefaultComboBoxModel(ffn.toArray(new String[ffn.size()]));
fontFamilyCombo = new JComboBox(fontFamilyComboModel);
fontFamilyCombo.setSelectedItem(f.getFamily());
fontFamilyCombo.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
String newFamily = (String)fontFamilyCombo.getSelectedItem();
font = new Font(newFamily, Font.PLAIN, font.getSize());
preview.setFont(font);
}
});
Box bbox = Box.createHorizontalBox();
bbox.add(fontFamilyCombo);
bbox.add(Box.createHorizontalStrut(5));
bbox.add(sizeSpinner);
bbox.setBorder(BorderFactory.createEmptyBorder(5,0,0,0));
add(new JScrollPane(preview), BorderLayout.CENTER);
add(bbox, BorderLayout.SOUTH);
}
public Font getDisplayFont(){
return font;
}
}