package org.jabref.preferences;
import java.util.Map;
import java.util.Objects;
import org.jabref.gui.search.SearchDisplayMode;
public class SearchPreferences {
private static final String SEARCH_GLOBAL = "searchGlobal";
private static final String SEARCH_DISPLAY_MODE = "searchDisplayMode";
private static final String SEARCH_CASE_SENSITIVE = "caseSensitiveSearch";
private static final String SEARCH_REG_EXP = "regExpSearch";
private static final String SEARCH_DIALOG_HEIGHT = "searchDialogHeight";
private static final String SEARCH_DIALOG_WIDTH = "searchDialogWidth";
private static final String SEARCH_DIALOG_POS_X = "searchDialogPosX";
private static final String SEARCH_DIALOG_POS_Y = "searchDialogPosY";
private final JabRefPreferences preferences;
public SearchPreferences(JabRefPreferences preferences) {
this.preferences = Objects.requireNonNull(preferences);
}
public static void putDefaults(Map<String, Object> defaults) {
defaults.put(SEARCH_GLOBAL, Boolean.FALSE);
defaults.put(SEARCH_DISPLAY_MODE, SearchDisplayMode.FILTER.toString());
defaults.put(SEARCH_CASE_SENSITIVE, Boolean.FALSE);
defaults.put(SEARCH_REG_EXP, Boolean.FALSE);
defaults.put(SEARCH_DIALOG_WIDTH, 650);
defaults.put(SEARCH_DIALOG_HEIGHT, 500);
defaults.put(SEARCH_DIALOG_POS_X, 0);
defaults.put(SEARCH_DIALOG_POS_Y, 0);
}
public boolean isGlobalSearch() {
return preferences.getBoolean(SEARCH_GLOBAL);
}
public SearchPreferences setGlobalSearch(boolean isGlobalSearch) {
preferences.putBoolean(SEARCH_GLOBAL, isGlobalSearch);
return this;
}
public SearchDisplayMode getSearchMode() {
try {
return SearchDisplayMode.valueOf(preferences.get(SEARCH_DISPLAY_MODE));
} catch (IllegalArgumentException ex) {
// Should only occur when the searchmode is set directly via preferences.put and the enum was not used
return SearchDisplayMode.valueOf((String) preferences.defaults.get(SEARCH_DISPLAY_MODE));
}
}
public SearchPreferences setSearchMode(SearchDisplayMode searchDisplayMode) {
preferences.put(SEARCH_DISPLAY_MODE, Objects.requireNonNull(searchDisplayMode).toString());
return this;
}
public boolean isCaseSensitive() {
return preferences.getBoolean(SEARCH_CASE_SENSITIVE);
}
public SearchPreferences setCaseSensitive(boolean isCaseSensitive) {
preferences.putBoolean(SEARCH_CASE_SENSITIVE, isCaseSensitive);
return this;
}
public boolean isRegularExpression() {
return preferences.getBoolean(SEARCH_REG_EXP);
}
public SearchPreferences setRegularExpression(boolean isRegularExpression) {
preferences.putBoolean(SEARCH_REG_EXP, isRegularExpression);
return this;
}
public int getSeachDialogWidth() {
return preferences.getInt(SEARCH_DIALOG_WIDTH);
}
public SearchPreferences setSearchDialogWidth(int width) {
preferences.putInt(SEARCH_DIALOG_WIDTH, width);
return this;
}
public int getSeachDialogHeight() {
return preferences.getInt(SEARCH_DIALOG_HEIGHT);
}
public SearchPreferences setSearchDialogHeight(int height) {
preferences.putInt(SEARCH_DIALOG_HEIGHT, height);
return this;
}
public int getSearchDialogPosX() {
return preferences.getInt(SEARCH_DIALOG_POS_X);
}
public SearchPreferences setSearchDialogPosX(int x) {
preferences.putInt(SEARCH_DIALOG_POS_X, x);
return this;
}
public int getSearchDialogPosY() {
return preferences.getInt(SEARCH_DIALOG_POS_Y);
}
public SearchPreferences setSearchDialogPosY(int y) {
preferences.putInt(SEARCH_DIALOG_POS_Y, y);
return this;
}
}