import java.applet.Applet;
import java.applet.AppletContext;
import java.applet.AppletStub;
import java.applet.AudioClip;
import java.awt.BorderLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Enumeration;
import java.util.Iterator;
import javax.swing.JFrame;
public class MinAppletviewer {
public static void main(String args[]) throws Exception {
AppSupport theAppSupport = new AppSupport();
JFrame f = new JFrame();
URL toload = new URL(args[0]);
String host = toload.getHost();
int port = toload.getPort();
String protocol = toload.getProtocol();
String path = toload.getFile();
int join = path.lastIndexOf('/');
String file = path.substring(join + 1);
path = path.substring(0, join + 1);
theAppSupport.setCodeBase(new URL(protocol, host, port, path));
theAppSupport.setDocumentBase(theAppSupport.getCodeBase());
URL[] bases = { theAppSupport.getCodeBase() };
URLClassLoader loader = new URLClassLoader(bases);
Class theAppletClass = loader.loadClass(file);
Applet theApplet = (Applet) (theAppletClass.newInstance());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(theApplet, BorderLayout.CENTER);
theApplet.setStub(theAppSupport);
f.setSize(200, 200);
f.setVisible(true);
theApplet.init();
theApplet.start();
}
}
class AppSupport implements AppletStub, AppletContext {
private URL codeBase;
private URL documentBase;
public AppSupport() throws Exception {
URL url = null;
String urlpart = System.getProperty("user.dir");
urlpart = urlpart.replace(File.separatorChar, '/');
url = new URL("file://" + urlpart + "/");
codeBase = documentBase = url;
}
public void appletResize(int w, int h) {
}
public AppletContext getAppletContext() {
return (AppletContext) this;
}
public URL getDocumentBase() {
return documentBase;
}
public void setDocumentBase(URL url) {
documentBase = url;
}
public URL getCodeBase() {
return codeBase;
}
public void setCodeBase(URL url) {
codeBase = url;
}
public String getParameter(String s) {
return null;
}
public boolean isActive() {
return true;
}
public Applet getApplet(String name) {
return null;
}
public Enumeration getApplets() {
return new Enumeration() {
public boolean hasMoreElements() {
return false;
}
public Object nextElement() {
return null;
}
};
}
public AudioClip getAudioClip(URL url) {
return Applet.newAudioClip(url);
}
public Image getImage(URL url) {
return Toolkit.getDefaultToolkit().getImage(url);
}
public void showDocument(URL url) {
}
public void showDocument(URL url, String target) {
}
public void showStatus(String status) {
System.err.println(status);
}
public void setStream(String key, InputStream stream) throws IOException {
}
public InputStream getStream(String key) {
return null;
}
public Iterator<String> getStreamKeys() {
return null;
}
}