KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tonbeller > wcf > pagestack > PageStack


1 /*
2  * ====================================================================
3  * This software is subject to the terms of the Common Public License
4  * Agreement, available at the following URL:
5  * http://www.opensource.org/licenses/cpl.html .
6  * Copyright (C) 2003-2004 TONBELLER AG.
7  * All Rights Reserved.
8  * You must accept the terms of that agreement to use this software.
9  * ====================================================================
10  *
11  *
12  */

13 package com.tonbeller.wcf.pagestack;
14
15 import java.util.Iterator JavaDoc;
16 import java.util.Stack JavaDoc;
17
18 import javax.servlet.http.HttpSession JavaDoc;
19
20 /**
21  * @author av
22  */

23 public class PageStack {
24   public static final String JavaDoc WEBKEY = "wcfPageStack";
25   Stack JavaDoc stack = new Stack JavaDoc();
26   
27   // test only
28
PageStack() {
29   }
30
31   public static synchronized PageStack instance(HttpSession JavaDoc session) {
32     PageStack ps = (PageStack) session.getAttribute(WEBKEY);
33     if (ps == null) {
34       ps = new PageStack();
35       session.setAttribute(WEBKEY, ps);
36     }
37     return ps;
38   }
39
40   public void setCurrentPage(Page page) {
41     while (stack.contains(page))
42       stack.pop();
43     stack.push(page);
44   }
45
46   /**
47    * returns the n-th Page.
48    * @param n nuber of pages back (0 = current page, 1 = previous page etc)
49    * @return null if n > number of pages, Page else.
50    */

51   public Page peek(int n) {
52     // reverse order
53
n = stack.size() - n - 1;
54     if (n < 0)
55       return null;
56     return (Page)stack.get(n);
57   }
58   
59   public Iterator JavaDoc iterator() {
60     return stack.iterator();
61   }
62
63   public void clear() {
64     stack.clear();
65   }
66
67 }
Popular Tags