1 package org.apache.turbine.modules;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.ecs.ConcreteElement;
23
24 import org.apache.turbine.util.InputFilterUtils;
25 import org.apache.turbine.util.RunData;
26
27 /***
28 * This is the base class which defines the Screen modules.
29 *
30 * @author <a href="mailto:mbryson@mont.mindspring.com">Dave Bryson</a>
31 * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
32 * @version $Id: Screen.java 534527 2007-05-02 16:10:59Z tv $
33 */
34 public abstract class Screen
35 extends Assembler
36 {
37 /***
38 * A subclass must override this method to build itself.
39 * Subclasses override this method to store the screen in RunData
40 * or to write the screen to the output stream referenced in
41 * RunData.
42 *
43 * @param data Turbine information.
44 * @exception Exception a generic exception.
45 */
46 protected abstract ConcreteElement doBuild(RunData data)
47 throws Exception;
48
49 /***
50 * Subclasses can override this method to add additional
51 * functionality. This method is protected to force clients to
52 * use ScreenLoader to build a Screen.
53 *
54 * @param data Turbine information.
55 * @exception Exception a generic exception.
56 */
57 protected ConcreteElement build(RunData data)
58 throws Exception
59 {
60 return doBuild(data);
61 }
62
63 /***
64 * If the Layout has not been defined by the Screen then set the
65 * layout to be "DefaultLayout". The Screen object can also
66 * override this method to provide intelligent determination of
67 * the Layout to execute. You can also define that logic here as
68 * well if you want it to apply on a global scale. For example,
69 * if you wanted to allow someone to define Layout "preferences"
70 * where they could dynamically change the Layout for the entire
71 * site. The information for the request is passed in with the
72 * RunData object.
73 *
74 * @param data Turbine information.
75 * @return A String with the Layout.
76 */
77 public String getLayout(RunData data)
78 {
79 return data.getLayout();
80 }
81
82 /***
83 * Set the layout for a Screen.
84 *
85 * @param data Turbine information.
86 * @param layout The layout name.
87 */
88 public void setLayout(RunData data, String layout)
89 {
90 data.setLayout(layout);
91 }
92
93 /***
94 * This function can/should be used in any screen that will output
95 * User entered text. This will help prevent users from entering
96 * html (<SCRIPT>) tags that will get executed by the browser.
97 *
98 * @param s The string to prepare.
99 * @return A string with the input already prepared.
100 * @deprecated Use InputFilterUtils.prepareText(String s)
101 */
102 public static String prepareText(String s)
103 {
104 return InputFilterUtils.prepareText(s);
105 }
106
107 /***
108 * This function can/should be used in any screen that will output
109 * User entered text. This will help prevent users from entering
110 * html (<SCRIPT>) tags that will get executed by the browser.
111 *
112 * @param s The string to prepare.
113 * @return A string with the input already prepared.
114 * @deprecated Use InputFilterUtils.prepareTextMinimum(String s)
115 */
116 public static String prepareTextMinimum(String s)
117 {
118 return InputFilterUtils.prepareTextMinimum(s);
119 }
120 }