home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Event;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.MediaTracker;
- import java.net.MalformedURLException;
- import java.net.URL;
-
- public class Tablet extends Applet {
- protected static final int xrise = 0;
- protected static final int wrise = 14;
- protected static final int xup = 14;
- protected static final int wup = 6;
- protected static final int xdrop = 20;
- protected static final int wdrop = 14;
- protected static final int xdown = 34;
- protected static final int wdown = 6;
- protected static final int xterm = 40;
- protected static final int wterm = 14;
- protected static final int xstar = 54;
- protected static final int wstar = 15;
- protected static final int xrism = 69;
- protected static final int wrism = 14;
- protected static final int xstarb = 83;
- protected static final int wstarb = 15;
- protected static final int xdownb = 98;
- protected static final int wdownb = 6;
- protected static final int xtermb = 104;
- protected static final int wtermb = 14;
- protected static final int xfin = 128;
- protected static final int yproto = 40;
- protected static final int ybottom = 15;
- private String tabfont = "Helvetica";
- private int tabweight = 1;
- private Color tabcol;
- private Color tabcolhi;
- private Color tabcollo;
- private int tabpoints;
- private int tabheight;
- private int tabbasey;
- private int tabbasex;
- private Image shadow;
- private Image proto;
- private int wid;
- private int hig;
- private float xscale;
- private float yscale;
- private int tabs;
- private int[] wtab;
- private int[] otab;
- private int fronttab;
- private int mousetab;
- private int mouselast;
- private String[] tabword;
- private String[] taburl;
- // $FF: renamed from: $0 java.lang.String
- private static final String field_0 = "Tablet.nrx";
-
- public void init() {
- int var2 = 0;
- Object var3 = null;
- int var4 = 0;
- Object var5 = null;
- int var6 = 0;
- boolean var10 = false;
- String var1 = "Copyright (c) IBM, 1997";
- var1 = ((Applet)this).getParameter("show");
- if (var1 != null) {
- try {
- var2 = Integer.parseInt(var1, 10);
- if (var2 < 0) {
- throw new NumberFormatException();
- }
-
- this.fronttab = var2 - 1;
- } catch (NumberFormatException var17) {
- System.out.println("Bad show parameter: " + var1);
- }
- }
-
- this.proto = this.getgif("tablet.gif");
- if (this.fronttab < 0) {
- this.hig = 15;
- this.wid = ((Component)this).size().width;
- this.shadow = ((Component)this).createImage(this.wid, this.hig);
- Graphics var24 = this.shadow.getGraphics();
- var24.setColor(Color.white);
- var24.fillRect(0, 0, this.wid, this.hig);
- if (this.proto != null) {
- this.drawunder();
- } else {
- var24.setColor(Color.gray);
- var24.fillRect(0, 2, this.wid, 4);
- }
- } else {
- this.tabs = 0;
- var4 = 1;
-
- while(true) {
- var1 = ((Applet)this).getParameter("tab" + String.valueOf(var4));
- if (var1 == null) {
- if (this.tabs == 0) {
- return;
- } else {
- if (this.fronttab >= this.tabs) {
- this.fronttab = this.tabs - 1;
- }
-
- this.tabword = new String[this.tabs];
- this.taburl = new String[this.tabs];
- int var12 = this.tabs;
-
- for(int var26 = 1; var26 <= var12; ++var26) {
- char[] var27 = ((Applet)this).getParameter("tab" + String.valueOf(var26)).toCharArray();
- int var13 = var27.length - 1;
-
- for(var2 = 0; var2 <= var13 && var27[var2] == ' '; ++var2) {
- }
-
- int var14 = var27.length - 1;
-
- for(var6 = var2; var6 <= var14 && var27[var6] != ' '; ++var6) {
- if (var27[var6] == '_') {
- var27[var6] = ' ';
- }
- }
-
- if (var6 <= var2) {
- this.tabword[var26 - 1] = "?";
- } else {
- this.tabword[var26 - 1] = new String(var27, var2, var6 - var2);
- }
-
- int var15 = var27.length - 1;
-
- for(var2 = var6; var2 <= var15 && var27[var2] == ' '; ++var2) {
- }
-
- int var16 = var27.length - 1;
-
- for(var6 = var2; var6 <= var16 && var27[var6] != ' '; ++var6) {
- }
-
- if (var6 <= var2) {
- this.taburl[var26 - 1] = "?";
- } else {
- this.taburl[var26 - 1] = new String(var27, var2, var6 - var2);
- }
- }
-
- this.wid = ((Component)this).size().width;
- this.hig = 40;
- this.shadow = ((Component)this).createImage(this.wid, this.hig);
- Graphics var23 = this.shadow.getGraphics();
- var23.setFont(new Font(this.tabfont, this.tabweight, 36));
- int var7 = var23.getFontMetrics().getAscent();
- this.tabpoints = (int)(36.0F * ((float)this.tabheight / (float)var7) + 0.5F);
- var23.setFont(new Font(this.tabfont, this.tabweight, this.tabpoints));
- FontMetrics var8 = var23.getFontMetrics();
- this.wtab = new int[this.tabs];
- this.otab = new int[this.tabs];
- int var9 = 0;
- int var31 = this.tabs - 1;
-
- for(int var30 = 0; var30 <= var31; ++var30) {
- this.otab[var30] = var9 + 14 * (var30 + 1);
- this.wtab[var30] = var8.stringWidth(this.tabword[var30]);
- var9 += this.wtab[var30];
- }
-
- int var11 = var9 + 14 * this.tabs + 14 + 14;
- if (var11 > this.wid) {
- this.wid = var11;
- this.shadow = ((Component)this).createImage(this.wid, this.hig);
- var23 = this.shadow.getGraphics();
- }
-
- this.xscale = (float)this.wid / (float)((Component)this).size().width;
- this.yscale = (float)this.hig / (float)((Component)this).size().height;
- var23.setColor(Color.white);
- var23.fillRect(0, 0, this.wid, this.hig);
- this.drawtabs();
- return;
- }
- }
-
- ++this.tabs;
- ++var4;
- }
- }
- }
-
- public void updatetext(int var1) {
- int var4 = 0;
- this.drawtext(this.otab[var1], this.tabword[var1], var1 == this.mousetab, var1 != this.fronttab);
- if (var1 != this.fronttab) {
- int var2 = this.otab[var1];
-
- for(int var3 = this.wtab[var1]; var3 > 0; var2 += var4) {
- if (var3 > 6) {
- var4 = 6;
- } else {
- var4 = var3;
- }
-
- this.drawslice(var2, 34, var4);
- var3 -= var4;
- }
-
- }
- }
-
- public void drawunder() {
- int var3 = 0;
- this.drawslice(0, 83, 15);
- int var1 = 15;
-
- for(int var2 = this.wid - 29; var2 > 0; var1 += var3) {
- if (var2 > 6) {
- var3 = 6;
- } else {
- var3 = var2;
- }
-
- this.drawslice(var1, 98, var3);
- var2 -= var3;
- }
-
- this.drawslice(var1, 104, 14);
- ((Component)this).repaint();
- }
-
- public void drawtabs() {
- boolean var1 = false;
- int var2 = 0;
- int var3 = 0;
- byte var4 = 0;
- boolean var5 = false;
- int var6 = 0;
- boolean var7 = false;
- byte var8 = 0;
-
- for(int var9 = this.tabs - 1; var9 >= var8; --var9) {
- var2 = var9 + this.fronttab;
- if (var2 >= this.tabs) {
- var2 -= this.tabs;
- }
-
- var3 = this.otab[var2] - 14;
- if (var2 == 0) {
- var4 = 0;
- } else {
- var4 = 69;
- }
-
- this.drawslice(var3, var4, 14);
- var3 += 14;
-
- for(int var16 = this.wtab[var2]; var16 > 0; var3 += var6) {
- if (var16 > 6) {
- var6 = 6;
- } else {
- var6 = var16;
- }
-
- this.drawslice(var3, 14, var6);
- var16 -= var6;
- }
-
- this.drawslice(var3, 20, 14);
- this.drawtext(this.otab[var2], this.tabword[var2], var2 == this.mousetab, var2 != this.fronttab);
- }
-
- if (this.fronttab > 0) {
- this.drawslice(0, 54, 15);
- var3 = 15;
-
- for(int var20 = this.otab[this.fronttab] - 14 - var3; var20 > 0; var3 += var6) {
- if (var20 > 6) {
- var6 = 6;
- } else {
- var6 = var20;
- }
-
- this.drawslice(var3, 34, var6);
- var20 -= var6;
- }
- }
-
- var3 = this.otab[this.fronttab] + this.wtab[this.fronttab] + 14;
-
- for(int var21 = this.wid - 14 - var3; var21 > 0; var3 += var6) {
- if (var21 > 6) {
- var6 = 6;
- } else {
- var6 = var21;
- }
-
- this.drawslice(var3, 34, var6);
- var21 -= var6;
- }
-
- this.drawslice(var3, 40, 14);
- ((Component)this).repaint();
- }
-
- public void drawslice(int var1, int var2, int var3) {
- if (this.proto != null) {
- Graphics var4 = this.shadow.getGraphics();
- var4.clipRect(var1, 0, var3, this.hig);
- var4.drawImage(this.proto, var1 - var2, 0, this);
- }
- }
-
- public void drawtext(int var1, String var2, boolean var3, boolean var4) {
- Graphics var5 = this.shadow.getGraphics();
- var5.setFont(new Font(this.tabfont, this.tabweight, this.tabpoints));
- if (!var4) {
- var5.setColor(this.tabcollo);
- } else if (var3) {
- var5.setColor(this.tabcolhi);
- } else {
- var5.setColor(this.tabcol);
- }
-
- var5.drawString(var2, var1 + this.tabbasex, this.tabbasey);
- }
-
- public boolean mouseDown(Event var1, int var2, int var3) {
- int var4 = this.hit(var1, var2, var3);
- if (var4 < 0) {
- return false;
- } else if (var4 == this.fronttab) {
- return false;
- } else {
- try {
- ((Applet)this).getAppletContext().showDocument(new URL(((Applet)this).getDocumentBase(), this.taburl[var4]));
- } catch (MalformedURLException var5) {
- System.out.println("Bad URL: " + this.taburl[var4]);
- }
-
- return true;
- }
- }
-
- public boolean mouseMove(Event var1, int var2, int var3) {
- int var4 = this.hit(var1, var2, var3);
- if (this.mouselast != var4) {
- this.mousetab = var4;
- if (this.mouselast >= 0) {
- this.updatetext(this.mouselast);
- }
-
- if (var4 >= 0) {
- this.updatetext(var4);
- }
-
- this.mouselast = var4;
- ((Component)this).repaint();
- }
-
- return true;
- }
-
- public boolean mouseDrag(Event var1, int var2, int var3) {
- return this.mouseMove(var1, var2, var3);
- }
-
- public boolean mouseEnter(Event var1, int var2, int var3) {
- return this.mouseMove(var1, var2, var3);
- }
-
- public boolean mouseExit(Event var1, int var2, int var3) {
- return this.mouseMove(var1, var2, var3);
- }
-
- public int hit(Event var1, int var2, int var3) {
- boolean var5 = false;
- if (var1 == null) {
- return -1;
- } else {
- var2 = (int)((float)var2 * this.xscale);
- var3 = (int)((float)var3 * this.yscale);
- if (var2 < 5) {
- return -1;
- } else if (var2 > this.wid - 5) {
- return -1;
- } else if (var3 < 5) {
- return -1;
- } else if (var3 > this.hig - 5) {
- return -1;
- } else {
- int var4 = 0;
- int var6 = this.tabs - 1;
-
- for(int var9 = 0; var9 <= var6; ++var9) {
- if (var9 == this.fronttab) {
- if (var2 >= var4 && var2 < var4 + 14 + this.wtab[var9] + 14) {
- return var9;
- }
- } else if ((float)var2 >= (float)var4 + 7.0F && (float)var2 < (float)(var4 + 14 + this.wtab[var9]) + 7.0F) {
- return var9;
- }
-
- var4 = var4 + 14 + this.wtab[var9];
- }
-
- return -1;
- }
- }
- }
-
- public Image getgif(String var1) {
- Image var2 = ((Applet)this).getImage(((Applet)this).getDocumentBase(), var1);
- MediaTracker var3 = new MediaTracker(this);
- var3.addImage(var2, 0);
-
- try {
- var3.waitForID(0);
- } catch (InterruptedException var4) {
- return null;
- }
-
- if (var2.getWidth(this) <= 0) {
- return null;
- } else {
- return var2.getHeight(this) <= 0 ? null : var2;
- }
- }
-
- public void update(Graphics var1) {
- this.paint(var1);
- }
-
- public void paint(Graphics var1) {
- if (this.shadow == null) {
- var1.drawString("[no tabs]", 2, 12);
- } else {
- var1.drawImage(this.shadow, 0, 0, ((Component)this).size().width, ((Component)this).size().height, this);
- }
- }
-
- public Tablet() {
- this.tabcol = Color.black;
- this.tabcolhi = Color.blue;
- this.tabcollo = Color.gray;
- this.tabheight = 16;
- this.tabbasey = 22;
- this.mousetab = -1;
- this.mouselast = -1;
- }
- }
-