KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > fr > improve > struts > taglib > layout > treeview > TreeviewAction


1 package fr.improve.struts.taglib.layout.treeview;
2
3 import java.io.IOException JavaDoc;
4
5 import javax.servlet.ServletException JavaDoc;
6 import javax.servlet.http.HttpServletRequest JavaDoc;
7 import javax.servlet.http.HttpServletResponse JavaDoc;
8 import javax.servlet.jsp.JspException JavaDoc;
9
10 import org.apache.struts.action.Action;
11 import org.apache.struts.action.ActionForm;
12 import org.apache.struts.action.ActionForward;
13 import org.apache.struts.action.ActionMapping;
14
15 import fr.improve.struts.taglib.layout.menu.MenuComponent;
16 import fr.improve.struts.taglib.layout.menu.MenuRepository;
17
18 /**
19  * Print in the output stream the content of the treeview node specified by the request parameters.
20  *
21  * @author jnribette
22  */

23 public class TreeviewAction extends Action {
24     public ActionForward execute(ActionMapping mapping,
25                      ActionForm form,
26                      HttpServletRequest JavaDoc request,
27                      HttpServletResponse JavaDoc response)
28         throws IOException JavaDoc, ServletException JavaDoc {
29
30             if (request.getParameter("iframe")!=null) {
31                 response.getOutputStream().print("<html><boby></body></html>");
32                 return null;
33             }
34         
35             String JavaDoc lc_name = request.getParameter("name");
36             StringBuffer JavaDoc lc_buffer = new StringBuffer JavaDoc();
37             String JavaDoc lc_path = request.getParameter("open");
38             String JavaDoc lc_bundle = request.getParameter("bundle");
39             String JavaDoc lc_styleClass = request.getParameter("class");
40             
41             // Find the menu
42
MenuRepository lc_repository = (MenuRepository) request.getSession().getAttribute(MenuRepository.MENU_REPOSITORY_KEY);
43             MenuComponent lc_menu = null;
44             
45             if (lc_repository!=null) {
46                 lc_menu = lc_repository.getMenu(lc_name);
47             }
48             if (lc_menu==null) {
49                 lc_repository = (MenuRepository) getServlet().getServletContext().getAttribute(MenuRepository.MENU_REPOSITORY_KEY);
50                 lc_menu = lc_repository.getMenu(lc_name);
51             }
52             
53             // Find the node
54
String JavaDoc lc_childPath = lc_path.substring(lc_path.indexOf('*')+1);
55             MenuComponent lc_childMenu = TreeViewReconciler.getComponentWithPath(lc_menu, lc_childPath);
56             /*
57             StringTokenizer lc_tokenizer = new StringTokenizer(lc_path, "*");
58             lc_tokenizer.nextToken();
59             while (lc_tokenizer.hasMoreTokens()) {
60                 String lc_token = lc_tokenizer.nextToken();
61                 lc_menus = lc_menus[Integer.parseInt(lc_token)].getMenuComponents();
62             }
63             */

64             // Generate the node content.
65
try {
66                 TreeViewTag.doPrintMenu(lc_buffer, lc_childMenu.getMenuComponents(), request, getServlet().getServletContext(), lc_bundle, lc_path, lc_name, lc_styleClass==null ? "" : lc_styleClass);
67             } catch (JspException JavaDoc e) {
68                 throw new ServletException JavaDoc(e.getMessage());
69             }
70             
71             
72             // Replace all " by \"
73
for (int i = 0; i < lc_buffer.length(); i++) {
74                 if (lc_buffer.charAt(i)=='"') {
75                     lc_buffer.insert(i, "\\");
76                     i += 1;
77                 }
78             }
79                         
80             // Print the code.
81
response.getOutputStream().println("<script type=\"text/javascript\">");
82             response.getOutputStream().print("window.parent.loadTree(\"");
83             response.getOutputStream().print(lc_path);
84             response.getOutputStream().print("\", \"");
85             response.getOutputStream().print("<table border=\\\"0\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">");
86             response.getOutputStream().print(lc_buffer.toString());
87             response.getOutputStream().print("</table>");
88             response.getOutputStream().print("\");");
89             response.getOutputStream().println("</script>");
90             return null;
91     }
92
93 }
94
Popular Tags