blob: cc1b0e42b5902875030e7a7f66408d97a9acb14b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2011 SpringSource, a divison of VMware, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* SpringSource, a division of VMware, Inc. - initial API and implementation
* SAP AG - enhancements and bug fixes
*******************************************************************************/
package org.eclipse.libra.framework.editor.ui.internal;
import java.util.ArrayList;
import java.util.List;
/**
* @author Christian Dupuis
* @author Kaloyan Raev
*/
public class SearchTextHistory {
private static final int MAX_HISTORY = 10;
private List<String> history= new ArrayList<String>();
private int index = 0;
public void add(String text) {
int found = -1;
int size = history.size();
for (int i = 0; i < size; i++) {
String s = history.get(i);
if (s.equals(text)) {
found = i;
break;
}
}
if (found == -1) {
if (size >= MAX_HISTORY)
history.remove(size - 1);
history.add(0, text);
} else if (found != 0) {
history.remove(found);
history.add(0, text);
}
index = 0;
}
public String back() {
if (canBack()) {
String text = history.get(index);
index++;
return text;
}
return null;
}
public String forward() {
if (canForward()) {
index--;
String text = history.get(index);
return text;
}
return null;
}
public boolean canForward() {
return index > 0;
}
public boolean canBack() {
return index < history.size();
}
public String current() {
return (history.size() == 0) ? null : history.get(0);
}
}