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  1058839791
 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  122252627
         public TablePrefsTab(JabRefPreferences prefs, JabRefFrame frame) {
 38  122252627
                 _prefs = prefs;
 39  122252627
                 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  122252627
                 Vector<String> v = new Vector<String>(Arrays.asList(BibtexFields.getAllFieldNames()));
 49  122252627
                 v.add(BibtexFields.KEY_FIELD);
 50  122252627
                 Collections.sort(v);
 51  122252627
                 Object[] allPlusKey = v.toArray();
 52  122252627
                 priSort = new JComboBox(allPlusKey);
 53  122252627
                 secSort = new JComboBox(allPlusKey);
 54  122252627
                 terSort = new JComboBox(allPlusKey);
 55  
 
 56  122252627
                 autoResizeMode = new JCheckBox(Globals.lang("Fit table horizontally on screen"));
 57  
 
 58  122252627
                 namesAsIs = new JRadioButton(Globals.lang("Show names unchanged"));
 59  122252627
                 namesFf = new JRadioButton(Globals.lang("Show 'Firstname Lastname'"));
 60  122252627
                 namesFl = new JRadioButton(Globals.lang("Show 'Lastname, Firstname'"));
 61  122252627
                 namesNatbib = new JRadioButton(Globals.lang("Natbib style"));
 62  122252627
                 noAbbrNames = new JRadioButton(Globals.lang("Do not abbreviate names"));
 63  122252627
                 abbrNames = new JRadioButton(Globals.lang("Abbreviate names"));
 64  122252627
                 lastNamesOnly = new JRadioButton(Globals.lang("Show last names only"));
 65  122252627
         fileColumn = new JCheckBox(Globals.lang("Show file column"));
 66  122252627
         pdfColumn = new JCheckBox(Globals.lang("Show PDF/PS column"));
 67  122252627
                 urlColumn = new JCheckBox(Globals.lang("Show URL/DOI column"));
 68  122252627
                 citeseerColumn = new JCheckBox(Globals.lang("Show CiteSeer column"));
 69  
 
 70  122252627
                 floatMarked = new JCheckBox(Globals.lang("Float marked entries"));
 71  
 
 72  122252627
                 priField = new JTextField(10);
 73  122252627
                 secField = new JTextField(10);
 74  122252627
                 terField = new JTextField(10);
 75  
 
 76  122252627
         numericFields = new JTextField(30);
 77  
 
 78  122252627
                 priSort.insertItemAt(Globals.lang("<select>"), 0);
 79  122252627
                 secSort.insertItemAt(Globals.lang("<select>"), 0);
 80  122252627
                 terSort.insertItemAt(Globals.lang("<select>"), 0);
 81  
 
 82  122252627
                 priSort.addActionListener(new ActionListener() {
 83  
                         public void actionPerformed(ActionEvent e) {
 84  123293597
                                 if (priSort.getSelectedIndex() > 0) {
 85  0
                     priField.setText(priSort.getSelectedItem().toString());
 86  0
                     priSort.setSelectedIndex(0);
 87  
                                 }
 88  123293597
                         }
 89  
                 });
 90  122252627
                 secSort.addActionListener(new ActionListener() {
 91  
                         public void actionPerformed(ActionEvent e) {
 92  123293597
                                 if (secSort.getSelectedIndex() > 0) {
 93  0
                     secField.setText(secSort.getSelectedItem().toString());
 94  0
                     secSort.setSelectedIndex(0);
 95  
                                 }
 96  123293597
                         }
 97  
                 });
 98  122252627
                 terSort.addActionListener(new ActionListener() {
 99  
                         public void actionPerformed(ActionEvent e) {
 100  123293597
                                 if (terSort.getSelectedIndex() > 0) {
 101  0
                                         terField.setText(terSort.getSelectedItem().toString());
 102  0
                     terSort.setSelectedIndex(0);
 103  
                                 }
 104  123293597
                         }
 105  
                 });
 106  
 
 107  122252627
                 ButtonGroup bg = new ButtonGroup();
 108  122252627
                 bg.add(namesAsIs);
 109  122252627
                 bg.add(namesNatbib);
 110  122252627
                 bg.add(namesFf);
 111  122252627
                 bg.add(namesFl);
 112  122252627
                 ButtonGroup bg2 = new ButtonGroup();
 113  122252627
                 bg2.add(lastNamesOnly);
 114  122252627
                 bg2.add(abbrNames);
 115  122252627
                 bg2.add(noAbbrNames);
 116  122252627
                 priDesc = new JCheckBox(Globals.lang("Descending"));
 117  122252627
                 secDesc = new JCheckBox(Globals.lang("Descending"));
 118  122252627
                 terDesc = new JCheckBox(Globals.lang("Descending"));
 119  
 
 120  122252627
                 FormLayout layout = new FormLayout(
 121  
                         "1dlu, 8dlu, left:pref, 4dlu, fill:pref, 4dlu, fill:60dlu, 4dlu, fill:pref", "");
 122  122252627
                 DefaultFormBuilder builder = new DefaultFormBuilder(layout);
 123  
                 JLabel lab;
 124  122252627
                 JPanel pan = new JPanel();
 125  122252627
                 builder.appendSeparator(Globals.lang("Special table columns"));
 126  122252627
                 builder.nextLine();
 127  122252627
                 builder.append(pan);
 128  122252627
                 builder.append(fileColumn);
 129  122252627
                 builder.nextLine();
 130  122252627
         builder.append(pan);
 131  122252627
         builder.append(pdfColumn);
 132  122252627
         builder.nextLine();
 133  122252627
         builder.append(pan);
 134  122252627
         builder.append(urlColumn);
 135  122252627
                 builder.nextLine();
 136  122252627
                 builder.append(pan);
 137  122252627
                 builder.append(citeseerColumn);
 138  122252627
                 builder.nextLine();
 139  122252627
                 builder.appendSeparator(Globals.lang("Format of author and editor names"));
 140  122252627
                 DefaultFormBuilder nameBuilder = new DefaultFormBuilder(new FormLayout(
 141  
                         "left:pref, 8dlu, left:pref", ""));
 142  
 
 143  122252627
                 nameBuilder.append(namesAsIs);
 144  122252627
                 nameBuilder.append(noAbbrNames);
 145  122252627
                 nameBuilder.nextLine();
 146  122252627
                 nameBuilder.append(namesFf);
 147  122252627
                 nameBuilder.append(abbrNames);
 148  122252627
                 nameBuilder.nextLine();
 149  122252627
                 nameBuilder.append(namesFl);
 150  122252627
                 nameBuilder.append(lastNamesOnly);
 151  122252627
                 nameBuilder.nextLine();
 152  122252627
                 nameBuilder.append(namesNatbib);
 153  122252627
                 builder.append(pan);
 154  122252627
                 builder.append(nameBuilder.getPanel());
 155  122252627
                 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  122252627
                 builder.appendSeparator(Globals.lang("Default sort criteria"));
 162  
                 // Create a new panel with its own FormLayout for these items:
 163  122252627
                 FormLayout layout2 = new FormLayout(
 164  
                         "left:pref, 8dlu, fill:pref, 4dlu, fill:60dlu, 4dlu, left:pref", "");
 165  122252627
                 DefaultFormBuilder builder2 = new DefaultFormBuilder(layout2);
 166  122252627
                 lab = new JLabel(Globals.lang("Primary sort criterion"));
 167  122252627
                 builder2.append(lab);
 168  122252627
                 builder2.append(priSort);
 169  122252627
                 builder2.append(priField);
 170  122252627
                 builder2.append(priDesc);
 171  122252627
                 builder2.nextLine();
 172  122252627
                 lab = new JLabel(Globals.lang("Secondary sort criterion"));
 173  122252627
                 builder2.append(lab);
 174  122252627
                 builder2.append(secSort);
 175  122252627
                 builder2.append(secField);
 176  122252627
                 builder2.append(secDesc);
 177  122252627
                 builder2.nextLine();
 178  122252627
                 lab = new JLabel(Globals.lang("Tertiary sort criterion"));
 179  122252627
                 builder2.append(lab);
 180  122252627
                 builder2.append(terSort);
 181  122252627
                 builder2.append(terField);
 182  122252627
                 builder2.append(terDesc);
 183  122252627
                 builder.nextLine();
 184  122252627
                 builder.append(pan);
 185  122252627
                 builder.append(builder2.getPanel());
 186  122252627
                 builder.nextLine();
 187  122252627
                 builder.append(pan);
 188  122252627
                 builder.append(floatMarked);
 189  122252627
                 builder.nextLine();
 190  122252627
         builder.append(pan);
 191  122252627
         builder2 = new DefaultFormBuilder(new FormLayout("left:pref, 8dlu, fill:pref",""));
 192  122252627
         builder2.append(Globals.lang("Sort the following fields as numeric fields")+":");
 193  122252627
         builder2.append(numericFields);
 194  122252627
         builder.append(builder2.getPanel(), 5);
 195  122252627
         builder.nextLine();
 196  122252627
                 builder.appendSeparator(Globals.lang("General"));
 197  122251302
                 builder.append(pan);
 198  122251302
                 builder.append(autoResizeMode);
 199  122251302
                 builder.nextLine();
 200  
 
 201  122251302
                 pan = builder.getPanel();
 202  122251302
                 pan.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
 203  122251302
                 add(pan, BorderLayout.CENTER);
 204  
 
 205  122251302
                 namesNatbib.addChangeListener(new ChangeListener() {
 206  
                         public void stateChanged(ChangeEvent changeEvent) {
 207  114826500
                                 abbrNames.setEnabled(!namesNatbib.isSelected());
 208  114826500
                                 lastNamesOnly.setEnabled(!namesNatbib.isSelected());
 209  114826500
                                 noAbbrNames.setEnabled(!namesNatbib.isSelected());
 210  114826500
                         }
 211  
                 });
 212  122251302
         }
 213  
 
 214  
         public void setValues() {
 215  123293597
                 autoResizeMode
 216  
                         .setSelected((_prefs.getInt("autoResizeMode") == JTable.AUTO_RESIZE_ALL_COLUMNS));
 217  123293597
                 fileColumn.setSelected(_prefs.getBoolean("fileColumn"));
 218  123293597
         pdfColumn.setSelected(_prefs.getBoolean("pdfColumn"));
 219  123293597
                 urlColumn.setSelected(_prefs.getBoolean("urlColumn"));
 220  123293597
         fileColumn.setSelected(_prefs.getBoolean("fileColumn"));
 221  123293597
         citeseerColumn.setSelected(_prefs.getBoolean("citeseerColumn"));
 222  
 
 223  123293597
                 priField.setText(_prefs.get("priSort"));
 224  123293597
                 secField.setText(_prefs.get("secSort"));
 225  123293597
                 terField.setText(_prefs.get("terSort"));
 226  123293597
                 priSort.setSelectedIndex(0);
 227  123293597
                 secSort.setSelectedIndex(0);
 228  123293597
                 terSort.setSelectedIndex(0);
 229  
 
 230  123293597
                 if (_prefs.getBoolean("namesAsIs"))
 231  0
                         namesAsIs.setSelected(true);
 232  123293597
                 else if (_prefs.getBoolean("namesFf"))
 233  13447425
                         namesFf.setSelected(true);
 234  109846172
                 else if (_prefs.getBoolean("namesNatbib"))
 235  109846172
                         namesNatbib.setSelected(true);
 236  
                 else
 237  0
                         namesFl.setSelected(true);
 238  123293597
                 if (_prefs.getBoolean("abbrAuthorNames"))
 239  123293597
                         abbrNames.setSelected(true);
 240  0
                 else if (_prefs.getBoolean("namesLastOnly"))
 241  0
                         lastNamesOnly.setSelected(true);
 242  
                 else
 243  0
                         noAbbrNames.setSelected(true);
 244  123293597
                 priDesc.setSelected(_prefs.getBoolean("priDescending"));
 245  123293597
                 secDesc.setSelected(_prefs.getBoolean("secDescending"));
 246  123293597
                 terDesc.setSelected(_prefs.getBoolean("terDescending"));
 247  
 
 248  123293597
                 floatMarked.setSelected(_prefs.getBoolean("floatMarkedEntries"));
 249  
 
 250  123293597
                 abbrNames.setEnabled(!namesNatbib.isSelected());
 251  123293597
                 lastNamesOnly.setEnabled(!namesNatbib.isSelected());
 252  123293597
                 noAbbrNames.setEnabled(!namesNatbib.isSelected());
 253  
 
 254  123293597
         String numF = _prefs.get("numericFields");
 255  123293597
         if (numF == null)
 256  0
             numericFields.setText("");
 257  
         else
 258  123293597
             numericFields.setText(numF);
 259  123293597
         }
 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  28777213
                 _prefs.putBoolean("namesAsIs", namesAsIs.isSelected());
 269  28777213
                 _prefs.putBoolean("namesFf", namesFf.isSelected());
 270  28777213
                 _prefs.putBoolean("namesNatbib", namesNatbib.isSelected());
 271  28777213
                 _prefs.putBoolean("namesLastOnly", lastNamesOnly.isSelected());
 272  28777213
                 _prefs.putBoolean("abbrAuthorNames", abbrNames.isSelected());
 273  
 
 274  28777213
         _prefs.putBoolean("fileColumn", fileColumn.isSelected());
 275  28777213
         _prefs.putBoolean("pdfColumn", pdfColumn.isSelected());
 276  28777213
                 _prefs.putBoolean("urlColumn", urlColumn.isSelected());
 277  28777213
                 _prefs.putBoolean("citeseerColumn", citeseerColumn.isSelected());
 278  28777213
                 _prefs.putInt("autoResizeMode",
 279  
                         autoResizeMode.isSelected() ? JTable.AUTO_RESIZE_ALL_COLUMNS : JTable.AUTO_RESIZE_OFF);
 280  28777213
                 _prefs.putBoolean("priDescending", priDesc.isSelected());
 281  28777213
                 _prefs.putBoolean("secDescending", secDesc.isSelected());
 282  28777213
                 _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  28777213
                 _prefs.put("priSort", priField.getText().toLowerCase().trim());
 288  28777213
                 _prefs.put("secSort", secField.getText().toLowerCase().trim());
 289  28777213
                 _prefs.put("terSort", terField.getText().toLowerCase().trim());
 290  
 
 291  28777213
                 _prefs.putBoolean("floatMarkedEntries", floatMarked.isSelected());
 292  
                 // updatefont
 293  
 
 294  28777213
         String oldVal = _prefs.get("numericFields");
 295  28777213
         String newVal = numericFields.getText().trim();
 296  28777213
         if (newVal.length() == 0)
 297  0
             newVal = null;
 298  28777213
         if (((newVal != null) && (oldVal == null))
 299  
                 || ((newVal == null) && (oldVal != null))
 300  
                 || ((newVal != null) && !newVal.equals(oldVal))) {
 301  245626
             _prefs.put("numericFields", newVal);
 302  245626
             BibtexFields.setNumericFieldsFromPrefs();
 303  
         }
 304  
 
 305  28777213
         }
 306  
 
 307  
         public boolean readyToClose() {
 308  29016645
                 return true;
 309  
         }
 310  
 
 311  
         public String getTabName() {
 312  244486704
                 return Globals.lang("Entry table");
 313  
         }
 314  
 }