Coverage Report - net.sf.jabref.TablePrefsTab
 
Classes in this File Line Coverage Branch Coverage Complexity
TablePrefsTab
96%
176/183
61%
22/36
2.889
TablePrefsTab$1
60%
3/5
50%
1/2
2.889
TablePrefsTab$2
60%
3/5
50%
1/2
2.889
TablePrefsTab$3
60%
3/5
50%
1/2
2.889
TablePrefsTab$4
100%
5/5
100%
6/6
2.889
 
 1  
 package net.sf.jabref;
 2  
 
 3  
 import java.awt.BorderLayout;
 4  
 import java.awt.event.ActionEvent;
 5  
 import java.awt.event.ActionListener;
 6  
 import java.util.Arrays;
 7  
 import java.util.Collections;
 8  
 import java.util.Vector;
 9  
 
 10  
 import javax.swing.*;
 11  
 import javax.swing.event.ChangeEvent;
 12  
 import javax.swing.event.ChangeListener;
 13  
 
 14  
 import com.jgoodies.forms.builder.DefaultFormBuilder;
 15  
 import com.jgoodies.forms.layout.FormLayout;
 16  
 
 17  395700
 class TablePrefsTab extends JPanel implements PrefsTab {
 18  
 
 19  
         JabRefPreferences _prefs;
 20  
 
 21  
     private JCheckBox autoResizeMode, priDesc, secDesc, terDesc, floatMarked, pdfColumn, urlColumn,
 22  
                 fileColumn, citeseerColumn;
 23  
 
 24  
         private JRadioButton namesAsIs, namesFf, namesFl, namesNatbib, abbrNames, noAbbrNames,
 25  
                 lastNamesOnly;
 26  
 
 27  
         private JComboBox priSort, secSort, terSort;
 28  
 
 29  
         private JTextField priField, secField, terField, numericFields;
 30  
 
 31  
         /**
 32  
          * Customization of external program paths.
 33  
          * 
 34  
          * @param prefs
 35  
          *            a <code>JabRefPreferences</code> value
 36  
          */
 37  48906
         public TablePrefsTab(JabRefPreferences prefs, JabRefFrame frame) {
 38  48906
                 _prefs = prefs;
 39  48906
                 setLayout(new BorderLayout());
 40  
 
 41  
                 /**
 42  
                  * Added Bibtexkey to combobox.
 43  
                  * 
 44  
                  * [ 1540646 ] default sort order: bibtexkey
 45  
                  * 
 46  
                  * http://sourceforge.net/tracker/index.php?func=detail&aid=1540646&group_id=92314&atid=600306
 47  
                  */
 48  48906
                 Vector<String> v = new Vector<String>(Arrays.asList(BibtexFields.getAllFieldNames()));
 49  48906
                 v.add(BibtexFields.KEY_FIELD);
 50  48906
                 Collections.sort(v);
 51  48906
                 Object[] allPlusKey = v.toArray();
 52  48906
                 priSort = new JComboBox(allPlusKey);
 53  48906
                 secSort = new JComboBox(allPlusKey);
 54  48906
                 terSort = new JComboBox(allPlusKey);
 55  
 
 56  48906
                 autoResizeMode = new JCheckBox(Globals.lang("Fit table horizontally on screen"));
 57  
 
 58  48906
                 namesAsIs = new JRadioButton(Globals.lang("Show names unchanged"));
 59  48906
                 namesFf = new JRadioButton(Globals.lang("Show 'Firstname Lastname'"));
 60  48906
                 namesFl = new JRadioButton(Globals.lang("Show 'Lastname, Firstname'"));
 61  48906
                 namesNatbib = new JRadioButton(Globals.lang("Natbib style"));
 62  48906
                 noAbbrNames = new JRadioButton(Globals.lang("Do not abbreviate names"));
 63  48906
                 abbrNames = new JRadioButton(Globals.lang("Abbreviate names"));
 64  48906
                 lastNamesOnly = new JRadioButton(Globals.lang("Show last names only"));
 65  48906
         fileColumn = new JCheckBox(Globals.lang("Show file column"));
 66  48906
         pdfColumn = new JCheckBox(Globals.lang("Show PDF/PS column"));
 67  48906
                 urlColumn = new JCheckBox(Globals.lang("Show URL/DOI column"));
 68  48906
                 citeseerColumn = new JCheckBox(Globals.lang("Show CiteSeer column"));
 69  
 
 70  48906
                 floatMarked = new JCheckBox(Globals.lang("Float marked entries"));
 71  
 
 72  48906
                 priField = new JTextField(10);
 73  48906
                 secField = new JTextField(10);
 74  48906
                 terField = new JTextField(10);
 75  
 
 76  48906
         numericFields = new JTextField(30);
 77  
 
 78  48906
                 priSort.insertItemAt(Globals.lang("<select>"), 0);
 79  48906
                 secSort.insertItemAt(Globals.lang("<select>"), 0);
 80  48906
                 terSort.insertItemAt(Globals.lang("<select>"), 0);
 81  
 
 82  48906
                 priSort.addActionListener(new ActionListener() {
 83  
                         public void actionPerformed(ActionEvent e) {
 84  48898
                                 if (priSort.getSelectedIndex() > 0) {
 85  0
                     priField.setText(priSort.getSelectedItem().toString());
 86  0
                     priSort.setSelectedIndex(0);
 87  
                                 }
 88  48898
                         }
 89  
                 });
 90  48906
                 secSort.addActionListener(new ActionListener() {
 91  
                         public void actionPerformed(ActionEvent e) {
 92  48898
                                 if (secSort.getSelectedIndex() > 0) {
 93  0
                     secField.setText(secSort.getSelectedItem().toString());
 94  0
                     secSort.setSelectedIndex(0);
 95  
                                 }
 96  48898
                         }
 97  
                 });
 98  48906
                 terSort.addActionListener(new ActionListener() {
 99  
                         public void actionPerformed(ActionEvent e) {
 100  48898
                                 if (terSort.getSelectedIndex() > 0) {
 101  0
                                         terField.setText(terSort.getSelectedItem().toString());
 102  0
                     terSort.setSelectedIndex(0);
 103  
                                 }
 104  48898
                         }
 105  
                 });
 106  
 
 107  48906
                 ButtonGroup bg = new ButtonGroup();
 108  48906
                 bg.add(namesAsIs);
 109  48906
                 bg.add(namesNatbib);
 110  48906
                 bg.add(namesFf);
 111  48906
                 bg.add(namesFl);
 112  48906
                 ButtonGroup bg2 = new ButtonGroup();
 113  48906
                 bg2.add(lastNamesOnly);
 114  48906
                 bg2.add(abbrNames);
 115  48906
                 bg2.add(noAbbrNames);
 116  48906
                 priDesc = new JCheckBox(Globals.lang("Descending"));
 117  48906
                 secDesc = new JCheckBox(Globals.lang("Descending"));
 118  48906
                 terDesc = new JCheckBox(Globals.lang("Descending"));
 119  
 
 120  48906
                 FormLayout layout = new FormLayout(
 121  
                         "1dlu, 8dlu, left:pref, 4dlu, fill:pref, 4dlu, fill:60dlu, 4dlu, fill:pref", "");
 122  48906
                 DefaultFormBuilder builder = new DefaultFormBuilder(layout);
 123  
                 JLabel lab;
 124  48906
                 JPanel pan = new JPanel();
 125  48906
                 builder.appendSeparator(Globals.lang("Special table columns"));
 126  48906
                 builder.nextLine();
 127  48906
                 builder.append(pan);
 128  48906
                 builder.append(fileColumn);
 129  48906
                 builder.nextLine();
 130  48906
         builder.append(pan);
 131  48906
         builder.append(pdfColumn);
 132  48906
         builder.nextLine();
 133  48906
         builder.append(pan);
 134  48906
         builder.append(urlColumn);
 135  48906
                 builder.nextLine();
 136  48906
                 builder.append(pan);
 137  48906
                 builder.append(citeseerColumn);
 138  48906
                 builder.nextLine();
 139  48906
                 builder.appendSeparator(Globals.lang("Format of author and editor names"));
 140  48906
                 DefaultFormBuilder nameBuilder = new DefaultFormBuilder(new FormLayout(
 141  
                         "left:pref, 8dlu, left:pref", ""));
 142  
 
 143  48906
                 nameBuilder.append(namesAsIs);
 144  48906
                 nameBuilder.append(noAbbrNames);
 145  48906
                 nameBuilder.nextLine();
 146  48906
                 nameBuilder.append(namesFf);
 147  48906
                 nameBuilder.append(abbrNames);
 148  48906
                 nameBuilder.nextLine();
 149  48906
                 nameBuilder.append(namesFl);
 150  48906
                 nameBuilder.append(lastNamesOnly);
 151  48906
                 nameBuilder.nextLine();
 152  48906
                 nameBuilder.append(namesNatbib);
 153  48906
                 builder.append(pan);
 154  48906
                 builder.append(nameBuilder.getPanel());
 155  48906
                 builder.nextLine();
 156  
                 // builder.append(pan); builder.append(noAbbrNames); builder.nextLine();
 157  
                 // builder.append(pan); builder.append(abbrNames); builder.nextLine();
 158  
                 // builder.append(pan); builder.append(lastNamesOnly);
 159  
                 // builder.nextLine();
 160  
 
 161  48906
                 builder.appendSeparator(Globals.lang("Default sort criteria"));
 162  
                 // Create a new panel with its own FormLayout for these items:
 163  48906
                 FormLayout layout2 = new FormLayout(
 164  
                         "left:pref, 8dlu, fill:pref, 4dlu, fill:60dlu, 4dlu, left:pref", "");
 165  48906
                 DefaultFormBuilder builder2 = new DefaultFormBuilder(layout2);
 166  48906
                 lab = new JLabel(Globals.lang("Primary sort criterion"));
 167  48906
                 builder2.append(lab);
 168  48906
                 builder2.append(priSort);
 169  48906
                 builder2.append(priField);
 170  48906
                 builder2.append(priDesc);
 171  48906
                 builder2.nextLine();
 172  48906
                 lab = new JLabel(Globals.lang("Secondary sort criterion"));
 173  48906
                 builder2.append(lab);
 174  48906
                 builder2.append(secSort);
 175  48906
                 builder2.append(secField);
 176  48906
                 builder2.append(secDesc);
 177  48906
                 builder2.nextLine();
 178  48906
                 lab = new JLabel(Globals.lang("Tertiary sort criterion"));
 179  48906
                 builder2.append(lab);
 180  48906
                 builder2.append(terSort);
 181  48906
                 builder2.append(terField);
 182  48906
                 builder2.append(terDesc);
 183  48906
                 builder.nextLine();
 184  48906
                 builder.append(pan);
 185  48906
                 builder.append(builder2.getPanel());
 186  48906
                 builder.nextLine();
 187  48906
                 builder.append(pan);
 188  48906
                 builder.append(floatMarked);
 189  48906
                 builder.nextLine();
 190  48906
         builder.append(pan);
 191  48906
         builder2 = new DefaultFormBuilder(new FormLayout("left:pref, 8dlu, fill:pref",""));
 192  48906
         builder2.append(Globals.lang("Sort the following fields as numeric fields")+":");
 193  48906
         builder2.append(numericFields);
 194  48906
         builder.append(builder2.getPanel(), 5);
 195  48906
         builder.nextLine();
 196  48906
                 builder.appendSeparator(Globals.lang("General"));
 197  48905
                 builder.append(pan);
 198  48905
                 builder.append(autoResizeMode);
 199  48905
                 builder.nextLine();
 200  
 
 201  48905
                 pan = builder.getPanel();
 202  48905
                 pan.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
 203  48905
                 add(pan, BorderLayout.CENTER);
 204  
 
 205  48905
                 namesNatbib.addChangeListener(new ChangeListener() {
 206  
                         public void stateChanged(ChangeEvent changeEvent) {
 207  41501
                                 abbrNames.setEnabled(!namesNatbib.isSelected());
 208  41501
                                 lastNamesOnly.setEnabled(!namesNatbib.isSelected());
 209  41501
                                 noAbbrNames.setEnabled(!namesNatbib.isSelected());
 210  41501
                         }
 211  
                 });
 212  48905
         }
 213  
 
 214  
         public void setValues() {
 215  48898
                 autoResizeMode
 216  
                         .setSelected((_prefs.getInt("autoResizeMode") == JTable.AUTO_RESIZE_ALL_COLUMNS));
 217  48898
                 fileColumn.setSelected(_prefs.getBoolean("fileColumn"));
 218  48898
         pdfColumn.setSelected(_prefs.getBoolean("pdfColumn"));
 219  48898
                 urlColumn.setSelected(_prefs.getBoolean("urlColumn"));
 220  48898
         fileColumn.setSelected(_prefs.getBoolean("fileColumn"));
 221  48898
         citeseerColumn.setSelected(_prefs.getBoolean("citeseerColumn"));
 222  
 
 223  48898
                 priField.setText(_prefs.get("priSort"));
 224  48898
                 secField.setText(_prefs.get("secSort"));
 225  48898
                 terField.setText(_prefs.get("terSort"));
 226  48898
                 priSort.setSelectedIndex(0);
 227  48898
                 secSort.setSelectedIndex(0);
 228  48898
                 terSort.setSelectedIndex(0);
 229  
 
 230  48898
                 if (_prefs.getBoolean("namesAsIs"))
 231  0
                         namesAsIs.setSelected(true);
 232  48898
                 else if (_prefs.getBoolean("namesFf"))
 233  10149
                         namesFf.setSelected(true);
 234  38749
                 else if (_prefs.getBoolean("namesNatbib"))
 235  38749
                         namesNatbib.setSelected(true);
 236  
                 else
 237  0
                         namesFl.setSelected(true);
 238  48898
                 if (_prefs.getBoolean("abbrAuthorNames"))
 239  48898
                         abbrNames.setSelected(true);
 240  0
                 else if (_prefs.getBoolean("namesLastOnly"))
 241  0
                         lastNamesOnly.setSelected(true);
 242  
                 else
 243  0
                         noAbbrNames.setSelected(true);
 244  48898
                 priDesc.setSelected(_prefs.getBoolean("priDescending"));
 245  48898
                 secDesc.setSelected(_prefs.getBoolean("secDescending"));
 246  48898
                 terDesc.setSelected(_prefs.getBoolean("terDescending"));
 247  
 
 248  48898
                 floatMarked.setSelected(_prefs.getBoolean("floatMarkedEntries"));
 249  
 
 250  48898
                 abbrNames.setEnabled(!namesNatbib.isSelected());
 251  48898
                 lastNamesOnly.setEnabled(!namesNatbib.isSelected());
 252  48898
                 noAbbrNames.setEnabled(!namesNatbib.isSelected());
 253  
 
 254  48898
         String numF = _prefs.get("numericFields");
 255  48898
         if (numF == null)
 256  0
             numericFields.setText("");
 257  
         else
 258  48898
             numericFields.setText(numF);
 259  48898
         }
 260  
 
 261  
         /**
 262  
          * Store changes to table preferences. This method is called when the user
 263  
          * clicks Ok.
 264  
          * 
 265  
          */
 266  
         public void storeSettings() {
 267  
 
 268  310
                 _prefs.putBoolean("namesAsIs", namesAsIs.isSelected());
 269  310
                 _prefs.putBoolean("namesFf", namesFf.isSelected());
 270  310
                 _prefs.putBoolean("namesNatbib", namesNatbib.isSelected());
 271  310
                 _prefs.putBoolean("namesLastOnly", lastNamesOnly.isSelected());
 272  310
                 _prefs.putBoolean("abbrAuthorNames", abbrNames.isSelected());
 273  
 
 274  310
         _prefs.putBoolean("fileColumn", fileColumn.isSelected());
 275  310
         _prefs.putBoolean("pdfColumn", pdfColumn.isSelected());
 276  310
                 _prefs.putBoolean("urlColumn", urlColumn.isSelected());
 277  310
                 _prefs.putBoolean("citeseerColumn", citeseerColumn.isSelected());
 278  310
                 _prefs.putInt("autoResizeMode",
 279  
                         autoResizeMode.isSelected() ? JTable.AUTO_RESIZE_ALL_COLUMNS : JTable.AUTO_RESIZE_OFF);
 280  310
                 _prefs.putBoolean("priDescending", priDesc.isSelected());
 281  310
                 _prefs.putBoolean("secDescending", secDesc.isSelected());
 282  310
                 _prefs.putBoolean("terDescending", terDesc.isSelected());
 283  
                 // _prefs.put("secSort",
 284  
                 // GUIGlobals.ALL_FIELDS[secSort.getSelectedIndex()]);
 285  
                 // _prefs.put("terSort",
 286  
                 // GUIGlobals.ALL_FIELDS[terSort.getSelectedIndex()]);
 287  310
                 _prefs.put("priSort", priField.getText().toLowerCase().trim());
 288  310
                 _prefs.put("secSort", secField.getText().toLowerCase().trim());
 289  310
                 _prefs.put("terSort", terField.getText().toLowerCase().trim());
 290  
 
 291  310
                 _prefs.putBoolean("floatMarkedEntries", floatMarked.isSelected());
 292  
                 // updatefont
 293  
 
 294  310
         String oldVal = _prefs.get("numericFields");
 295  310
         String newVal = numericFields.getText().trim();
 296  310
         if (newVal.length() == 0)
 297  0
             newVal = null;
 298  310
         if (((newVal != null) && (oldVal == null))
 299  
                 || ((newVal == null) && (oldVal != null))
 300  
                 || ((newVal != null) && !newVal.equals(oldVal))) {
 301  1
             _prefs.put("numericFields", newVal);
 302  1
             BibtexFields.setNumericFieldsFromPrefs();
 303  
         }
 304  
 
 305  310
         }
 306  
 
 307  
         public boolean readyToClose() {
 308  312
                 return true;
 309  
         }
 310  
 
 311  
         public String getTabName() {
 312  97798
                 return Globals.lang("Entry table");
 313  
         }
 314  
 }