KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > roller > presentation > tags > menu > MenuItemImpl


1
2 package org.roller.presentation.tags.menu;
3
4 import java.util.ArrayList JavaDoc;
5 import java.util.Hashtable JavaDoc;
6
7 import javax.servlet.ServletContext JavaDoc;
8 import javax.servlet.http.HttpServletRequest JavaDoc;
9 import javax.servlet.http.HttpSession JavaDoc;
10 import javax.servlet.jsp.PageContext JavaDoc;
11
12 import org.apache.struts.config.ForwardConfig;
13 import org.apache.struts.config.ModuleConfig;
14 import org.apache.struts.util.RequestUtils;
15 import org.roller.RollerException;
16 import org.roller.presentation.RollerContext;
17
18
19 /////////////////////////////////////////////////////////////////////////
20

21 /**
22  * MenuImpls has collection of menu items. Multiple menus can be used
23  * in one session, but they must have unique names.
24  */

25 public class MenuItemImpl extends BaseRollerMenu implements MenuItem
26 {
27     private String JavaDoc mMenuId = null;
28     
29     /** Name of Struts forward */
30     String JavaDoc mForward = null;
31     
32     /** Is this the default menu? */
33     boolean mDefault = false;
34
35     //---------------------------------------------------
36

37     public MenuItemImpl() {}
38
39     /** Construct with name and Struts forward */
40     public MenuItemImpl(String JavaDoc n, String JavaDoc f)
41     {
42         super(n);
43         mForward = f;
44     }
45
46     /** Parent menu's ID */
47     public void setMenuId( String JavaDoc v ) { mMenuId = v; }
48
49     /** Parent menu's ID */
50     public String JavaDoc getMenuId() { return mMenuId; }
51
52     /** Struts forward */
53     public String JavaDoc getForward() { return mForward; }
54
55     /** Struts forward */
56     public void setForward( String JavaDoc forward ) { mForward = forward; }
57
58     /** Name of Struts forward menu item should link to */
59     public String JavaDoc getUrl( PageContext JavaDoc pctx )
60     {
61         String JavaDoc url = null;
62         try
63         {
64             Hashtable JavaDoc params = RollerMenuModel.createParams(
65                     (HttpServletRequest JavaDoc)pctx.getRequest());
66             params.put( RollerMenuModel.MENU_ITEM_KEY, getName() );
67
68             url = RequestUtils.computeURL(
69                 pctx,
70                 mForward, // forward
71
null, // href
72
null, // page
73
null,
74                 params, // params
75
null, // anchor
76
false ); // redirect
77
}
78         catch (Exception JavaDoc e)
79         {
80             pctx.getServletContext().log(
81                 "ERROR in menu item creating URL",e);
82         }
83         return url;
84     }
85
86     /** Given a request, tells if menu item is selected */
87     public boolean isSelected( HttpServletRequest JavaDoc req )
88     {
89         boolean selected = false;
90         HttpSession JavaDoc ses = req.getSession(false);
91         
92         String JavaDoc itemKey = req.getParameter(RollerMenuModel.MENU_ITEM_KEY );
93         if (null == itemKey)
94         {
95             itemKey = (String JavaDoc)req.getAttribute(RollerMenuModel.MENU_ITEM_KEY);
96         }
97         if (null == itemKey)
98         {
99             itemKey = (String JavaDoc)ses.getAttribute(mMenuId+"_"+RollerMenuModel.MENU_ITEM_KEY);
100         }
101
102         if (itemKey != null && itemKey.equals(mName))
103         {
104             selected = true;
105         }
106         else
107         {
108             // Is this item's forward the one being requested?
109
ServletContext JavaDoc ctx = RollerContext.getServletContext();
110             ModuleConfig mConfig = RequestUtils.getModuleConfig(req,ctx);
111             ForwardConfig fConfig = mConfig.findForwardConfig(mForward);
112             if (fConfig != null)
113             {
114                 // Is the forward path in the request's URL?
115
String JavaDoc url = req.getRequestURL().toString();
116                 
117                 if ( url.indexOf( fConfig.getPath() ) != -1 )
118                 {
119                     // Yes it is, so return true - this item is selected
120
selected = true;
121                 }
122                 
123             }
124         }
125         if (ses != null && selected)
126         {
127             ses.setAttribute(mMenuId+"_"+RollerMenuModel.MENU_ITEM_KEY, mName);
128         }
129         return selected;
130     }
131
132 }
133
134
135
136 //// get menu key from request param or from cookie
137
//String menuKeyName = mMenuId+"rmk";
138
//String menuKey = req.getParameter("rmk");
139
//if (menuKey == null)
140
//{
141
// Cookie menuCookie = RequestUtil.getCookie(req, menuKeyName);
142
// if (menuCookie != null)
143
// {
144
// menuKey = menuCookie.getValue();
145
// req.setAttribute("rmk", menuKey);
146
// }
147
//}
148
//// save menu key in cookie
149
//RequestUtil.setCookie(res, menuKeyName, menuKey, req.getContextPath());
150
//
151
//// get menu item key from request param or from cookie
152
//String itemKeyName = mMenuId+"rmik";
153
//String itemKey = req.getParameter("rmik");
154
//if (itemKey == null)
155
//{
156
// Cookie itemCookie = RequestUtil.getCookie(req, itemKeyName);
157
// if (itemCookie != null)
158
// {
159
// itemKey = itemCookie.getValue();
160
// req.setAttribute("rmik", itemKey);
161
// }
162
//}
163
//// save menu item key in cookie
164
//RequestUtil.setCookie(res, itemKeyName, itemKey, req.getContextPath());
165

166
167
Popular Tags