KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > client > CommandHistory


1 /*- CommandHistory.java -------------------------------------------+
2  | |
3  | Copyright (C) 2002-2003 Joseph Monti, LlamaChat |
4  | countjoe@users.sourceforge.net |
5  | http://www.42llamas.com/LlamaChat/ |
6  | |
7  | This program is free software; you can redistribute it and/or |
8  | modify it under the terms of the GNU General Public License |
9  | 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 JavaDoc {
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 JavaDoc 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 JavaDoc getUp() {
72         if (size() == 0) return null;
73         if (current+1 >= size())
74             return null;
75         current++;
76         return (String JavaDoc) get(current);
77     }
78     
79     /**
80      * retrieves the next newest item from the list
81      * while stopping that the bottom and decrementing
82      * the current item
83      * @return the appropriate item from the list, or null if at bottom
84      */

85     public String JavaDoc getDown() {
86         if (size() == 0) return null;
87         if (current > 0) {
88             current--;
89             return (String JavaDoc) get(current);
90         } else if (current == 0) {
91             current--;
92             return "";
93         }
94             return null;
95     }
96 }
97
Popular Tags