package org.jabref.gui.preftabs;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import org.jabref.gui.SaveOrderConfigDisplay;
import org.jabref.logic.l10n.Localization;
import org.jabref.preferences.JabRefPreferences;
import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.FormLayout;
/**
* Preference tab for file sorting options.
*/
class ExportSortingPrefsTab extends JPanel implements PrefsTab {
private final JabRefPreferences prefs;
private final JRadioButton exportInOriginalOrder;
private final JRadioButton exportInTableOrder;
private final JRadioButton exportInSpecifiedOrder;
private final SaveOrderConfigDisplay exportOrderPanel;
public ExportSortingPrefsTab(JabRefPreferences prefs) {
this.prefs = prefs;
FormLayout layout = new FormLayout("4dlu, left:pref, 4dlu, fill:pref", "");
DefaultFormBuilder builder = new DefaultFormBuilder(layout);
builder.leadingColumnOffset(1);
// EXPORT SORT ORDER
// create Components
exportInOriginalOrder = new JRadioButton(Localization.lang("Export entries in their original order"));
exportInTableOrder = new JRadioButton(Localization.lang("Export in current table sort order"));
exportInSpecifiedOrder = new JRadioButton(Localization.lang("Export entries ordered as specified"));
ButtonGroup buttonGroup = new ButtonGroup();
buttonGroup.add(exportInOriginalOrder);
buttonGroup.add(exportInTableOrder);
buttonGroup.add(exportInSpecifiedOrder);
ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
boolean selected = e.getSource() == exportInSpecifiedOrder;
exportOrderPanel.setEnabled(selected);
}
};
exportInOriginalOrder.addActionListener(listener);
exportInTableOrder.addActionListener(listener);
exportInSpecifiedOrder.addActionListener(listener);
// create GUI
builder.appendSeparator(Localization.lang("Export sort order"));
builder.append(exportInOriginalOrder, 1);
builder.nextLine();
builder.append(exportInTableOrder, 1);
builder.nextLine();
builder.append(exportInSpecifiedOrder, 1);
builder.nextLine();
exportOrderPanel = new SaveOrderConfigDisplay();
builder.append(exportOrderPanel.getPanel());
builder.nextLine();
// COMBINE EVERYTHING
JPanel pan = builder.getPanel();
pan.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
setLayout(new BorderLayout());
add(pan, BorderLayout.CENTER);
}
@Override
public void setValues() {
if (prefs.getBoolean(JabRefPreferences.EXPORT_IN_ORIGINAL_ORDER)) {
exportInOriginalOrder.setSelected(true);
} else if (prefs.getBoolean(JabRefPreferences.EXPORT_IN_SPECIFIED_ORDER)) {
exportInSpecifiedOrder.setSelected(true);
} else {
exportInTableOrder.setSelected(true);
}
boolean selected = prefs.getBoolean(JabRefPreferences.EXPORT_IN_SPECIFIED_ORDER);
exportOrderPanel.setEnabled(selected);
exportOrderPanel.setSaveOrderConfig(prefs.loadExportSaveOrder());
}
@Override
public void storeSettings() {
prefs.putBoolean(JabRefPreferences.EXPORT_IN_ORIGINAL_ORDER, exportInOriginalOrder.isSelected());
prefs.putBoolean(JabRefPreferences.EXPORT_IN_SPECIFIED_ORDER, exportInSpecifiedOrder.isSelected());
prefs.storeExportSaveOrder(exportOrderPanel.getSaveOrderConfig());
}
@Override
public boolean validateSettings() {
return true;
}
@Override
public String getTabName() {
return Localization.lang("Export sorting");
}
}