OSDN Git Service

24d99cceda82cf35ce78606c47420c9a1756fe37
[sawarabi-fonts/sawarabi-fonts.git] / chartool / src / jp / sourceforge / sawarabifonts / chartool / HistoryBuffer.java
1 /*
2  * Copyright (C) 2010, mshio <mshio@users.sourceforge.jp>
3  *
4  * This program is free software: you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16  * ---
17  * Require JDK 1.5 (or later)
18  */
19 package jp.sourceforge.sawarabifonts.chartool;
20
21 import java.util.LinkedList;
22 import java.util.ListIterator;
23
24 public class HistoryBuffer {
25         private final static int MAX_LENGTH = 100;
26         private final LinkedList<String> buffer = new LinkedList<String>();
27         private ListIterator<String> iterator = null;
28         private boolean prev = true;
29
30         public void add(String buf) {
31                 buffer.add(buf);
32                 if (buffer.size() >= MAX_LENGTH) { buffer.removeFirst(); }
33                 iterator = buffer.listIterator(buffer.size() - 1);
34                 prev = true;
35         }
36
37         public String getPrev() {
38                 String ret = null;
39                 if (! buffer.isEmpty() && iterator.hasPrevious()) {
40                         ret = iterator.previous();
41                         if (! prev && iterator.hasPrevious()) { ret = iterator.previous(); }
42                         prev = true;
43                 }
44                 return ret;
45         }
46
47         public String getNext() {
48                 String ret = null;
49                 if (! buffer.isEmpty() && iterator.hasNext()) {
50                         ret = iterator.next();
51                         if (prev && iterator.hasNext()) { ret = iterator.next(); }
52                         prev = false;
53                 }
54                 return ret;
55         }
56
57         public String getCurrent() {
58                 return buffer.isEmpty() ? null : buffer.getLast();
59         }
60 }