home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / plaf / basic / BasicProgressBarUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  5.2 KB  |  229 lines

  1. package com.sun.java.swing.plaf.basic;
  2.  
  3. import com.sun.java.swing.BoundedRangeModel;
  4. import com.sun.java.swing.JComponent;
  5. import com.sun.java.swing.JProgressBar;
  6. import com.sun.java.swing.LookAndFeel;
  7. import com.sun.java.swing.event.ChangeEvent;
  8. import com.sun.java.swing.event.ChangeListener;
  9. import com.sun.java.swing.plaf.ComponentUI;
  10. import com.sun.java.swing.plaf.ProgressBarUI;
  11. import java.awt.Component;
  12. import java.awt.Dimension;
  13. import java.awt.Graphics;
  14. import java.awt.Insets;
  15. import java.io.Serializable;
  16. import java.util.EventObject;
  17.  
  18. public class BasicProgressBarUI extends ProgressBarUI implements ChangeListener, Serializable {
  19.    int cachedPercent;
  20.    static final Dimension PREFERRED_INNER_HORIZONTAL = new Dimension(146, 12);
  21.    static final Dimension PREFERRED_INNER_VERTICAL = new Dimension(12, 146);
  22.  
  23.    public static ComponentUI createUI(JComponent var0) {
  24.       return new BasicProgressBarUI();
  25.    }
  26.  
  27.    public void installUI(JComponent var1) {
  28.       this.installDefaults(var1);
  29.       this.installListeners(var1);
  30.    }
  31.  
  32.    public void uninstallUI(JComponent var1) {
  33.       this.uninstallListeners(var1);
  34.    }
  35.  
  36.    protected void installDefaults(JComponent var1) {
  37.       var1.setOpaque(true);
  38.       LookAndFeel.installColorsAndFont(var1, "ProgressBar.background", "ProgressBar.foreground", "ProgressBar.font");
  39.    }
  40.  
  41.    protected void installListeners(JComponent var1) {
  42.       ((JProgressBar)var1).addChangeListener(this);
  43.    }
  44.  
  45.    protected void uninstallListeners(JComponent var1) {
  46.       ((JProgressBar)var1).removeChangeListener(this);
  47.    }
  48.  
  49.    protected void uninstallDefaults(JComponent var1) {
  50.    }
  51.  
  52.    public Dimension getPreferredInnerHorizontal() {
  53.       return PREFERRED_INNER_HORIZONTAL;
  54.    }
  55.  
  56.    public Dimension getPreferredInnerVertical() {
  57.       return PREFERRED_INNER_VERTICAL;
  58.    }
  59.  
  60.    public int getCachedPercent() {
  61.       return this.cachedPercent;
  62.    }
  63.  
  64.    public void setCachedPercent(int var1) {
  65.       this.cachedPercent = var1;
  66.    }
  67.  
  68.    public int getBorderBuffer() {
  69.       return 0;
  70.    }
  71.  
  72.    public int getCellLength() {
  73.       return 1;
  74.    }
  75.  
  76.    public int getCellSpacing() {
  77.       return 0;
  78.    }
  79.  
  80.    public void paint(Graphics var1, JComponent var2) {
  81.       Dimension var3 = ((Component)var2).getSize();
  82.       JProgressBar var7 = (JProgressBar)var2;
  83.       BoundedRangeModel var8 = var7.getModel();
  84.       Insets var9 = this.getBorderInsets(var2);
  85.       int var5 = var9.left;
  86.       int var6 = var9.top;
  87.       Dimension var4 = new Dimension(var3.width - (var9.left + var9.right), var3.height - (var9.top + var9.bottom));
  88.       var1.setColor(((Component)var2).getForeground());
  89.       if (var7.getOrientation() == 0) {
  90.          long var10 = (long)(var8.getMaximum() - var8.getMinimum());
  91.          int var12 = 0;
  92.          if (var10 != 0L) {
  93.             double var13 = (double)var4.width;
  94.             double var15 = (double)var8.getValue();
  95.             double var17 = var15 / (double)var10;
  96.             var12 = (int)(var13 * var17);
  97.          }
  98.  
  99.          int var22 = var5 + var12 - this.getCellLength();
  100.          int var26 = this.getCellLength() + this.getCellSpacing();
  101.  
  102.          int var14;
  103.          for(var14 = var5; var14 < var22; var14 += var26) {
  104.             var1.fillRect(var14, var6, this.getCellLength(), var4.height);
  105.          }
  106.  
  107.          if (var12 == var4.width && var14 < var4.width + var5) {
  108.             var1.fillRect(var14, var6, var4.width + var5 - var14, var4.height);
  109.          }
  110.       } else {
  111.          int var19 = var8.getMaximum() - var8.getMinimum();
  112.          int var11 = 0;
  113.          if (var19 != 0) {
  114.             double var20 = (double)var4.height;
  115.             double var24 = (double)var8.getValue();
  116.             double var16 = var24 / (double)var19;
  117.             var11 = (int)(var20 * var16);
  118.          }
  119.  
  120.          int var21 = var4.height - 1 + var6 - var11;
  121.          int var25 = this.getCellLength() + this.getCellSpacing();
  122.  
  123.          int var23;
  124.          for(var23 = var4.height - 1 + (var6 - this.getCellLength()); var23 > var21; var23 -= var25) {
  125.             var1.fillRect(var5, var23, var4.width, this.getCellLength());
  126.          }
  127.  
  128.          if (var11 == var4.height) {
  129.             var1.fillRect(var5, var6, var4.width, var23 + this.getCellLength() - var6);
  130.          }
  131.       }
  132.  
  133.       if (var7.isBorderPainted()) {
  134.          BasicGraphicsUtils.drawEtchedRect(var1, 0, 0, var3.width, var3.height);
  135.       }
  136.  
  137.    }
  138.  
  139.    public Dimension getPreferredSize(JComponent var1) {
  140.       JProgressBar var3 = (JProgressBar)var1;
  141.       Insets var4 = this.getBorderInsets(var1);
  142.       Dimension var2;
  143.       if (var3.getOrientation() == 0) {
  144.          var2 = new Dimension(this.getPreferredInnerHorizontal());
  145.       } else {
  146.          var2 = new Dimension(this.getPreferredInnerVertical());
  147.       }
  148.  
  149.       var2.width += var4.left + var4.right;
  150.       var2.height += var4.top + var4.bottom;
  151.       return var2;
  152.    }
  153.  
  154.    public Dimension getMinimumSize(JComponent var1) {
  155.       Dimension var2 = this.getPreferredSize(var1);
  156.       JProgressBar var3 = (JProgressBar)var1;
  157.       if (var3.getOrientation() == 0) {
  158.          var2.width = 0;
  159.       } else {
  160.          var2.height = 0;
  161.       }
  162.  
  163.       return var2;
  164.    }
  165.  
  166.    public Dimension getMaximumSize(JComponent var1) {
  167.       Dimension var2 = this.getPreferredSize(var1);
  168.       JProgressBar var3 = (JProgressBar)var1;
  169.       if (var3.getOrientation() == 0) {
  170.          var2.width = 32767;
  171.       } else {
  172.          var2.height = 32767;
  173.       }
  174.  
  175.       return var2;
  176.    }
  177.  
  178.    public Insets getInsets(JComponent var1) {
  179.       return this.getBorderInsets(var1);
  180.    }
  181.  
  182.    public Insets getBorderInsets(JComponent var1) {
  183.       JProgressBar var2 = (JProgressBar)var1;
  184.       if (var2.isBorderPainted()) {
  185.          Insets var3 = (Insets)BasicGraphicsUtils.getEtchedInsets().clone();
  186.          var3.left += this.getBorderBuffer();
  187.          var3.right += this.getBorderBuffer();
  188.          var3.top += this.getBorderBuffer();
  189.          var3.bottom += this.getBorderBuffer();
  190.          return var3;
  191.       } else {
  192.          return new Insets(0, 0, 0, 0);
  193.       }
  194.    }
  195.  
  196.    public void stateChanged(ChangeEvent var1) {
  197.       JProgressBar var2 = (JProgressBar)((EventObject)var1).getSource();
  198.       BoundedRangeModel var3 = var2.getModel();
  199.       int var4 = var3.getMaximum() - var3.getMinimum();
  200.       int var5 = var4 > 0 ? 100 * var3.getValue() / var4 : 0;
  201.       if (var5 != this.getCachedPercent()) {
  202.          int var6 = Math.min(var5, this.getCachedPercent());
  203.          int var7 = Math.max(var5, this.getCachedPercent());
  204.          Insets var8 = this.getBorderInsets(var2);
  205.          Dimension var9 = ((Component)var2).getSize();
  206.          if (var2.getOrientation() == 0) {
  207.             int var10 = var9.width - (var8.right + var8.left);
  208.             int var11 = var6 * var10 / 100;
  209.             int var12 = var7 * var10 / 100;
  210.             int var13 = this.getCellLength() + this.getCellSpacing();
  211.             var11 = var11 / var13 * var13 + var8.left;
  212.             var12 = (var12 / var13 + 1) * var13 + var8.left;
  213.             ((Component)var2).repaint();
  214.          } else {
  215.             int var14 = var9.height - (var8.bottom + var8.top);
  216.             int var16 = var7 * var14 / 100;
  217.             int var19 = var6 * var14 / 100;
  218.             int var21 = this.getCellLength() + this.getCellSpacing();
  219.             var16 = var14 - (var16 / var21 + 1) * var21 + var8.top;
  220.             var19 = var14 - var19 / var21 * var21 + var8.top;
  221.             ((Component)var2).repaint(var8.left, var16 - 1, var9.width - (var8.left + var8.right), var19 - var16 + 2);
  222.          }
  223.  
  224.          this.setCachedPercent(var5);
  225.       }
  226.  
  227.    }
  228. }
  229.