1 /* 2 * Copyright (c) 1995, 2005, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package sun.applet; 27 28 import java.util.*; 29 import java.io.*; 30 import java.net.URL; 31 import java.net.MalformedURLException; 32 import java.awt.*; 33 import java.applet.*; 34 35 36 /** 37 * Sample applet panel class. The panel manages and manipulates the 38 * applet as it is being loaded. It forks a seperate thread in a new 39 * thread group to call the applet's init(), start(), stop(), and 40 * destroy() methods. 41 * 42 * @author Arthur van Hoff 43 */ 44 class AppletViewerPanel extends AppletPanel { 45 46 /* Are we debugging? */ 47 static boolean debug = false; 48 49 /** 50 * The document url. 51 */ 52 URL documentURL; 53 54 /** 55 * The base url. 56 */ 57 URL baseURL; 58 59 /** 60 * The attributes of the applet. 61 */ 62 Hashtable atts; 63 64 /* 65 * JDK 1.1 serialVersionUID 66 */ 67 private static final long serialVersionUID = 8890989370785545619L; 68 69 /** 70 * Construct an applet viewer and start the applet. 71 */ 72 AppletViewerPanel(URL documentURL, Hashtable atts) { 73 this.documentURL = documentURL; 74 this.atts = atts; 75 76 String att = getParameter("codebase"); 77 if (att != null) { 78 if (!att.endsWith("/")) { 79 att += "/"; 80 } 81 try { 82 baseURL = new URL(documentURL, att); 83 } catch (MalformedURLException e) { 84 } 85 } 86 if (baseURL == null) { 87 String file = documentURL.getFile(); 88 int i = file.lastIndexOf('/'); 89 if (i >= 0 && i < file.length() - 1) { 90 try { 91 baseURL = new URL(documentURL, file.substring(0, i + 1)); 92 } catch (MalformedURLException e) { 93 } 94 } 95 } 96 97 // when all is said & done, baseURL shouldn't be null 98 if (baseURL == null) 99 baseURL = documentURL; 100 101 102 } 103 104 /** 105 * Get an applet parameter. 106 */ 107 public String getParameter(String name) { 108 return (String)atts.get(name.toLowerCase()); 109 } 110 111 /** 112 * Get the document url. 113 */ 114 public URL getDocumentBase() { 115 return documentURL; 116 117 } 118 119 /** 120 * Get the base url. 121 */ 122 public URL getCodeBase() { 123 return baseURL; 124 } 125 126 /** 127 * Get the width. 128 */ 129 public int getWidth() { 130 String w = getParameter("width"); 131 if (w != null) { 132 return Integer.valueOf(w).intValue(); 133 } 134 return 0; 135 } 136 137 138 /** 139 * Get the height. 140 */ 141 public int getHeight() { 142 String h = getParameter("height"); 143 if (h != null) { 144 return Integer.valueOf(h).intValue(); 145 } 146 return 0; 147 } 148 149 /** 150 * Get initial_focus 151 */ 152 public boolean hasInitialFocus() 153 { 154 155 // 6234219: Do not set initial focus on an applet 156 // during startup if applet is targeted for 157 // JDK 1.1/1.2. [stanley.ho] 158 if (isJDK11Applet() || isJDK12Applet()) 159 return false; 160 161 String initialFocus = getParameter("initial_focus"); 162 163 if (initialFocus != null) 164 { 165 if (initialFocus.toLowerCase().equals("false")) 166 return false; 167 } 168 169 return true; 170 } 171 172 /** 173 * Get the code parameter 174 */ 175 public String getCode() { 176 return getParameter("code"); 177 } 178 179 180 /** 181 * Return the list of jar files if specified. 182 * Otherwise return null. 183 */ 184 public String getJarFiles() { 185 return getParameter("archive"); 186 } 187 188 /** 189 * Return the value of the object param 190 */ 191 public String getSerializedObject() { 192 return getParameter("object");// another name? 193 } 194 195 196 /** 197 * Get the applet context. For now this is 198 * also implemented by the AppletPanel class. 199 */ 200 public AppletContext getAppletContext() { 201 return (AppletContext)getParent(); 202 } 203 204 static void debug(String s) { 205 if(debug) 206 System.err.println("AppletViewerPanel:::" + s); 207 } 208 209 static void debug(String s, Throwable t) { 210 if(debug) { 211 t.printStackTrace(); 212 debug(s); 213 } 214 } 215 }