home *** CD-ROM | disk | FTP | other *** search
- package mug.ui;
-
- import java.awt.Canvas;
- 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;
-
- public class ImageButton extends Canvas {
- public static final int HORIZONTAL = 0;
- public static final int VERTICAL = 1;
- protected static final int TOPLEFT = 0;
- protected static final int BOTTOMRIGHT = 1;
- protected static final int EDGE = 2;
- protected static final int GAP = 2;
- protected Image _image;
- protected String _label;
- protected int _orientation = 1;
- protected boolean _pressed = false;
- protected static final double BRIGHT = 1.1;
- protected static final double BRIGHT2 = 1.35;
- protected static final double DARK = (double)0.75F;
- protected static final double DARK2 = 0.65;
-
- public ImageButton() {
- }
-
- public ImageButton(Image var1) {
- this._image = var1;
- }
-
- public ImageButton(String var1) {
- this._label = var1;
- }
-
- public ImageButton(Image var1, String var2) {
- this._image = var1;
- this._label = var2;
- }
-
- public Image getImage() {
- return this._image;
- }
-
- public void setImage(Image var1) {
- this._image = var1;
- ((Component)this).repaint();
- }
-
- public String getLabel() {
- return this._label;
- }
-
- public void setLabel(String var1) {
- this._label = var1;
- ((Component)this).repaint();
- }
-
- public ImageButton(Image var1, String var2, int var3) {
- this._image = var1;
- this._label = var2;
- this._orientation = var3;
- }
-
- public Dimension preferredSize() {
- Dimension var1 = this.imageSize();
- Dimension var2 = this.labelSize();
- return this._orientation == 0 ? new Dimension(var1.width + var2.width + 4 + (2 + this.haveBoth()) * 2, Math.max(var1.height, var2.height) + 4 + 4) : new Dimension(Math.max(var1.width, var2.width) + 4 + 4, var1.height + var2.height + 4 + (2 + this.haveBoth()) * 2);
- }
-
- public Dimension minimumSize() {
- return this.preferredSize();
- }
-
- public boolean handleEvent(Event var1) {
- if (var1.id == 501) {
- this._pressed = true;
- ((Component)this).repaint();
- } else if (var1.id == 506) {
- if (((Component)this).inside(var1.x, var1.y) != this._pressed) {
- this._pressed = !this._pressed;
- ((Component)this).repaint();
- }
- } else {
- if (var1.id != 502) {
- return super.handleEvent(var1);
- }
-
- this._pressed = false;
- ((Component)this).repaint();
- if (((Component)this).inside(var1.x, var1.y)) {
- ((Component)this).postEvent(new Event(this, 1001, this._label));
- }
- }
-
- return true;
- }
-
- public void paint(Graphics var1) {
- Dimension var2 = ((Component)this).size();
- if (this._pressed) {
- var1.setColor(this.dark());
- var1.fillRect(0, 0, var2.width, var2.height);
- var1.setColor(this.dark2());
- this.drawEdge(var1, 0, 2);
- var1.setColor(this.bright());
- this.drawEdge(var1, 1, 2);
- } else {
- var1.setColor(((Component)this).getBackground());
- var1.fillRect(0, 0, var2.width, var2.height);
- var1.setColor(this.bright());
- this.drawEdge(var1, 0, 2);
- var1.setColor(this.dark());
- this.drawEdge(var1, 1, 2);
- }
-
- this.drawImageAndLabel(var1);
- }
-
- protected Color bright() {
- Color var1 = ((Component)this).getBackground();
- return new Color(Math.min((int)((double)var1.getRed() * 1.1), 255), Math.min((int)((double)var1.getGreen() * 1.1), 255), Math.min((int)((double)var1.getBlue() * 1.1), 255));
- }
-
- protected Color bright2() {
- Color var1 = ((Component)this).getBackground();
- return new Color(Math.min((int)((double)var1.getRed() * 1.35), 255), Math.min((int)((double)var1.getGreen() * 1.35), 255), Math.min((int)((double)var1.getBlue() * 1.35), 255));
- }
-
- protected Color dark() {
- Color var1 = ((Component)this).getBackground();
- return new Color(Math.max((int)((double)var1.getRed() * (double)0.75F), 0), Math.max((int)((double)var1.getGreen() * (double)0.75F), 0), Math.max((int)((double)var1.getBlue() * (double)0.75F), 0));
- }
-
- protected Color dark2() {
- Color var1 = ((Component)this).getBackground();
- return new Color(Math.max((int)((double)var1.getRed() * 0.65), 0), Math.max((int)((double)var1.getGreen() * 0.65), 0), Math.max((int)((double)var1.getBlue() * 0.65), 0));
- }
-
- protected void drawEdge(Graphics var1, int var2, int var3) {
- this.drawEdge(var1, var2, var3, true);
- }
-
- protected void drawEdge(Graphics var1, int var2, int var3, boolean var4) {
- Dimension var5 = ((Component)this).size();
- switch (var2) {
- case 0:
- for(int var8 = 0; var8 < var3; ++var8) {
- int var9 = var4 ? var8 : 0;
- var1.drawLine(var9, var8, var5.width - var9 - 1, var8);
- var1.drawLine(var8, var9 + 1, var8, var5.height - var9 - 2);
- }
-
- return;
- case 1:
- for(int var6 = 0; var6 < var3; ++var6) {
- int var7 = var4 ? var6 : 0;
- var1.drawLine(var5.width - var6 - 1, var7 + 1, var5.width - var6 - 1, var5.height - var7 - 2);
- var1.drawLine(var7, var5.height - var6 - 1, var5.width - var7 - 1, var5.height - var6 - 1);
- }
-
- return;
- default:
- }
- }
-
- public void drawImageAndLabel(Graphics var1) {
- this.drawImageAndLabel(var1, 0);
- }
-
- public void drawImageAndLabel(Graphics var1, int var2) {
- Dimension var3 = ((Component)this).size();
- if (this._orientation == 0) {
- int var4 = (var3.width - this.preferredSize().width) / 2 + 2 + 2;
- if (this._image != null) {
- var1.drawImage(this._image, var4 + var2, (var3.height - this._image.getHeight(this)) / 2 + var2, this);
- var4 += this._image.getWidth(this) + 2;
- }
-
- if (this._label != null) {
- Font var5 = ((Component)this).getFont();
- FontMetrics var6 = ((Component)this).getFontMetrics(var5);
- var1.setColor(((Component)this).getForeground());
- var1.setFont(var5);
- var1.drawString(this._label, var4 + var2, (var3.height - var6.getHeight()) / 2 + var6.getAscent() + var2);
- return;
- }
- } else {
- int var7 = (var3.height - this.preferredSize().height) / 2 + 2 + 2;
- if (this._image != null) {
- var1.drawImage(this._image, (var3.width - this._image.getWidth(this)) / 2 + var2, var7 + var2, this);
- var7 += this._image.getHeight(this) + 2;
- }
-
- if (this._label != null) {
- Font var8 = ((Component)this).getFont();
- FontMetrics var9 = ((Component)this).getFontMetrics(var8);
- var1.setColor(((Component)this).getForeground());
- var1.setFont(var8);
- var1.drawString(this._label, (var3.width - var9.stringWidth(this._label)) / 2 + var2, var7 + var9.getAscent() + var2);
- }
- }
-
- }
-
- protected int haveBoth() {
- return this._image != null && this._label != null ? 1 : 0;
- }
-
- protected Dimension imageSize() {
- return this._image != null ? new Dimension(this._image.getWidth(this), this._image.getHeight(this)) : new Dimension(0, 0);
- }
-
- protected Dimension labelSize() {
- if (this._label != null) {
- FontMetrics var1 = ((Component)this).getFontMetrics(((Component)this).getFont());
- return new Dimension(var1.stringWidth(this._label), var1.getHeight());
- } else {
- return new Dimension(0, 0);
- }
- }
- }
-