2b4d4eb6928f46de18de17dc8503b5903a6b9d07
[debian/jabref.git] / src / java / net / sf / jabref / AppearancePrefsTab.java
1 package net.sf.jabref;
2
3 import java.util.Vector;
4 import javax.swing.*;
5 import javax.swing.table.*;
6 import java.awt.*;
7 import java.awt.event.*;
8 import com.jgoodies.forms.layout.*;
9 import com.jgoodies.forms.factories.*;
10 import com.jgoodies.forms.builder.*;
11 import net.sf.jabref.gui.ColorSetupPanel;
12
13 class AppearancePrefsTab extends JPanel implements PrefsTab {
14
15     JabRefPreferences _prefs;
16     private JCheckBox colorCodes, antialias;
17     private GridBagLayout gbl = new GridBagLayout();
18     private JButton fontButton = new JButton(Globals.lang("Set table font"));
19     private ColorSetupPanel colorPanel = new ColorSetupPanel();
20     private Font font = GUIGlobals.CURRENTFONT;
21     private int oldMenuFontSize;
22     private JTextField fontSize;
23
24     /**
25      * Customization of appearance parameters.
26      *
27      * @param prefs a <code>JabRefPreferences</code> value
28      */
29     public AppearancePrefsTab(JabRefPreferences prefs) {
30         _prefs = prefs;
31          setLayout(new BorderLayout());
32
33         // Font sizes:
34         fontSize = new JTextField();
35
36
37         colorCodes = new JCheckBox(Globals.lang
38                    ("Color codes for required and optional fields"));
39         antialias = new JCheckBox(Globals.lang
40                   ("Use antialiasing font"));
41
42         FormLayout layout = new FormLayout
43                 ("1dlu, 8dlu, left:pref, 4dlu, fill:pref, 4dlu, fill:60dlu, 4dlu, fill:pref",
44                         "");
45         DefaultFormBuilder builder = new DefaultFormBuilder(layout);
46         builder.setLeadingColumnOffset(2);
47         JLabel lab;
48         builder.appendSeparator(Globals.lang("General"));
49         JPanel p1 = new JPanel();
50         lab = new JLabel(Globals.lang("Menu and label font size") + ":");
51         p1.add(lab);
52         p1.add(fontSize);
53         builder.append(p1);
54         builder.nextLine();
55         builder.append(antialias);
56         builder.nextLine();
57         builder.appendSeparator(Globals.lang("Table appearance"));
58         builder.append(colorCodes);
59         builder.nextLine();
60         builder.append(fontButton);
61         builder.nextLine();
62         builder.append(colorPanel);
63
64
65
66     JPanel upper = new JPanel(),
67         sort = new JPanel(),
68         namesp = new JPanel(),
69             iconCol = new JPanel();
70     upper.setLayout(gbl);
71     sort.setLayout(gbl);
72         namesp.setLayout(gbl);
73         iconCol.setLayout(gbl);
74
75
76
77     fontButton.addActionListener(new ActionListener() {
78         public void actionPerformed(ActionEvent e) {
79             // JDialog dl = new EntryCustomizationDialog(ths);
80             Font f=new FontSelectorDialog
81                 (null, GUIGlobals.CURRENTFONT).getSelectedFont();
82             if(f==null)
83                 return;
84             else
85                 font = f;
86         }
87         });
88     /*menuFontButton.addActionListener(new ActionListener() {
89          public void actionPerformed(ActionEvent e) {
90              Font f=new FontSelectorDialog
91                  (null, menuFont).getSelectedFont();
92              if(f==null)
93                  return;
94              else
95                  menuFont = f;
96          }
97          });*/
98
99     JPanel pan = builder.getPanel();
100     pan.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
101     add(pan, BorderLayout.CENTER);
102     }
103
104     public void setValues() {
105         colorCodes.setSelected(_prefs.getBoolean("tableColorCodesOn"));
106         antialias.setSelected(_prefs.getBoolean("antialias"));
107         fontSize.setText("" + _prefs.getInt("menuFontSize"));
108         oldMenuFontSize = _prefs.getInt("menuFontSize");
109
110         colorPanel.setValues();
111     }
112
113     /**
114      * Store changes to table preferences. This method is called when
115      * the user clicks Ok.
116      *
117      */
118     public void storeSettings() {
119
120         _prefs.putBoolean("tableColorCodesOn", colorCodes.isSelected());
121         _prefs.putBoolean("antialias", antialias.isSelected());
122         _prefs.put("fontFamily", font.getFamily());
123         _prefs.putInt("fontStyle", font.getStyle());
124         _prefs.putInt("fontSize", font.getSize());
125         GUIGlobals.CURRENTFONT = font;
126         colorPanel.storeSettings();
127         try {
128             int size = Integer.parseInt(fontSize.getText());
129             if (size != oldMenuFontSize) {
130                 _prefs.putInt("menuFontSize", size);
131                 JOptionPane.showMessageDialog(null, Globals.lang("You have changed the menu and label font size. "
132                         + "You must restart JabRef for this to come into effect."), Globals.lang("Changed font settings"),
133                         JOptionPane.WARNING_MESSAGE);
134             }
135
136         } catch (NumberFormatException ex) {
137             ex.printStackTrace();
138         }
139     }
140
141     public boolean readyToClose() {
142         try {
143             // Test if font size is a number:
144             int size = Integer.parseInt(fontSize.getText());
145
146         } catch (NumberFormatException ex) {
147             JOptionPane.showMessageDialog
148                     (null, Globals.lang("You must enter an integer value in the text field for") + " '" +
149                             Globals.lang("Menu and label font size") + "'", Globals.lang("Changed font settings"),
150                             JOptionPane.ERROR_MESSAGE);
151             return false;
152         }
153         return true;
154
155     }
156
157 }