01: /*
02: * Created on 3 Sep 2007
03: */
04: package uk.org.ponder.rsf.components;
05:
06: /**
07: * A component which will render an "initialisation block" to contextualise the
08: * environment on the client side. This abstractly consists of the invocation of
09: * a single client-side function call, with a set of arguments. For example, in
10: * a HTML/Javascript environment, this would peer with a <script> and
11: * render a single Javascript call, with arguments encoded as Strings or JSON.
12: * For more information, see RSJCIS on
13: * http://www2.caret.cam.ac.uk/rsfwiki/Wiki.jsp?page=BuildingRSFComponents
14: *
15: * @author Antranig Basman (antranig@caret.cam.ac.uk)
16: *
17: */
18:
19: public class UIInitBlock extends UIVerbatim {
20: /** The name of the function to be invoked on the client * */
21: public String functionname;
22: /** The arguments to be supplied to the invocation * */
23: public Object[] arguments;
24:
25: /** Construct a client-side initialisation block accepting a single argument.
26: * @see #make(UIContainer, String, String, Object[])
27: */
28: public static UIInitBlock make(UIContainer parent, String ID,
29: String functionname, Object argument) {
30: if (argument == null || functionname == null) {
31: throw new NullPointerException(
32: "Cannot supply null argument or function name to UIInitBlock");
33: }
34: return make(parent, ID, functionname, new Object[] { argument });
35: }
36:
37: /** Construct a client-side initialisation block. Arguments may be of the types:
38: * <ul>
39: * <li> Leaf types - these will be converted to String values by the standard conversion
40: * <li> UIComponents - these will be rendered as their own fullIDs.
41: * <li> ViewParameters - these will be converted to "fragment URLs", suitable for
42: * rendering direct (unportalised) versions of the views they address.
43: * </ul>
44: */
45: public static UIInitBlock make(UIContainer parent, String ID,
46: String functionname, Object[] arguments) {
47: if (arguments == null || functionname == null) {
48: throw new NullPointerException(
49: "Cannot supply null arguments or function name to UIInitBlock");
50: }
51: UIInitBlock togo = new UIInitBlock();
52: togo.ID = ID;
53: togo.functionname = functionname;
54: togo.arguments = arguments;
55:
56: parent.addComponent(togo);
57: return togo;
58: }
59:
60: }
|