1 // ========================================================================
2 // $Id: Applet.java,v 1.7 2004/07/19 13:12:58 hlavac Exp $
3 // Copyright 1996-2004 Mort Bay Consulting Pty. Ltd.
4 // ------------------------------------------------------------------------
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 // http://www.apache.org/licenses/LICENSE-2.0
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 // ========================================================================
15
16 package org.mortbay.html;
17
18 import java.io.IOException;
19 import java.io.Writer;
20 import java.util.Enumeration;
21 import java.util.Hashtable;
22
23 /* ---------------------------------------------------------------- */
24 /** An Applet Block.
25 * <p> Lets you set the class name from the program, and optionally, the
26 * size and the codebase.
27 *
28 * <p> This class uses any attributes set in Element.
29 *
30 * <p><h4>Usage</h4>
31 * <pre>
32 * org.mortbay.Page page = new org.mortbay.html.Page();
33 * page.add(new org.mortbay.Applet("org.mortbay.Foo.App"));
34 * </pre>
35 *
36 * @see org.mortbay.html.Block
37 * @version $Id: Applet.java,v 1.7 2004/07/19 13:12:58 hlavac Exp $
38 * @author Matthew Watson
39 */
40 public class Applet extends Block
41 {
42 /* ------------------------------------------------------------ */
43 public String codeBase = null;
44
45 /* ------------------------------------------------------------ */
46 private boolean debug =false;
47 private Hashtable params = null;
48 private Composite paramHolder = new Composite();
49
50 /* ------------------------------------------------------------ */
51 /** Create an Applet Element.
52 * @param className The name of the class to give for the applet
53 */
54 public Applet(String className)
55 {
56 super("applet");
57 add(paramHolder);
58 attribute("code",className);
59 }
60
61 /* ------------------------------------------------------------ */
62 /** Set the dimensions of the Applet.
63 */
64 public Applet setDimensions(int height, int width)
65 {
66 width(width);
67 height(height);
68 return this;
69 }
70
71 /* ------------------------------------------------------------ */
72 /** Set whether debugging is on in the Applet.
73 * <p> This controls whether the org.mortbay.util.Code debug messages
74 * will be printed to the java console.
75 * <p> Defaults to whether debug is turned on in the generating app */
76 public Applet setDebug(boolean debug){
77 this.debug = debug;
78 return this;
79 }
80
81 /* ------------------------------------------------------------ */
82 /**
83 * Set an alternate display for non-java browsers.
84 * @param alt The alternate element to display
85 * @deprecated use add
86 */
87 public Applet setAlternate(Element alt)
88 {
89 add(alt);
90 return this;
91 }
92
93 /* ------------------------------------------------------------ */
94 /** Set an alternate display for non-java browsers.
95 * @param alt The alternate element to display
96 * @deprecated use add
97 */
98 public Applet setAlternate(String alt)
99 {
100 add(alt);
101 return this;
102 }
103
104 /* ------------------------------------------------------------ */
105 /** Set the codebase */
106 public Applet codeBase(String cb)
107 {
108 codeBase = cb;
109 return this;
110 }
111
112 /* ------------------------------------------------------------ */
113 public Applet setParam(String name, String value)
114 {
115 if (params == null)
116 params = new Hashtable(10);
117 params.put(name, value);
118 return this;
119 }
120
121 /* ------------------------------------------------------------ */
122 /** Write out the HTML */
123 public void write(Writer out)
124 throws IOException
125 {
126 if (codeBase != null)
127 attribute("codebase",codeBase);
128
129 if (debug)
130 paramHolder.add("<param name=\"debug\" value=\"yes\">");
131 if (params != null)
132 for (Enumeration enm = params.keys(); enm.hasMoreElements();)
133 {
134 String key = enm.nextElement().toString();
135 paramHolder.add("<param name=\"" + key + "\" value=\"" +
136 params.get(key).toString() + "\">");
137 }
138 super.write(out);
139 }
140 };
141
142
143
144
145