package org.jabref.gui.preftabs;
import java.awt.BorderLayout;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.jabref.logic.l10n.Localization;
import org.jabref.preferences.JabRefPreferences;
import com.jgoodies.forms.builder.DefaultFormBuilder;
import com.jgoodies.forms.layout.FormLayout;
class GroupsPrefsTab extends JPanel implements PrefsTab {
private final JCheckBox hideNonHits = new JCheckBox(Localization.lang("Hide non-hits"));
private final JCheckBox grayOut = new JCheckBox(Localization.lang("Gray out non-hits"));
private final JCheckBox autoAssignGroup = new JCheckBox(
Localization.lang("Automatically assign new entry to selected groups"));
private final JTextField groupingField = new JTextField(20);
private final JTextField keywordSeparator = new JTextField(2);
private final JabRefPreferences prefs;
public GroupsPrefsTab(JabRefPreferences prefs) {
this.prefs = prefs;
keywordSeparator.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
keywordSeparator.selectAll();
}
@Override
public void focusLost(FocusEvent e) {
// deselection is automatic
}
});
ButtonGroup hideMode = new ButtonGroup();
hideMode.add(grayOut);
hideMode.add(hideNonHits);
FormLayout layout = new FormLayout("9dlu, pref", //500px",
"p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p");
DefaultFormBuilder builder = new DefaultFormBuilder(layout);
builder.appendSeparator(Localization.lang("View"));
builder.nextLine();
builder.nextLine();
builder.nextColumn();
builder.append(hideNonHits);
builder.nextLine();
builder.nextLine();
builder.nextColumn();
builder.append(grayOut);
builder.nextLine();
builder.nextLine();
builder.nextColumn();
builder.append(autoAssignGroup);
builder.nextLine();
builder.nextLine();
builder.appendSeparator(Localization.lang("Dynamic groups"));
builder.nextLine();
builder.nextLine();
builder.nextColumn();
// build subcomponent
FormLayout layout2 = new FormLayout("left:pref, 2dlu, left:pref",
"p, 3dlu, p");
DefaultFormBuilder builder2 = new DefaultFormBuilder(layout2);
builder2.append(new JLabel(Localization.lang("Default grouping field") + ":"));
builder2.append(groupingField);
builder2.nextLine();
builder2.nextLine();
builder2.append(new JLabel(Localization.lang("When adding/removing keywords, separate them by") + ":"));
builder2.append(keywordSeparator);
builder.append(builder2.getPanel());
setLayout(new BorderLayout());
JPanel panel = builder.getPanel();
panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
add(panel, BorderLayout.CENTER);
}
@Override
public void setValues() {
grayOut.setSelected(prefs.getBoolean(JabRefPreferences.GRAY_OUT_NON_HITS));
groupingField.setText(prefs.get(JabRefPreferences.GROUPS_DEFAULT_FIELD));
keywordSeparator.setText(prefs.get(JabRefPreferences.KEYWORD_SEPARATOR));
autoAssignGroup.setSelected(prefs.getBoolean(JabRefPreferences.AUTO_ASSIGN_GROUP));
}
@Override
public void storeSettings() {
prefs.putBoolean(JabRefPreferences.GRAY_OUT_NON_HITS, grayOut.isSelected());
prefs.put(JabRefPreferences.GROUPS_DEFAULT_FIELD, groupingField.getText().trim());
prefs.putBoolean(JabRefPreferences.AUTO_ASSIGN_GROUP, autoAssignGroup.isSelected());
prefs.put(JabRefPreferences.KEYWORD_SEPARATOR, keywordSeparator.getText());
}
@Override
public boolean validateSettings() {
return true;
}
@Override
public String getTabName() {
return Localization.lang("Groups");
}
}