1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.jetspeed.modules.parameters;
18
19
20 import org.apache.turbine.modules.Assembler;
21 import org.apache.turbine.util.RunData;
22
23
24 import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
25 import org.apache.jetspeed.services.logging.JetspeedLogger;
26
27
28 import java.util.Map;
29 import java.util.Hashtable;
30 import java.util.Iterator;
31
32 /***
33 * Interface to be implemented by parameter presentation style class
34 *
35 * @author <a href="mailto:mark_orciuch@ngsltd.com">Mark Orciuch</a>
36 * @version $Id: ParameterPresentationStyle.java,v 1.4 2004/02/23 03:01:20 jford Exp $
37 */
38 public abstract class ParameterPresentationStyle extends Assembler
39 {
40
41 /***
42 * Static initialization of the logger for this class
43 */
44 private static final JetspeedLogger logger = JetspeedLogFactoryService.getLogger(ParameterPresentationStyle.class.getName());
45
46 private Map styleparms = null;
47
48 /***
49 * Returns presentation method html fragment
50 *
51 * @param data run context info
52 * @param name name for the returned control
53 * @param value default value for the control
54 * @param parms hashtable with presentation parameters
55 * @return html for the control
56 */
57 public abstract String getContent(RunData data, String name, String value, Map parms);
58
59 /***
60 * Allows to initialize style parameter hashtable
61 *
62 * @param parms
63 */
64 public void setParms(Map parms)
65 {
66
67 this.styleparms = parms;
68 }
69
70 /***
71 * Allows to retrieve a style parameter with default
72 *
73 * @param key
74 * @param def
75 * @return object
76 */
77 public Object getParm(String key, Object def)
78 {
79
80 Object result = null;
81
82 if ( this.styleparms != null )
83 {
84 result = this.styleparms.get(key);
85 }
86
87 if ( result == null )
88 {
89 result = def;
90 }
91
92 return result;
93 }
94
95 /***
96 * <P>Returns javascript event definitions as defined by "[name].style.javascript:[event]".</P>
97 * <P> For example: <CODE>symbols.style.javascipt:onChange</CODE>
98 *
99 * @return map of javascript events
100 */
101 public Map getJavascriptEvents()
102 {
103
104 Hashtable result = null;
105
106 if (this.styleparms != null)
107 {
108 Iterator it = this.styleparms.keySet().iterator();
109 while (it.hasNext())
110 {
111 String parmkey = (String) it.next();
112 if (parmkey.startsWith("javascript:"))
113 {
114 try
115 {
116 if (result == null)
117 {
118 result = new Hashtable();
119 }
120 String event = parmkey.substring(parmkey.lastIndexOf(":") + 1);
121 result.put(event, this.styleparms.get(parmkey));
122 }
123 catch (Exception e)
124 {
125 logger.error("Exception", e);
126 }
127 }
128 }
129 }
130
131 return result;
132 }
133
134 }