package net.sf.jabref; import java.awt.BorderLayout; import java.awt.Font; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import net.sf.jabref.gui.ColorSetupPanel; import com.jgoodies.forms.builder.DefaultFormBuilder; import com.jgoodies.forms.layout.FormLayout; class AppearancePrefsTab extends JPanel implements PrefsTab { JabRefPreferences _prefs; private JCheckBox colorCodes, overrideFonts;//, useCustomIconTheme; private GridBagLayout gbl = new GridBagLayout(); private JButton fontButton = new JButton(Globals.lang("Set table font")); private ColorSetupPanel colorPanel = new ColorSetupPanel(); private Font font = GUIGlobals.CURRENTFONT; private int oldMenuFontSize; private boolean oldOverrideFontSize; private JTextField fontSize;//, customIconThemeFile; /** * Customization of appearance parameters. * * @param prefs a <code>JabRefPreferences</code> value */ public AppearancePrefsTab(JabRefPreferences prefs) { _prefs = prefs; setLayout(new BorderLayout()); // Font sizes: fontSize = new JTextField(5); colorCodes = new JCheckBox(Globals.lang ("Color codes for required and optional fields")); /*antialias = new JCheckBox(Globals.lang ("Use antialiasing font"));*/ overrideFonts = new JCheckBox(Globals.lang("Override default font settings")); //useCustomIconTheme = new JCheckBox(Globals.lang("Use custom icon theme")); //customIconThemeFile = new JTextField(); FormLayout layout = new FormLayout ("1dlu, 8dlu, left:pref, 4dlu, fill:pref, 4dlu, fill:60dlu, 4dlu, fill:pref", ""); DefaultFormBuilder builder = new DefaultFormBuilder(layout); builder.setLeadingColumnOffset(2); JLabel lab; builder.appendSeparator(Globals.lang("General")); JPanel p1 = new JPanel(); lab = new JLabel(Globals.lang("Menu and label font size") + ":"); p1.add(lab); p1.add(fontSize); builder.append(p1); builder.nextLine(); builder.append(overrideFonts); builder.nextLine(); builder.appendSeparator(Globals.lang("Table appearance")); //builder.append(antialias); //builder.nextLine(); builder.append(colorCodes); builder.nextLine(); builder.append(fontButton); builder.nextLine(); builder.appendSeparator(Globals.lang("Table and entry editor colors")); builder.append(colorPanel); /*builder.appendSeparator(Globals.lang("Custom icon theme")); builder.append(useCustomIconTheme); builder.nextLine(); JPanel p2 = new JPanel(); lab = new JLabel(Globals.lang("Custom icon theme file")+":"); p2.add(lab); p2.add(customIconThemeFile); BrowseAction browse = new BrowseAction(null, customIconThemeFile, false); JButton browseBut = new JButton(Globals.lang("Browse")); browseBut.addActionListener(browse); p2.add(browseBut); builder.append(p2); */ JPanel upper = new JPanel(), sort = new JPanel(), namesp = new JPanel(), iconCol = new JPanel(); upper.setLayout(gbl); sort.setLayout(gbl); namesp.setLayout(gbl); iconCol.setLayout(gbl); overrideFonts.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { fontSize.setEnabled(overrideFonts.isSelected()); } }); fontButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // JDialog dl = new EntryCustomizationDialog(ths); Font f=new FontSelectorDialog (null, GUIGlobals.CURRENTFONT).getSelectedFont(); if(f==null) return; else font = f; } }); /*menuFontButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Font f=new FontSelectorDialog (null, menuFont).getSelectedFont(); if(f==null) return; else menuFont = f; } });*/ JPanel pan = builder.getPanel(); pan.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); add(pan, BorderLayout.CENTER); } public void setValues() { colorCodes.setSelected(_prefs.getBoolean("tableColorCodesOn")); //antialias.setSelected(_prefs.getBoolean("antialias")); fontSize.setText("" + _prefs.getInt("menuFontSize")); oldMenuFontSize = _prefs.getInt("menuFontSize"); overrideFonts.setSelected(_prefs.getBoolean("overrideDefaultFonts")); oldOverrideFontSize = overrideFonts.isSelected(); fontSize.setEnabled(overrideFonts.isSelected()); //useCustomIconTheme.setSelected(_prefs.getBoolean("useCustomIconTheme")); //customIconThemeFile.setText(_prefs.get("customIconThemeFile")); colorPanel.setValues(); } /** * Store changes to table preferences. This method is called when * the user clicks Ok. * */ public void storeSettings() { _prefs.putBoolean("tableColorCodesOn", colorCodes.isSelected()); //_prefs.putBoolean("antialias", antialias.isSelected()); _prefs.put("fontFamily", font.getFamily()); _prefs.putInt("fontStyle", font.getStyle()); _prefs.putInt("fontSize", font.getSize()); _prefs.putBoolean("overrideDefaultFonts", overrideFonts.isSelected()); GUIGlobals.CURRENTFONT = font; colorPanel.storeSettings(); try { int size = Integer.parseInt(fontSize.getText()); if ((overrideFonts.isSelected() != oldOverrideFontSize) || (size != oldMenuFontSize)) { _prefs.putInt("menuFontSize", size); JOptionPane.showMessageDialog(null, Globals.lang("You have changed the menu and label font size. " + "You must restart JabRef for this to come into effect."), Globals.lang("Changed font settings"), JOptionPane.WARNING_MESSAGE); } } catch (NumberFormatException ex) { ex.printStackTrace(); } } public boolean readyToClose() { try { // Test if font size is a number: Integer.parseInt(fontSize.getText()); } catch (NumberFormatException ex) { JOptionPane.showMessageDialog (null, Globals.lang("You must enter an integer value in the text field for") + " '" + Globals.lang("Menu and label font size") + "'", Globals.lang("Changed font settings"), JOptionPane.ERROR_MESSAGE); return false; } return true; } public String getTabName() { return Globals.lang("Appearance"); } }