001 /* 002 * Created on Jul 10, 2008 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 005 * in compliance with the License. You may obtain a copy of the License at 006 * 007 * http://www.apache.org/licenses/LICENSE-2.0 008 * 009 * Unless required by applicable law or agreed to in writing, software distributed under the License 010 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 011 * or implied. See the License for the specific language governing permissions and limitations under 012 * the License. 013 * 014 * Copyright @2008-2010 the original author or authors. 015 */ 016 package org.fest.swing.applet; 017 018 import java.applet.AppletContext; 019 import java.applet.AppletStub; 020 import java.awt.Window; 021 import java.net.URL; 022 import java.util.HashMap; 023 import java.util.Map; 024 025 /** 026 * Understands a basic (and limited) implementation of <code>{@link AppletStub}</code>. 027 * 028 * @author Alex Ruiz 029 * @author Yvonne Wang 030 */ 031 public class BasicAppletStub implements AppletStub { 032 033 private final Window viewer; 034 private final AppletContext context; 035 private final Map<String, String> parameters = new HashMap<String, String>(); 036 037 /** 038 * Creates a new </code>{@link BasicAppletStub}</code>. 039 * @param viewer the window to host the applet. 040 * @param context the applet context. 041 * @param parameters the parameters included in an applet HTML tag. 042 * @throws NullPointerException if <code>viewer</code> is <code>null</code>. 043 * @throws NullPointerException if <code>context</code> is <code>null</code>. 044 * @throws NullPointerException if <code>parameters</code> is <code>null</code>. 045 */ 046 public BasicAppletStub(Window viewer, AppletContext context, Map<String, String> parameters) { 047 this(viewer, context); 048 if (parameters == null) throw new NullPointerException("The map of parameters should not be null"); 049 this.parameters.putAll(parameters); 050 } 051 052 /** 053 * Creates a new </code>{@link BasicAppletStub}</code>. 054 * @param viewer the window to host the applet. 055 * @param context the applet context. 056 * @throws NullPointerException if <code>viewer</code> is <code>null</code>. 057 * @throws NullPointerException if <code>context</code> is <code>null</code>. 058 */ 059 public BasicAppletStub(Window viewer, AppletContext context) { 060 if (viewer == null) throw new NullPointerException("The apple viewer should not be null"); 061 if (context == null) throw new NullPointerException("The AppletContext should not be null"); 062 this.viewer = viewer; 063 this.context = context; 064 } 065 066 /** 067 * Not implemented. Returns <code>true</code>. 068 * @see AppletStub#isActive() 069 */ 070 public boolean isActive() { 071 return true; 072 } 073 074 /** 075 * Resizes this stub's viewer when the applet wants to be resized. 076 * @param width the new requested width for the applet. 077 * @param height the new requested height for the applet. 078 */ 079 public void appletResize(int width, int height) { 080 viewer.setSize(width, height); 081 } 082 083 /** 084 * Returns the applet's context. 085 * @return the applet's context. 086 */ 087 public AppletContext getAppletContext() { 088 return context; 089 } 090 091 /** 092 * Not implemented. Returns <code>getClass().getResource(".")</code>. 093 * @see AppletStub#getCodeBase() 094 */ 095 public URL getCodeBase() { 096 return getDocumentBase(); 097 } 098 099 /** 100 * Not implemented. Returns <code>getClass().getResource(".")</code>. 101 * @see AppletStub#getDocumentBase() 102 */ 103 public URL getDocumentBase() { 104 return Thread.currentThread().getContextClassLoader().getResource("."); 105 } 106 107 /** 108 * Returns the value of the named parameter in the HTML tag. 109 * @param name a parameter name. 110 * @return the value of the named parameter, or <code>null</code> if not set. 111 */ 112 public String getParameter(String name) { 113 return parameters.get(name); 114 } 115 }