home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VCafe / JCLASS.BIN / KLG.JAR / jclass / bwt / JCButton.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-12-05  |  6.7 KB  |  333 lines

  1. package jclass.bwt;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.Color;
  5. import java.awt.Component;
  6. import java.awt.Event;
  7. import java.awt.Graphics;
  8. import java.awt.Image;
  9. import java.awt.Insets;
  10. import java.awt.Rectangle;
  11. import java.awt.SystemColor;
  12. import jclass.util.JCString;
  13. import jclass.util.JCVector;
  14.  
  15. public class JCButton extends JCLabel {
  16.    Object arm_label;
  17.    boolean armed;
  18.    protected int old_shadowtype;
  19.    String actionCommand;
  20.    protected JCVector actionListeners;
  21.    protected JCVector buttonListeners;
  22.    private static final String base = "button";
  23.    private static int nameCounter;
  24.    protected int arm_offset;
  25.  
  26.    public JCButton() {
  27.       this((Object)null, (Applet)null, (String)null);
  28.    }
  29.  
  30.    public JCButton(Object var1) {
  31.       this(var1, (Applet)null, (String)null);
  32.    }
  33.  
  34.    public JCButton(String var1, Image var2, int var3) {
  35.       this(new JCString(var1, var2, var3), (Applet)null, (String)null);
  36.       ((Component)this).setName(var1);
  37.    }
  38.  
  39.    public JCButton(String var1, String var2, Applet var3, int var4) {
  40.       this((Object)null, (Applet)null, (String)null);
  41.       ((JCLabel)this).setLabel(new JCString(var1, JCComponent.conv.toImage(var3, var2), var4));
  42.       super.insets = new Insets(2, 5, 2, 5);
  43.    }
  44.  
  45.    public JCButton(Object var1, Applet var2, String var3) {
  46.       super(var1, var2, var3);
  47.       this.armed = false;
  48.       this.actionListeners = new JCVector(0);
  49.       this.buttonListeners = new JCVector(0);
  50.       this.arm_offset = 1;
  51.       if (var3 == null) {
  52.          ((Component)this).setName("button" + nameCounter++);
  53.       }
  54.  
  55.       super.shadow_type = 9;
  56.       super.traversable = true;
  57.       super.highlight = 1;
  58.       super.shadow = 2;
  59.       if (var1 != null && !(var1 instanceof String)) {
  60.          super.insets = new Insets(2, 5, 2, 5);
  61.       } else {
  62.          super.insets = new Insets(0, 5, 0, 5);
  63.       }
  64.  
  65.       ((JCComponent)this).setBackground(SystemColor.control);
  66.       if (this.getClass().getName().equals("jclass.bwt.JCButton")) {
  67.          ((JCComponent)this).getParameters(var2);
  68.       }
  69.  
  70.       ((JCComponent)this).enable11Events(32L);
  71.    }
  72.  
  73.    protected void getParameters() {
  74.       super.getParameters();
  75.       this.arm_label = JCComponent.conv.toJCString(this, ((JCComponent)this).getParam("armLabel"), this.arm_label);
  76.    }
  77.  
  78.    public Object getArmLabel() {
  79.       return this.arm_label;
  80.    }
  81.  
  82.    public void setArmLabel(Object var1) {
  83.       this.arm_label = var1;
  84.       if (this.armed) {
  85.          this.layout();
  86.          ((JCComponent)this).repaint();
  87.       }
  88.  
  89.    }
  90.  
  91.    public void setActionCommand(String var1) {
  92.       this.actionCommand = var1;
  93.    }
  94.  
  95.    public String getActionCommand() {
  96.       return this.actionCommand == null ? String.valueOf(super.label) : this.actionCommand;
  97.    }
  98.  
  99.    public void addActionListener(JCActionListener var1) {
  100.       this.actionListeners.add(var1);
  101.    }
  102.  
  103.    public void removeActionListener(JCActionListener var1) {
  104.       this.actionListeners.removeElement(var1);
  105.    }
  106.  
  107.    public void addButtonListener(JCButtonListener var1) {
  108.       this.buttonListeners.add(var1);
  109.    }
  110.  
  111.    public void removeButtonListener(JCButtonListener var1) {
  112.       this.buttonListeners.removeElement(var1);
  113.    }
  114.  
  115.    public void armAction(Event var1) {
  116.       this.old_shadowtype = super.shadow_type;
  117.       super.shadow_type = 3;
  118.       this.armed = true;
  119.       JCButtonEvent var2 = this.buttonListeners.size() > 0 ? new JCButtonEvent(var1) : null;
  120.  
  121.       for(int var3 = 0; var3 < this.buttonListeners.size(); ++var3) {
  122.          ((JCButtonListener)this.buttonListeners.elementAt(var3)).buttonArmBegin(var2);
  123.       }
  124.  
  125.       ((JCComponent)this).repaint();
  126.       super.shadow_type = this.old_shadowtype;
  127.  
  128.       for(int var4 = 0; var4 < this.buttonListeners.size(); ++var4) {
  129.          ((JCButtonListener)this.buttonListeners.elementAt(var4)).buttonArmEnd(var2);
  130.       }
  131.  
  132.    }
  133.  
  134.    public void disarmAction(Event var1) {
  135.       JCButtonEvent var2 = this.buttonListeners.size() > 0 ? new JCButtonEvent(var1) : null;
  136.  
  137.       for(int var3 = 0; var3 < this.buttonListeners.size(); ++var3) {
  138.          ((JCButtonListener)this.buttonListeners.elementAt(var3)).buttonDisarmBegin(var2);
  139.       }
  140.  
  141.       if (this.armed && this.arm_label != null) {
  142.          ((JCLabel)this).layout(super.label);
  143.       }
  144.  
  145.       this.armed = false;
  146.       super.shadow_type = this.old_shadowtype;
  147.       ((JCComponent)this).repaint();
  148.  
  149.       for(int var4 = 0; var4 < this.buttonListeners.size(); ++var4) {
  150.          ((JCButtonListener)this.buttonListeners.elementAt(var4)).buttonDisarmEnd(var2);
  151.       }
  152.  
  153.    }
  154.  
  155.    public void clickAction(Event var1) {
  156.       String var2 = this.getActionCommand();
  157.       if (var1 == null) {
  158.          var1 = new Event(this, 0, var2);
  159.       }
  160.  
  161.       JCActionEvent var3 = new JCActionEvent(this, var1.id, var2, var1.modifiers);
  162.  
  163.       for(int var4 = 0; var4 < this.actionListeners.size(); ++var4) {
  164.          ((JCActionListener)this.actionListeners.elementAt(var4)).actionPerformed(var3);
  165.       }
  166.  
  167.    }
  168.  
  169.    public synchronized void layout() {
  170.       super.layout();
  171.       if (((Component)this).getPeer() != null) {
  172.          int var1 = super.alignment;
  173.          if (var1 != 2 && var1 != 5 && var1 != 8 && true) {
  174.             var1 = super.alignment;
  175.             if (var1 == 1 || var1 == 4 || var1 == 7 || false) {
  176.                Rectangle var5 = super.label_rect;
  177.                var5.x -= this.arm_offset / 2;
  178.             }
  179.          } else {
  180.             Rectangle var10000 = super.label_rect;
  181.             var10000.x -= this.arm_offset;
  182.          }
  183.  
  184.          var1 = super.alignment;
  185.          if (var1 != 3 && var1 != 4 && var1 != 5 && true) {
  186.             var1 = super.alignment;
  187.             if (var1 == 6 || var1 == 7 || var1 == 8 || false) {
  188.                Rectangle var7 = super.label_rect;
  189.                var7.y -= this.arm_offset;
  190.             }
  191.  
  192.          } else {
  193.             Rectangle var6 = super.label_rect;
  194.             var6.y -= this.arm_offset / 2;
  195.          }
  196.       }
  197.    }
  198.  
  199.    protected void drawValue(Graphics var1, Object var2) {
  200.       if (!((Component)this).isEnabled()) {
  201.          Color var3 = var1.getColor();
  202.          var1.translate(1, 1);
  203.          var1.setColor(Color.white);
  204.          super.drawValue(var1, var2);
  205.          var1.translate(-1, -1);
  206.          var1.setColor(((Component)this).getBackground().darker());
  207.          super.drawValue(var1, var2);
  208.          var1.setColor(var3);
  209.       } else {
  210.          if (this.armed && this.arm_label != null) {
  211.             ((JCLabel)this).layout(this.arm_label);
  212.             var1.translate(this.arm_offset, this.arm_offset);
  213.             super.drawValue(var1, this.arm_label);
  214.          } else {
  215.             if (this.armed) {
  216.                var1.translate(this.arm_offset, this.arm_offset);
  217.             }
  218.  
  219.             super.drawValue(var1, var2);
  220.          }
  221.  
  222.          if (this.armed) {
  223.             var1.translate(-this.arm_offset, -this.arm_offset);
  224.          }
  225.  
  226.       }
  227.    }
  228.  
  229.    protected void drawHighlight(Graphics var1, boolean var2) {
  230.       super.drawHighlight(var1, var2);
  231.       int var3 = ((Component)this).size().width;
  232.       int var4 = ((Component)this).size().height;
  233.       Color var5 = var2 ? super.highlight_color : ((Component)this).getBackground();
  234.       if (var5 == null) {
  235.          var5 = ((Component)this).getForeground();
  236.       }
  237.  
  238.       var1.setColor(var5);
  239.       if (var2) {
  240.          BWTUtil.drawDashedRect(var1, 4, 4, var3 - 8 - 1, var4 - 8 - 1);
  241.       } else {
  242.          var1.drawRect(4, 4, var3 - 8 - 1, var4 - 8 - 1);
  243.       }
  244.    }
  245.  
  246.    public boolean mouseEnter(Event var1, int var2, int var3) {
  247.       if (!this.armed) {
  248.          return false;
  249.       } else {
  250.          this.armAction(var1);
  251.          return true;
  252.       }
  253.    }
  254.  
  255.    public boolean mouseExit(Event var1, int var2, int var3) {
  256.       if (!this.armed) {
  257.          return false;
  258.       } else {
  259.          this.disarmAction(var1);
  260.          this.armed = true;
  261.          return true;
  262.       }
  263.    }
  264.  
  265.    public boolean mouseMove(Event var1, int var2, int var3) {
  266.       return true;
  267.    }
  268.  
  269.    public boolean mouseDown(Event var1, int var2, int var3) {
  270.       if ((var1.metaDown() ? 3 : ((var1.modifiers & 8) != 0 ? 2 : 1)) != 1) {
  271.          return false;
  272.       } else if (this.armed) {
  273.          return true;
  274.       } else if (!((Component)this).inside(var2, var3)) {
  275.          return false;
  276.       } else {
  277.          super.mouseDown(var1, var2, var3);
  278.          this.armAction(var1);
  279.          return true;
  280.       }
  281.    }
  282.  
  283.    public boolean mouseUp(Event var1, int var2, int var3) {
  284.       if ((var1.metaDown() ? 3 : ((var1.modifiers & 8) != 0 ? 2 : 1)) != 1) {
  285.          return false;
  286.       } else {
  287.          if (((Component)this).inside(var2, var3) && this.armed) {
  288.             this.disarmAction(var1);
  289.             this.clickAction(var1);
  290.          } else if (this.armed) {
  291.             this.armed = false;
  292.             ((JCComponent)this).repaint();
  293.          }
  294.  
  295.          return true;
  296.       }
  297.    }
  298.  
  299.    public boolean keyDown(Event var1, int var2) {
  300.       super.keyDown(var1, var2);
  301.       if (var1.key != 10 && (char)var1.key != ' ') {
  302.          return false;
  303.       } else {
  304.          this.armAction(var1);
  305.          ((Component)this).getToolkit().sync();
  306.  
  307.          try {
  308.             Thread.sleep(50L);
  309.          } catch (Exception var3) {
  310.          }
  311.  
  312.          this.disarmAction(var1);
  313.          this.clickAction(var1);
  314.          ((Component)this).getToolkit().sync();
  315.          return true;
  316.       }
  317.    }
  318.  
  319.    protected int preferredWidth() {
  320.       int var10000 = super.label_width + this.arm_offset;
  321.       Object var1 = this.arm_label;
  322.       int var3 = Math.max(var10000, BWTUtil.getWidth(var1, this, ((Component)this).getFont()) + this.arm_offset);
  323.       return Math.max(20, var3);
  324.    }
  325.  
  326.    protected int preferredHeight() {
  327.       int var10000 = super.label_height + this.arm_offset;
  328.       Object var1 = this.arm_label;
  329.       int var3 = Math.max(var10000, BWTUtil.getHeight(var1, this, ((Component)this).getFont()) + this.arm_offset);
  330.       return Math.max(20, var3);
  331.    }
  332. }
  333.