You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdelibs/khtml/java/org/kde/kjas/server/KJASAppletPanel.java

114 lines
2.9 KiB

package org.kde.kjas.server;
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.LayoutManager;
import java.awt.Panel;
import java.net.URL;
/**
* @author till
*
* A panel which embeds the applet and shows some
* information during class loading.
*/
public class KJASAppletPanel extends javax.swing.JPanel implements StatusListener {
private final static int LOADING = 1;
private final static int RUNNING = 2;
private final static int FAILED = 3;
private Image load_img = null;
private Image fail_img = null;
private int status = LOADING;
private Font font;
private String msg = "Loading Applet...";
/**
* Constructor for KJASAppletPanel.
*/
public KJASAppletPanel() {
super(new BorderLayout());
font = new Font("SansSerif", Font.PLAIN, 10);
URL url =
getClass().getClassLoader().getResource("images/animbean.gif");
load_img = getToolkit().createImage(url);
//setBackground(Color.white);
}
void setApplet(Applet applet) {
add("Center", applet);
validate();
}
public void showStatus(String msg) {
this.msg = msg;
if (status != RUNNING)
repaint();
}
public void paint(Graphics g) {
super.paint(g);
if (status == RUNNING)
return;
Image img = (status == LOADING ? load_img : fail_img);
int x = getWidth() / 2;
int y = getHeight() / 2;
if (img != null) {
//synchronized (img) {
int w = img.getWidth(this);
int h = img.getHeight(this);
int imgx = x - w / 2;
int imgy = y - h / 2;
//g.setClip(imgx, imgy, w, h);
g.drawImage(img, imgx, imgy, this);
y += img.getHeight(this) / 2;
//}
}
if (msg != null) {
//synchronized(msg) {
g.setFont(font);
FontMetrics m = g.getFontMetrics();
int h = m.getHeight();
int w = m.stringWidth(msg);
int msgx = x - w / 2;
int msgy = y + h;
//g.setClip(0, y, getWidth(), h);
g.drawString(msg, msgx, msgy);
//}
}
}
void showFailed() {
URL url =
getClass().getClassLoader().getResource("images/brokenbean.gif");
fail_img = getToolkit().createImage(url);
status = FAILED;
msg = "Applet Failed.";
repaint();
}
void showFailed(String message) {
showFailed();
showStatus(message);
}
public void stopAnimation() {
status = RUNNING;
}
public boolean imageUpdate(Image img, int flags, int x, int y, int w, int h)
{
if (img != null && img == load_img && status != LOADING) {
img.flush();
load_img = null;
Main.debug("flushing image");
return false;
}
return super.imageUpdate(img, flags, x, y, w, h);
}
}