home *** CD-ROM | disk | FTP | other *** search
- import java.awt.Color;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.io.DataInputStream;
- import java.io.FilterInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.Vector;
-
- public final class ANIScript {
- static final int AGENTITEM = 1;
- static final int STARTANIMATION = 2;
- static final int ENDANIMATION = 3;
- private String keywords = new String(",AGENTITEM,01,STARTANIMATION,02,ENDANIMATION,03,");
- static final int SHOWTIME = 0;
- static final int SHOWSEQ = 1;
- static final int SCROLL_RTL = 2;
- static final int SCROLL_PTL = 3;
- static final int SCROLL_LTR = 4;
- static final int SCROLL_LTP = 5;
- static final int SCROLL_RTP = 6;
- static final int SCROLL_PTR = 7;
- private String methods = new String(",SHOWTIME,00,SHOWSEQ,01,SCROLL_RTL,02,SCROLL_PTL,03,SCROLL_LTR,04,SCROLL_LTP,05,SCROLL_RTP,06,SCROLL_PTR,07,");
- // $FF: renamed from: ok int
- public int field_0;
- private ANI Applet;
- private String scriptFile;
- private URL documentURL;
- private String lineParam;
- private String lineValue;
- public Vector AgentItems;
- private int scrType;
- private ANIAgentItem aniItem;
- private int actHelpPos;
- private Font actHelpFont;
- private Color actHelpColor;
- private FontMetrics actHelpFM;
- private boolean fItalic;
- private boolean fBold;
-
- static final Color getColor(String var0, String var1) {
- int var4 = Integer.parseInt(var1.substring(0, var1.indexOf(",")));
- String var3 = var1.substring(var1.indexOf(",") + 1);
- int var5 = Integer.parseInt(var3.substring(0, var3.indexOf(",")));
- var3 = var3.substring(var3.indexOf(",") + 1);
- int var6 = Integer.parseInt(var3);
- Color var2 = new Color(var4, var5, var6);
- return var2;
- }
-
- private final String getFontName(String var1, String var2) {
- String var3 = null;
- if (var2.indexOf(",") != -1) {
- var3 = new String(var2.substring(0, var2.indexOf(",")));
- } else {
- System.out.println("WARNING: Bad font value '" + var2 + "' for parameter '" + var1 + "'. Ignoring font value.");
- }
-
- return var3;
- }
-
- public ANIScript(ANI var1, URL var2, String var3, int var4) {
- this.Applet = var1;
- this.scriptFile = var3;
- this.documentURL = var2;
- this.scrType = var4;
- if (this.scrType == 1) {
- this.AgentItems = new Vector();
- }
-
- this.field_0 = this.initScript();
- }
-
- private final int getFontSize(String var1, String var2) {
- int var3 = 0;
- if (var2.indexOf(",") != -1) {
- var3 = Integer.parseInt(var2.substring(var2.indexOf(",") + 1));
- }
-
- return var3;
- }
-
- private final int getMethod(String var1) {
- String var2 = var1.toUpperCase();
- int var3 = -1;
- String var4 = "," + var2 + ",";
- int var5 = this.methods.indexOf(var4);
- if (var5 != -1) {
- var5 += var4.length();
- var3 = Integer.parseInt(this.methods.substring(var5, var5 + 2));
- }
-
- if (var3 == -1) {
- System.out.println("ERROR: Invalid method '" + var2 + "'.");
- }
-
- return var3;
- }
-
- private final int getNextWordWidth(ANIAgentItem var1) {
- int var2 = 0;
- int var3 = this.actHelpPos;
- Font var4 = this.actHelpFont;
-
- for(char var5 = this.getNextChar(var1); var5 != 0 && var5 != ' ' && var5 != '\r'; var5 = this.getNextChar(var1)) {
- var2 += this.actHelpFM.charWidth(var5);
- }
-
- this.actHelpPos = var3;
- this.actHelpFont = var4;
- this.actHelpFM = this.Applet.getFontMetrics(this.actHelpFont);
- return var2;
- }
-
- private final boolean parseAgentItem(String var1, int var2) {
- boolean var3 = true;
- int var4 = 0;
- String var5 = var1;
- String var6 = null;
- String var7 = null;
- if (var2 != 1 && this.aniItem == null) {
- System.out.println("ERROR: BEGINANIMATION or ENDANIMATION without previous AGENTITEM.");
- return false;
- } else {
- ANIAgentItem var8 = new ANIAgentItem();
- var8.id = this.Applet.iID;
- var8.xHelp = 100;
- var8.yHelp = 5;
- var8.wHelp = 100;
- var8.hHelp = 40;
- var8.fHelpToRight = true;
- var8.aniIndex = -1;
- var8.aniFrames = 1;
- var8.aniSequences = 1;
- var8.banIndex = -1;
- var8.banSequences = 1;
- var8.delay = 50;
- var8.xInc = 1;
- var8.holdTime = 10;
- var8.launchRepeat = -1;
- var8.launchIntervalMin = 60;
- var8.launchIntervalMax = 60;
- if (var2 == 1) {
- var8.preAni = new Vector();
- var8.postAni = new Vector();
- var8.banFrames = 1;
- var8.scriptLines = var1;
- } else {
- ANIAgentItem var10000 = this.aniItem;
- String var10001 = var10000.scriptLines;
- var10000.scriptLines = var10001 + var1;
- }
-
- ANI var15 = this.Applet;
- var15.iID += 2;
-
- while(var4 != -1) {
- var4 = this.getNextParameter(var5);
- if (var4 != -1) {
- var5 = var5.substring(var4 + 1).trim();
- if (this.lineParam.equals("METHOD")) {
- var8.method = this.getMethod(this.lineValue);
- } else if (this.lineParam.equals("DELAY")) {
- var8.delay = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("XINC")) {
- var8.xInc = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("HOLDTIME")) {
- var8.holdTime = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("ENDDELAY")) {
- var8.endDelay = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("ANIIMAGE")) {
- var8.aniImage = getURL(this.lineParam, this.lineValue, this.documentURL);
- } else if (this.lineParam.equals("ANIIMAGEFRAMES")) {
- var8.aniFrames = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("ANIIMAGEINC")) {
- var6 = this.lineValue;
- } else if (this.lineParam.equals("ANIIMAGESEQUENCES")) {
- var8.aniSequences = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("ANIIMAGEXOFFSET")) {
- var8.xpAni = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("ANIIMAGEYOFFSET")) {
- var8.ypAni = Integer.parseInt(this.lineValue);
- } else if (var2 == 1) {
- if (this.lineParam.equals("HELP")) {
- var8.helpText = this.lineValue;
- } else if (this.lineParam.equals("HELPXOFFSET")) {
- var8.xHelp = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("HELPYOFFSET")) {
- var8.yHelp = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("HELPWIDTH")) {
- var8.wHelp = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("HELPHEIGHT")) {
- var8.hHelp = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("HELPDIRECTION")) {
- if (this.lineValue.toUpperCase().equals("LEFT")) {
- var8.fHelpToRight = false;
- }
- } else if (this.lineParam.equals("URL")) {
- var8.url = getURL(this.lineParam, this.lineValue, this.documentURL);
- } else if (this.lineParam.equals("TARGET")) {
- var8.target = this.lineValue;
- } else if (this.lineParam.equals("BANIMAGE")) {
- var8.banImage = getURL(this.lineParam, this.lineValue, this.documentURL);
- } else if (this.lineParam.equals("BANIMAGEFRAMES")) {
- var8.banFrames = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("BANIMAGEINC")) {
- var7 = this.lineValue;
- } else if (this.lineParam.equals("BANIMAGESEQUENCES")) {
- var8.banSequences = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("BANIMAGEXOFFSET")) {
- var8.xpBan = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("BANIMAGEYOFFSET")) {
- var8.ypBan = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("LAUNCHINTERVAL")) {
- int[] var9 = this.getMinMaxInterval(this.lineParam, this.lineValue);
- var8.launchIntervalMin = var9[0];
- var8.launchIntervalMax = var9[1];
- } else if (this.lineParam.equals("LAUNCHFIRST")) {
- var8.launchFirst = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("LAUNCHREPEAT")) {
- var8.launchRepeat = Integer.parseInt(this.lineValue);
- } else if (this.lineParam.equals("SOUND")) {
- var8.sound = this.lineValue;
- } else if (this.lineParam.equals("SOUNDDELAY")) {
- var8.soundDelay = Integer.parseInt(this.lineValue);
- }
- } else {
- System.out.println("WARNING: Invalid AGENTITEM parameter '" + this.lineParam + "'. Parameter ignored.");
- }
- }
- }
-
- if (var8.method == -1) {
- var3 = false;
- } else if (var8.aniFrames <= 0) {
- System.out.println("ERROR: Item with negative or zero animation frames. You must have at least one frame.");
- var3 = false;
- } else if (var8.banFrames <= 0 && var8.banImage != null) {
- System.out.println("ERROR: Item with negative or zero banner frames. You must have at least one frame.");
- var3 = false;
- } else if (var8.delay <= 0) {
- System.out.println("ERROR: Item with negative or zero delay time. Please use a positive number.");
- var3 = false;
- } else if (var8.aniSequences <= 0) {
- System.out.println("ERROR: Item with negative or zero times to show the animation. Please use a positive number.");
- var3 = false;
- } else if (var8.banSequences <= 0) {
- System.out.println("ERROR: Item with negative or zero times to show the banner. Please use a positive number.");
- var3 = false;
- }
-
- if (!var3) {
- return var3;
- } else {
- var8.aniIncList = new int[var8.aniFrames];
- int var12 = var8.aniFrames;
-
- while(true) {
- --var12;
- if (var12 < 0) {
- if (var6 != null) {
- var8.aniIncList = this.getFrameIncrements(var6, var8.aniFrames);
- }
-
- var8.banIncList = new int[var8.banFrames];
- var12 = var8.banFrames;
-
- while(true) {
- --var12;
- if (var12 < 0) {
- if (var7 != null) {
- var8.banIncList = this.getFrameIncrements(var7, var8.banFrames);
- }
-
- if (var3) {
- if (var8.method != 0) {
- var8.holdTime = 1000;
- }
-
- switch (var2) {
- case 1:
- this.AgentItems.addElement(var8);
- if (var8.helpText != null) {
- Image var14 = this.Applet.ANICreateImage(var8.wHelp, var8.hHelp);
- Graphics var10 = var14.getGraphics();
- var10.setColor(this.Applet.agentBgColor);
- var10.fillRect(0, 0, var8.wHelp, var8.hHelp);
- var10.setColor(this.Applet.helpBgColor);
- var10.fillRoundRect(0, 0, var8.wHelp, var8.hHelp, 20, 20);
- var10.setColor(this.Applet.helpBorderColor);
- var10.drawRoundRect(0, 0, var8.wHelp - 1, var8.hHelp - 1, 20, 20);
- this.drawText(var8, var10);
- ANIImageTransition var11 = new ANIImageTransition(var14, this.Applet);
- var11.makeTransparent(this.Applet.agentBgColor);
- var8.helpTextImg = var11.createImage();
- }
-
- this.aniItem = var8;
- break;
- case 2:
- this.aniItem.preAni.addElement(var8);
- break;
- case 3:
- this.aniItem.postAni.addElement(var8);
- }
- }
-
- return var3;
- }
-
- var8.banIncList[var12] = 1;
- }
- }
-
- var8.aniIncList[var12] = 1;
- }
- }
- }
- }
-
- private final int getQuoteIndex(String var1, int var2) {
- boolean var3 = false;
- int var4 = var2;
-
- while(!var3) {
- var4 = var1.indexOf("\"", var4 + 1);
- if (var4 > 0) {
- if (var1.charAt(var4 - 1) != '\\') {
- var3 = true;
- }
- } else {
- if (var4 == -1) {
- return -1;
- }
-
- var3 = true;
- }
- }
-
- return var4;
- }
-
- private final int getKeyword(String var1) {
- int var4 = -1;
- int var3 = var1.indexOf(" ");
- String var2;
- if (var3 != -1) {
- var2 = var1.substring(0, var3);
- } else {
- var2 = var1;
- }
-
- var2 = var2.toUpperCase();
- String var5 = "," + var2 + ",";
- int var6 = this.keywords.indexOf(var5);
- if (var6 != -1) {
- var6 += var5.length();
- var4 = Integer.parseInt(this.keywords.substring(var6, var6 + 2));
- }
-
- if (var4 == -1) {
- System.out.println("ERROR: Invalid keyword '" + var2 + "' in line '" + var1 + "'.");
- }
-
- return var4;
- }
-
- private final int getNextParameter(String var1) {
- this.lineParam = null;
- this.lineValue = null;
- var1 = var1.trim();
- int var2 = var1.indexOf("=");
- if (var2 == -1) {
- return -1;
- } else {
- this.lineParam = var1.substring(0, var2).toUpperCase();
- String var3 = var1.substring(var2 + 1);
- int var4 = this.getQuoteIndex(var3, -1);
- if (var4 != -1) {
- int var5 = this.getQuoteIndex(var3, var4);
- if (var4 > 1) {
- System.out.println("WARNING: Characters before value of parameter '" + this.lineParam + "' ignored.");
- }
-
- if (var5 == -1) {
- System.out.println("ERROR: No ending double quotes found for parameter '" + this.lineParam + "'.");
- return -1;
- } else {
- this.lineValue = var3.substring(var4 + 1, var5 - var4);
- int var6 = 0;
-
- while(var6 != -1) {
- var6 = this.lineValue.indexOf("\\\"");
- if (var6 != -1) {
- this.lineValue = this.lineValue.substring(0, var6) + this.lineValue.substring(var6 + 1);
- }
- }
-
- return var2 + var5 + 1;
- }
- } else {
- System.out.println("ERROR: No starting double quotes found for parameter '" + this.lineParam + "'.");
- return -1;
- }
- }
- }
-
- public static final URL getURL(String var0, String var1, URL var2) {
- URL var3;
- try {
- var3 = new URL(var1);
- } catch (MalformedURLException var5) {
- var3 = null;
- }
-
- if (var3 == null) {
- try {
- var3 = new URL(var2, var1);
- } catch (MalformedURLException var4) {
- }
- }
-
- if (var3 == null) {
- System.out.println("WARNING: Bad URL value '" + var1 + "' for parameter '" + var0 + "'. URL ignored.");
- }
-
- return var3;
- }
-
- private final int initScript() {
- Object var4 = null;
- byte var8 = 1;
-
- InputStream var1;
- DataInputStream var2;
- try {
- URL var12 = new URL(this.documentURL, this.scriptFile);
- var1 = var12.openStream();
- var2 = new DataInputStream(var1);
- } catch (IOException var10) {
- System.out.println("ERROR: Error opening script file '" + ((URL)var4).toExternalForm() + "'.");
- return -1;
- }
-
- Vector var3 = new Vector();
-
- try {
- String var5;
- while((var5 = var2.readLine()) != null) {
- var5 = var5.trim();
- if (!var5.startsWith("//") && var5.length() != 0) {
- while(var5.endsWith("\\")) {
- var5 = var5.substring(0, var5.length() - 1);
- String var6 = var2.readLine();
- if (var6 == null) {
- var8 = -1;
- System.out.println("ERROR: Last line of script file has concatination sign.");
- break;
- }
-
- var6 = var6.trim();
- if (!var6.startsWith("//") && var6.length() != 0) {
- var5 = var5 + var6;
- }
- }
-
- var3.addElement(var5);
- }
- }
-
- var1.close();
- ((FilterInputStream)var2).close();
- if (var8 == -1) {
- return var8;
- }
- } catch (IOException var11) {
- System.out.println("ERROR: I/O error while reading script file.");
- return -1;
- }
-
- for(int var7 = 0; var7 < var3.size(); ++var7) {
- String var14 = (String)var3.elementAt(var7);
- this.parseLine(var14);
- }
-
- return var8;
- }
-
- private final char getNextChar(ANIAgentItem var1) {
- char var2 = 0;
- boolean var3 = true;
- String var5 = var1.helpText;
- int var6 = var5.length();
-
- while(var3) {
- var3 = false;
- if (this.actHelpPos < var6) {
- var2 = var5.charAt(this.actHelpPos);
- switch (var2) {
- case '&':
- String var11 = var5.substring(this.actHelpPos, this.actHelpPos + 4).toUpperCase();
- if (var11.equals(">")) {
- var2 = '>';
- this.actHelpPos += 3;
- } else if (var11.equals("<")) {
- var2 = '<';
- this.actHelpPos += 3;
- }
-
- ++this.actHelpPos;
- break;
- case '<':
- if (this.actHelpPos + 2 <= var6) {
- String var4 = var5.substring(this.actHelpPos, this.actHelpPos + 3).toUpperCase();
- if (var4.equals("<B>")) {
- this.fBold = true;
- this.actHelpPos += 2;
- var3 = true;
- } else if (var4.equals("<I>")) {
- this.fItalic = true;
- this.actHelpPos += 2;
- var3 = true;
- }
- }
-
- if (this.actHelpPos + 3 <= var6) {
- String var9 = var5.substring(this.actHelpPos, this.actHelpPos + 4).toUpperCase();
- if (var9.equals("</B>")) {
- this.fBold = false;
- this.actHelpPos += 3;
- var3 = true;
- } else if (var9.equals("</I>")) {
- this.fItalic = false;
- this.actHelpPos += 3;
- var3 = true;
- } else if (var9.equals("<BR>")) {
- var2 = '\r';
- this.actHelpPos += 3;
- }
- }
-
- if (this.actHelpPos + 7 <= var6) {
- String var10 = var5.substring(this.actHelpPos, this.actHelpPos + 7).toUpperCase();
- if (var10.compareTo("<COLOR ") == 0) {
- int var7 = var5.indexOf(">", this.actHelpPos + 1);
- String var8 = var5.substring(this.actHelpPos + 7, var7).trim();
- this.getNextParameter(var8);
- if (this.lineParam.equals("VALUE")) {
- this.actHelpColor = getColor("<color>", this.lineValue);
- }
-
- this.actHelpPos = var7;
- var3 = true;
- }
- }
-
- ++this.actHelpPos;
- if (var3) {
- int var12 = 0;
- if (this.fBold) {
- var12 |= 1;
- }
-
- if (this.fItalic) {
- var12 |= 2;
- }
-
- this.actHelpFont = new Font(this.actHelpFont.getName(), var12, this.actHelpFont.getSize());
- this.actHelpFM = this.Applet.getFontMetrics(this.actHelpFont);
- }
- break;
- default:
- ++this.actHelpPos;
- }
- } else {
- var2 = 0;
- }
- }
-
- return var2;
- }
-
- private final int[] getFrameIncrements(String var1, int var2) {
- String var3 = var1;
- int var4 = 0;
-
- int var5;
- int[] var6;
- for(var6 = new int[var2]; (var5 = var3.indexOf(",")) != -1 && var4 < var2; var3 = var3.substring(var5 + 1)) {
- var6[var4++] = Integer.parseInt(var3.substring(0, var5));
- }
-
- if (var4 < var2) {
- var6[var4] = Integer.parseInt(var3);
- }
-
- return var6;
- }
-
- private final boolean parseLine(String var1) {
- boolean var2 = false;
- String var5 = null;
- int var3 = this.getKeyword(var1);
- int var4 = var1.indexOf(" ");
- if (var4 != -1) {
- var5 = var1.substring(var4 + 1).trim();
- }
-
- switch (var3) {
- case 1:
- case 2:
- case 3:
- var2 = this.parseAgentItem(var5, var3);
- break;
- default:
- System.out.println("ERROR: Invalid keyword in line '" + var1 + "'.");
- }
-
- return var2;
- }
-
- private final int[] getMinMaxInterval(String var1, String var2) {
- int[] var3 = new int[2];
- if (var2.indexOf(",") != -1) {
- var3[0] = Integer.parseInt(var2.substring(0, var2.indexOf(",")));
- var3[1] = Integer.parseInt(var2.substring(var2.indexOf(",") + 1));
- } else {
- var3[0] = Integer.parseInt(var2);
- var3[1] = var3[0];
- }
-
- return var3;
- }
-
- private final void drawText(ANIAgentItem var1, Graphics var2) {
- boolean var3 = false;
- int var4 = var1.wHelp - 10;
- byte var10 = 5;
- this.actHelpColor = this.Applet.helpTextColor;
- this.actHelpFont = this.Applet.helpTextFont;
- this.actHelpFM = this.Applet.getFontMetrics(this.actHelpFont);
- this.actHelpPos = 0;
- this.fBold = false;
- this.fItalic = false;
- int var8 = var10;
-
- int var6;
- for(int var9 = this.actHelpFM.getHeight() - this.actHelpFM.getLeading() - this.actHelpFM.getMaxDescent() + 2; !var3; this.actHelpPos = var6) {
- int var5 = this.getNextWordWidth(var1);
- if (var8 + var5 > var4 && var5 < var4) {
- var8 = var10;
- var9 += this.actHelpFM.getHeight();
- }
-
- char var7;
- for(var7 = this.getNextChar(var1); var7 != 0 && var7 != ' ' && var7 != '\r'; var7 = this.getNextChar(var1)) {
- var2.setFont(this.actHelpFont);
- var2.setColor(this.actHelpColor);
- var2.drawString(String.valueOf(var7), var8, var9);
- var8 += this.actHelpFM.charWidth(var7);
- if (var8 > var4) {
- var8 = var10;
- var9 += this.actHelpFM.getHeight();
- }
- }
-
- var6 = this.actHelpPos;
- if (var7 == 0) {
- var3 = true;
- } else {
- while(var7 == ' ' || var7 == '\r') {
- if (var7 == '\r') {
- var8 = var10;
- var9 += this.actHelpFM.getHeight();
- } else if (var7 == ' ') {
- var8 += this.actHelpFM.charWidth(var7);
- }
-
- var6 = this.actHelpPos;
- var7 = this.getNextChar(var1);
- }
- }
- }
-
- }
- }
-