01: /*- CommandHistory.java -------------------------------------------+
02: | |
03: | Copyright (C) 2002-2003 Joseph Monti, LlamaChat |
04: | countjoe@users.sourceforge.net |
05: | http://www.42llamas.com/LlamaChat/ |
06: | |
07: | This program is free software; you can redistribute it and/or |
08: | modify it under the terms of the GNU General Public License |
09: | as published by the Free Software Foundation; either version 2 |
10: | of the License, or (at your option) any later version |
11: | |
12: | This program is distributed in the hope that it will be useful, |
13: | but WITHOUT ANY WARRANTY; without even the implied warranty of |
14: | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15: | GNU General Public License for more details. |
16: | |
17: | A copy of the GNU General Public License may be found in the |
18: | installation directory named "GNUGPL.txt" |
19: | |
20: +-----------------------------------------------------------------+
21: */
22:
23: package client;
24:
25: /* -------------------- JavaDoc Information ----------------------*/
26: /**
27: * Class to manage the history of messages/commands from the user
28: * Is in the form of a fixed length stack that drops items from
29: * the end of the stack when the maximum length is reached exends
30: * the linked list class; all items on the list are Strings
31: * @author Joseph Monti <a href="mailto:countjoe@users.sourceforge.net">countjoe@users.sourceforge.net</a>
32: * @version 0.8
33: */
34: public final class CommandHistory extends java.util.LinkedList {
35: /**
36: * the maximum size of the list
37: */
38: private static int MAX_SIZE;
39:
40: /**
41: * the current retrieved position
42: */
43: private static int current;
44:
45: CommandHistory(int s) {
46: super ();
47: MAX_SIZE = s;
48: current = -1;
49: }
50:
51: /**
52: * Adds a string to the list and checks to see
53: * if the new item breached the maximum size of the list
54: * also sets the current to be -1 to reset the current position
55: * @param s the string to be added
56: */
57: public void add(String s) {
58: addFirst(s);
59: if (size() > MAX_SIZE) {
60: removeLast();
61: }
62: current = -1;
63: }
64:
65: /**
66: * retrives the next oldest item from the list
67: * while stopping at the top and incrementing
68: * the current item
69: * @return the appropriate item from the list, or null if at top
70: */
71: public String getUp() {
72: if (size() == 0)
73: return null;
74: if (current + 1 >= size())
75: return null;
76: current++;
77: return (String) get(current);
78: }
79:
80: /**
81: * retrieves the next newest item from the list
82: * while stopping that the bottom and decrementing
83: * the current item
84: * @return the appropriate item from the list, or null if at bottom
85: */
86: public String getDown() {
87: if (size() == 0)
88: return null;
89: if (current > 0) {
90: current--;
91: return (String) get(current);
92: } else if (current == 0) {
93: current--;
94: return "";
95: }
96: return null;
97: }
98: }
|