1
2
3
4
5
6
7
8 package org.asyrinx.joey.tapestry.components.stative;
9
10 import java.io.Serializable;
11 import java.util.Stack;
12
13 import org.apache.tapestry.IPage;
14 import org.apache.tapestry.IRequestCycle;
15 import org.asyrinx.brownie.core.user.IUser;
16 import org.asyrinx.joey.om.SearchCondition;
17
18 /***
19 * @author akima
20 */
21 public class BaseVisit implements Serializable {
22
23 /***
24 *
25 */
26 public BaseVisit() {
27 super();
28 }
29
30 private IUser loginUser = null;
31
32 private boolean requestDebug = false;
33 private boolean disableInspector = false;
34
35 public boolean isUserLogined() {
36 return loginUser != null;
37 }
38
39 public String getLoginUserDisplayName() {
40 return (loginUser != null) ? loginUser.getDisplayName() : "";
41 }
42
43 public void setRequestDebug(boolean value) {
44 this.requestDebug = value;
45 }
46
47 public boolean getRequestDebug() {
48 return requestDebug;
49 }
50
51 public boolean getDisableInspector() {
52 return disableInspector;
53 }
54
55 public void setDisableInspector(boolean disableInspector) {
56 this.disableInspector = disableInspector;
57 }
58
59 private final Stack accessHistories = new Stack();
60
61 class AccessObject implements Serializable {
62 public AccessObject(String pageName, Object object) {
63 super();
64 this.pageName = pageName;
65 this.object = object;
66 }
67 final String pageName;
68 final Object object;
69 }
70
71 public void saveLastAccessPage(IPage page) {
72 if (page == null)
73 return;
74 final Object object;
75 if (page instanceof BaseEditPage) {
76 final BaseEditPage editPage = (BaseEditPage) page;
77 object = editPage.getEditObject();
78 } else {
79 final BaseListPage listPage = (BaseListPage) page;
80 object = listPage.getWayToSearch();
81 }
82 accessHistories.push(new AccessObject(page.getPageName(), object));
83 }
84
85 public void goBackToLastAccessPage(IRequestCycle cycle) {
86 if (accessHistories.isEmpty())
87 return;
88 AccessObject accessObject = (AccessObject) accessHistories.pop();
89 final IPage page = cycle.getPage(accessObject.pageName);
90 if (page == null)
91 return;
92 if (page instanceof BaseEditPage) {
93 final BaseEditPage editPage = (BaseEditPage) page;
94 editPage.setEditObject(accessObject.object);
95 } else {
96 final BaseListPage listPage = (BaseListPage) page;
97 if (accessObject.object instanceof SearchCondition)
98 listPage.setWayToSearch((SearchCondition) accessObject.object);
99 listPage.search(cycle);
100 }
101 cycle.activate(page);
102 }
103
104 /***
105 * @return
106 */
107 public IUser getLoginUser() {
108 return loginUser;
109 }
110
111 /***
112 * @param user
113 */
114 public void setLoginUser(IUser user) {
115 loginUser = user;
116 }
117
118 }