home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Event;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.util.StringTokenizer;
-
- public class MsgScroll extends Applet implements Runnable {
- int delay = 25;
- String msg = "Your message here...";
- Color fgColor;
- Color bgColor;
- int shxOffset;
- int shyOffset;
- Color shColor;
- int bdSize;
- Color bdColor;
- String fontName;
- int fontStyle;
- int fontSize;
- Thread scrollThread;
- boolean suspended;
- Font font;
- int msgWidth;
- int xOffset;
- int xOffsetMax;
- int xOffsetMin;
- int yOffset;
- Dimension offDimension;
- Image offImage;
- Graphics offGraphics;
-
- public void init() {
- try {
- String var1 = ((Applet)this).getParameter("delay");
- int var4;
- if (var1 != null && (var4 = Integer.parseInt(var1)) > 0) {
- this.delay = var4;
- }
- } catch (Exception var13) {
- }
-
- try {
- String var14 = ((Applet)this).getParameter("msg");
- if (var14 != null) {
- this.msg = var14;
- }
- } catch (Exception var12) {
- }
-
- try {
- String var15 = ((Applet)this).getParameter("fgcolor");
- if (var15 != null) {
- this.fgColor = this.getColorParm(var15);
- }
- } catch (Exception var11) {
- }
-
- this.bdColor = this.fgColor;
-
- try {
- String var16 = ((Applet)this).getParameter("bgcolor");
- if (var16 != null) {
- this.bgColor = this.getColorParm(var16);
- }
- } catch (Exception var10) {
- }
-
- try {
- String var17 = ((Applet)this).getParameter("shadow");
- if (var17 != null) {
- StringTokenizer var3 = new StringTokenizer(var17, ",");
- int var24;
- if ((var24 = Integer.parseInt(var3.nextToken())) > 0) {
- this.shxOffset = var24;
- }
-
- if ((var24 = Integer.parseInt(var3.nextToken())) > 0) {
- this.shyOffset = var24;
- }
-
- this.shColor = this.getColorParm(var3.nextToken());
- }
- } catch (Exception var9) {
- }
-
- try {
- String var18 = ((Applet)this).getParameter("border");
- if (var18 != null) {
- StringTokenizer var22 = new StringTokenizer(var18, ",");
- int var26;
- if ((var26 = Integer.parseInt(var22.nextToken())) > 0) {
- this.bdSize = var26;
- }
-
- this.bdColor = this.getColorParm(var22.nextToken());
- }
- } catch (Exception var8) {
- }
-
- try {
- String var19 = ((Applet)this).getParameter("font");
- StringTokenizer var23 = new StringTokenizer(var19, ",");
- String var2 = var23.nextToken();
- if (var2.equalsIgnoreCase("Courier")) {
- this.fontName = "Courier";
- } else if (var2.equalsIgnoreCase("Dialog")) {
- this.fontName = "Dialog";
- } else if (var2.equalsIgnoreCase("Helvetica")) {
- this.fontName = "Helvetica";
- } else if (var2.equalsIgnoreCase("Symbol")) {
- this.fontName = "Symbol";
- } else if (var2.equalsIgnoreCase("TimesRoman")) {
- this.fontName = "TimesRoman";
- }
-
- var2 = var23.nextToken();
- if (var2.equalsIgnoreCase("plain")) {
- this.fontStyle = 0;
- } else if (var2.equalsIgnoreCase("bold")) {
- this.fontStyle = 1;
- } else if (var2.equalsIgnoreCase("italic")) {
- this.fontStyle = 2;
- } else if (var2.equalsIgnoreCase("boldItalic")) {
- this.fontStyle = 3;
- }
-
- var2 = var23.nextToken();
- int var27;
- if ((var27 = Integer.parseInt(var2)) > 0) {
- this.fontSize = var27;
- }
- } catch (Exception var7) {
- }
-
- Graphics var5 = ((Component)this).getGraphics();
- this.font = var5.getFont();
- var5.setFont(this.font = new Font(this.fontName, this.fontStyle, this.fontSize));
- FontMetrics var6 = var5.getFontMetrics();
- this.msgWidth = var6.stringWidth(this.msg);
- this.xOffsetMin = -this.msgWidth;
- this.xOffsetMax = ((Component)this).size().width;
- this.xOffset = this.xOffsetMax;
- this.yOffset = ((Component)this).size().height - (((Component)this).size().height - var6.getHeight()) / 2 - var6.getDescent();
- }
-
- private Color getColorParm(String var1) {
- if (var1.equalsIgnoreCase("black")) {
- return Color.black;
- } else if (var1.equalsIgnoreCase("blue")) {
- return Color.blue;
- } else if (var1.equalsIgnoreCase("cyan")) {
- return Color.cyan;
- } else if (var1.equalsIgnoreCase("darkGray")) {
- return Color.darkGray;
- } else if (var1.equalsIgnoreCase("gray")) {
- return Color.gray;
- } else if (var1.equalsIgnoreCase("green")) {
- return Color.green;
- } else if (var1.equalsIgnoreCase("lightGray")) {
- return Color.lightGray;
- } else if (var1.equalsIgnoreCase("magenta")) {
- return Color.magenta;
- } else if (var1.equalsIgnoreCase("orange")) {
- return Color.orange;
- } else if (var1.equalsIgnoreCase("pink")) {
- return Color.pink;
- } else if (var1.equalsIgnoreCase("red")) {
- return Color.red;
- } else if (var1.equalsIgnoreCase("white")) {
- return Color.white;
- } else if (var1.equalsIgnoreCase("yellow")) {
- return Color.yellow;
- } else if (var1.length() == 7 && var1.charAt(0) == '#') {
- int var2 = Integer.parseInt(var1.substring(1, 3), 16);
- int var3 = Integer.parseInt(var1.substring(3, 5), 16);
- int var4 = Integer.parseInt(var1.substring(5, 7), 16);
- return new Color(var2, var3, var4);
- } else {
- return Color.black;
- }
- }
-
- public void start() {
- if (this.scrollThread == null) {
- this.scrollThread = new Thread(this);
- this.scrollThread.start();
- }
-
- }
-
- public void stop() {
- if (this.scrollThread != null) {
- this.scrollThread.stop();
- this.scrollThread = null;
- }
-
- }
-
- public boolean mouseDown(Event var1, int var2, int var3) {
- if (this.suspended) {
- this.start();
- } else {
- this.stop();
- }
-
- this.suspended = !this.suspended;
- return true;
- }
-
- public void run() {
- Thread.currentThread().setPriority(1);
- long var1 = System.currentTimeMillis();
-
- while(Thread.currentThread() == this.scrollThread) {
- if (--this.xOffset < this.xOffsetMin) {
- this.xOffset = this.xOffsetMax;
- }
-
- ((Component)this).repaint();
-
- try {
- var1 += (long)this.delay;
- Thread.sleep(Math.max(0L, var1 - System.currentTimeMillis()));
- } catch (InterruptedException var3) {
- return;
- }
- }
-
- }
-
- public void paint(Graphics var1) {
- this.update(var1);
- }
-
- public void update(Graphics var1) {
- Dimension var2 = ((Component)this).size();
- if (this.offGraphics == null || var2.width != this.offDimension.width || var2.height != this.offDimension.height) {
- this.offDimension = var2;
- this.offImage = ((Component)this).createImage(var2.width, var2.height);
- this.offGraphics = this.offImage.getGraphics();
- }
-
- this.offGraphics.setColor(this.bgColor);
- this.offGraphics.fillRect(0, 0, var2.width, var2.height);
- this.offGraphics.setFont(this.font);
- if (this.shxOffset != 0 || this.shyOffset != 0) {
- this.offGraphics.setColor(this.shColor);
- this.offGraphics.drawString(this.msg, this.xOffset + this.shxOffset, this.yOffset + this.shyOffset);
- }
-
- this.offGraphics.setColor(this.fgColor);
- this.offGraphics.drawString(this.msg, this.xOffset, this.yOffset);
- this.offGraphics.setColor(this.bdColor);
-
- for(int var3 = 0; var3 < this.bdSize; ++var3) {
- this.offGraphics.drawRect(var3, var3, var2.width - 2 * var3 - 1, var2.height - 2 * var3 - 1);
- }
-
- var1.drawImage(this.offImage, 0, 0, this);
- }
-
- public MsgScroll() {
- this.fgColor = Color.black;
- this.bgColor = Color.white;
- this.shColor = Color.lightGray;
- this.fontName = "Dialog";
- this.fontSize = 12;
- this.suspended = false;
- }
- }
-