package edu.harvard.wcfia.yoshikoder.ui;
import java.awt.Font;
import java.nio.charset.Charset;
import java.util.Iterator;
import java.util.Locale;
import java.util.logging.Logger;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import edu.harvard.wcfia.yoshikoder.Yoshikoder;
import edu.harvard.wcfia.yoshikoder.util.CharsetWrapper;
import edu.harvard.wcfia.yoshikoder.util.FileUtil;
import edu.harvard.wcfia.yoshikoder.util.LocaleWrapper;
import edu.harvard.wcfia.yoshikoder.util.Messages;
public class GeneralPreferencesPanel extends CommitablePanel {
private static Logger log =
Logger.getLogger("edu.harvard.wcfia.yoshikoder.ui.GeneralPreferencesPanel");
protected Yoshikoder yoshikoder;
protected SpinnerNumberModel wsModel;
protected FontPanel fontPanel;
protected JComboBox charsetCombo;
protected DefaultComboBoxModel charsetModel;
protected JComboBox localeCombo;
public GeneralPreferencesPanel(Yoshikoder yk) {
super();
yoshikoder = yk;
charsetModel = new DefaultComboBoxModel();
for (Iterator<CharsetWrapper> iterator = FileUtil.getCharsetList().iterator(); iterator.hasNext();) {
CharsetWrapper wrapper = iterator.next();
charsetModel.addElement(wrapper);
}
charsetCombo = new JComboBox(charsetModel);
CharsetWrapper thisone = new CharsetWrapper(yoshikoder.getDefaultEncoding());
charsetCombo.setSelectedItem(thisone);
localeCombo = new JComboBox(FileUtil.getLocaleList().toArray(new LocaleWrapper[]{}));
localeCombo.setSelectedItem(new LocaleWrapper(yoshikoder.getDefaultLocale()));
wsModel =
new SpinnerNumberModel(yoshikoder.getWindowSize(), 0, 100, 1);
JSpinner sp = new JSpinner(wsModel);
addWidgetInlineFixedWidth(Messages.getString("PreferencesPanel.windowSizeLabel"), sp);
addWidgetInline("Default encoding:", charsetCombo);
addWidgetInline("Default locale:", localeCombo);
fontPanel = new FontPanel(yoshikoder.getDisplayFont());
addWidgetFixedDepth(Messages.getString("fontLabel"), fontPanel);
setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
}
public void commit() throws CommitException {
int val = ((Integer)wsModel.getValue()).intValue();
int ws = yoshikoder.getWindowSize();
if (ws != val){
yoshikoder.setWindowSize( val );
//yoshikoder.setUnsavedChanges(true);
}
Font f = fontPanel.getDisplayFont();
if (!f.equals(yoshikoder.getDisplayFont())){
yoshikoder.setDisplayFont(f);
yoshikoder.setUnsavedChanges(true);
}
Charset cs = ((CharsetWrapper)charsetCombo.getSelectedItem()).charset;
yoshikoder.setDefaultEncoding(cs);
Locale loc = ((LocaleWrapper)localeCombo.getSelectedItem()).locale;
yoshikoder.setDefaultLocale(loc);
}
}