home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VCafe / WDESAMPL.BIN / OpenlookButton.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-06-23  |  3.2 KB  |  132 lines

  1. package actual;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.AWTEventMulticaster;
  5. import java.awt.Color;
  6. import java.awt.Component;
  7. import java.awt.Dimension;
  8. import java.awt.Font;
  9. import java.awt.FontMetrics;
  10. import java.awt.Graphics;
  11. import java.awt.event.ActionEvent;
  12. import java.awt.event.ActionListener;
  13. import java.awt.event.MouseEvent;
  14.  
  15. public class OpenlookButton extends Component {
  16.    static int capWidth = 20;
  17.    String label;
  18.    protected boolean pressed;
  19.    ActionListener actionListener;
  20.  
  21.    public OpenlookButton() {
  22.       this("");
  23.    }
  24.  
  25.    public OpenlookButton(String var1) {
  26.       this.pressed = false;
  27.       this.label = var1;
  28.       ((Component)this).enableEvents(16L);
  29.    }
  30.  
  31.    public String getLabel() {
  32.       return this.label;
  33.    }
  34.  
  35.    public void setLabel(String var1) {
  36.       this.label = var1;
  37.       ((Component)this).invalidate();
  38.       ((Component)this).repaint();
  39.    }
  40.  
  41.    public void paint(Graphics var1) {
  42.       int var2 = ((Component)this).getSize().width - 1;
  43.       int var3 = ((Component)this).getSize().height - 1;
  44.       Color var4 = ((Component)this).getBackground();
  45.       Color var5;
  46.       Color var6;
  47.       if (this.pressed) {
  48.          var5 = var4.darker();
  49.          var6 = var4.brighter();
  50.       } else {
  51.          var5 = var4.brighter();
  52.          var6 = var4.darker();
  53.       }
  54.  
  55.       var1.setColor(var4);
  56.       var1.fillArc(0, 0, capWidth, var3, 90, 180);
  57.       var1.fillArc(var2 - capWidth, 0, capWidth, var3, 270, 180);
  58.       var1.fillRect(capWidth / 2, 0, var2 - capWidth, var3);
  59.       var1.setColor(var5);
  60.       var1.drawLine(capWidth / 2, 0, var2 - capWidth / 2, 0);
  61.       var1.setColor(var6);
  62.       var1.drawLine(capWidth / 2, var3, var2 - capWidth / 2, var3);
  63.       var1.setColor(var5);
  64.       var1.drawArc(0, 0, capWidth, var3, 90, 140);
  65.       var1.setColor(var6);
  66.       var1.drawArc(0, 0, capWidth, var3, 230, 40);
  67.       var1.setColor(var5);
  68.       var1.drawArc(var2 - capWidth, 0, capWidth, var3, 50, 40);
  69.       var1.setColor(var6);
  70.       var1.drawArc(var2 - capWidth, 0, capWidth, var3, 270, 140);
  71.       Font var7 = ((Component)this).getFont();
  72.       if (var7 != null) {
  73.          FontMetrics var8 = ((Component)this).getFontMetrics(((Component)this).getFont());
  74.          var1.setColor(((Component)this).getForeground());
  75.          var1.drawString(this.label, var2 / 2 - var8.stringWidth(this.label) / 2, var3 / 2 + var8.getHeight() / 2 - var8.getMaxDescent());
  76.       }
  77.  
  78.    }
  79.  
  80.    public Dimension getPreferredSize() {
  81.       Font var1 = ((Component)this).getFont();
  82.       if (var1 != null) {
  83.          FontMetrics var2 = ((Component)this).getFontMetrics(((Component)this).getFont());
  84.          return new Dimension(var2.stringWidth(this.label) + capWidth * 2, var2.getHeight() + 10);
  85.       } else {
  86.          return new Dimension(100, 50);
  87.       }
  88.    }
  89.  
  90.    public Dimension getMinimumSize() {
  91.       return new Dimension(100, 50);
  92.    }
  93.  
  94.    public void addActionListener(ActionListener var1) {
  95.       this.actionListener = AWTEventMulticaster.add(this.actionListener, var1);
  96.       ((Component)this).enableEvents(16L);
  97.    }
  98.  
  99.    public void removeActionListener(ActionListener var1) {
  100.       this.actionListener = AWTEventMulticaster.remove(this.actionListener, var1);
  101.    }
  102.  
  103.    public void processMouseEvent(MouseEvent var1) {
  104.       switch (((AWTEvent)var1).getID()) {
  105.          case 501:
  106.             this.pressed = true;
  107.             ((Component)this).repaint();
  108.             break;
  109.          case 502:
  110.             if (this.actionListener != null) {
  111.                this.actionListener.actionPerformed(new ActionEvent(this, 1001, this.label));
  112.             }
  113.  
  114.             if (this.pressed) {
  115.                this.pressed = false;
  116.                ((Component)this).repaint();
  117.             }
  118.          case 503:
  119.          case 504:
  120.          default:
  121.             break;
  122.          case 505:
  123.             if (this.pressed) {
  124.                this.pressed = false;
  125.                ((Component)this).repaint();
  126.             }
  127.       }
  128.  
  129.       super.processMouseEvent(var1);
  130.    }
  131. }
  132.