/**************************************************************************
OmegaT - Computer Assisted Translation (CAT) tool
with fuzzy matching, translation memory, keyword search,
glossaries, and translation leveraging into updated projects.
Copyright (C) 2014 Aaron Madlon-Kay
Home page: http://www.omegat.org/
Support center: http://groups.yahoo.com/group/OmegaT/
This file is part of OmegaT.
OmegaT is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OmegaT is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
**************************************************************************/
package org.omegat.gui.search;
import java.util.ArrayList;
import java.util.List;
import org.omegat.util.Preferences;
/**
* A class for managing search/replace history
*
* @author Aaron Madlon-Kay
*/
public class HistoryManager {
private static final List<String> searchItems;
private static final List<String> replaceItems;
private static final int maxItems;
static {
maxItems = Preferences.getPreferenceDefault(Preferences.SEARCHWINDOW_HISTORY_SIZE, 10);
searchItems = new ArrayList<String>(maxItems);
replaceItems = new ArrayList<String>(maxItems);
for (int i = 0; i < maxItems; i++) {
String searchItem = Preferences.getPreferenceDefault(Preferences.SEARCHWINDOW_SEARCH_HISTORY_ITEM_PREFIX + i, null);
if (searchItem != null) {
searchItems.add(searchItem);
}
String replaceItem = Preferences.getPreferenceDefault(Preferences.SEARCHWINDOW_REPLACE_HISTORY_ITEM_PREFIX + i, null);
if (replaceItem != null) {
replaceItems.add(replaceItem);
}
}
}
private HistoryManager() {}
public static void addSearchItem(String item) {
synchronized (searchItems) {
searchItems.remove(item);
searchItems.add(0, item);
while (searchItems.size() > maxItems) {
searchItems.remove(maxItems);
}
}
}
public static void addReplaceItem(String item) {
synchronized (replaceItems) {
replaceItems.remove(item);
replaceItems.add(0, item);
while (replaceItems.size() > maxItems) {
replaceItems.remove(maxItems);
}
}
}
public static String[] getSearchItems() {
synchronized (searchItems) {
return searchItems.toArray(new String[searchItems.size()]);
}
}
public static String[] getReplaceItems() {
synchronized (replaceItems) {
return replaceItems.toArray(new String[replaceItems.size()]);
}
}
public static void save() {
synchronized (searchItems) {
for (int i = 0; i < searchItems.size(); i++) {
Preferences.setPreference(Preferences.SEARCHWINDOW_SEARCH_HISTORY_ITEM_PREFIX + i,
searchItems.get(i));
}
}
synchronized (replaceItems) {
for (int i = 0; i < replaceItems.size(); i++) {
Preferences.setPreference(Preferences.SEARCHWINDOW_REPLACE_HISTORY_ITEM_PREFIX + i,
replaceItems.get(i));
}
}
}
}