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 / SortItem.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-11-19  |  3.1 KB  |  168 lines

  1. import java.applet.Applet;
  2. import java.awt.Color;
  3. import java.awt.Component;
  4. import java.awt.Event;
  5. import java.awt.Graphics;
  6.  
  7. public class SortItem extends Applet implements Runnable {
  8.    private Thread kicker;
  9.    int[] arr;
  10.    // $FF: renamed from: h1 int
  11.    int field_0 = -1;
  12.    // $FF: renamed from: h2 int
  13.    int field_1 = -1;
  14.    String algName;
  15.    SortAlgorithm algorithm;
  16.  
  17.    void scramble() {
  18.       int[] var1 = new int[((Component)this).size().height / 2];
  19.       double var2 = (double)((Component)this).size().width / (double)var1.length;
  20.       int var4 = var1.length;
  21.  
  22.       while(true) {
  23.          --var4;
  24.          if (var4 < 0) {
  25.             int var5 = var1.length;
  26.  
  27.             while(true) {
  28.                --var5;
  29.                if (var5 < 0) {
  30.                   this.arr = var1;
  31.                   return;
  32.                }
  33.  
  34.                int var6 = (int)((double)var5 * Math.random());
  35.                int var7 = var1[var5];
  36.                var1[var5] = var1[var6];
  37.                var1[var6] = var7;
  38.             }
  39.          }
  40.  
  41.          var1[var4] = (int)((double)var4 * var2);
  42.       }
  43.    }
  44.  
  45.    void pause() {
  46.       this.pause(-1, -1);
  47.    }
  48.  
  49.    void pause(int var1) {
  50.       this.pause(var1, -1);
  51.    }
  52.  
  53.    void pause(int var1, int var2) {
  54.       this.field_0 = var1;
  55.       this.field_1 = var2;
  56.       if (this.kicker != null) {
  57.          ((Component)this).repaint();
  58.       }
  59.  
  60.       try {
  61.          Thread.sleep(20L);
  62.       } catch (InterruptedException var3) {
  63.       }
  64.    }
  65.  
  66.    public void init() {
  67.       String var1 = ((Applet)this).getParameter("alg");
  68.       if (var1 == null) {
  69.          var1 = "BubbleSort";
  70.       }
  71.  
  72.       this.algName = var1 + "Algorithm";
  73.       this.scramble();
  74.       ((Applet)this).resize(100, 100);
  75.    }
  76.  
  77.    public void paint(Graphics var1) {
  78.       int[] var2 = this.arr;
  79.       int var3 = ((Component)this).size().height - 1;
  80.       var1.setColor(((Component)this).getBackground());
  81.       int var4 = var2.length;
  82.  
  83.       while(true) {
  84.          --var4;
  85.          if (var4 < 0) {
  86.             var1.setColor(Color.black);
  87.             var3 = ((Component)this).size().height - 1;
  88.             int var5 = var2.length;
  89.  
  90.             while(true) {
  91.                --var5;
  92.                if (var5 < 0) {
  93.                   if (this.field_0 >= 0) {
  94.                      var1.setColor(Color.red);
  95.                      var3 = this.field_0 * 2 + 1;
  96.                      var1.drawLine(0, var3, ((Component)this).size().width, var3);
  97.                   }
  98.  
  99.                   if (this.field_1 >= 0) {
  100.                      var1.setColor(Color.blue);
  101.                      var3 = this.field_1 * 2 + 1;
  102.                      var1.drawLine(0, var3, ((Component)this).size().width, var3);
  103.                   }
  104.  
  105.                   return;
  106.                }
  107.  
  108.                var1.drawLine(0, var3, this.arr[var5], var3);
  109.                var3 -= 2;
  110.             }
  111.          }
  112.  
  113.          var1.drawLine(this.arr[var4], var3, ((Component)this).size().width, var3);
  114.          var3 -= 2;
  115.       }
  116.    }
  117.  
  118.    public void update(Graphics var1) {
  119.       this.paint(var1);
  120.    }
  121.  
  122.    public void run() {
  123.       try {
  124.          if (this.algorithm == null) {
  125.             this.algorithm = (SortAlgorithm)Class.forName(this.algName).newInstance();
  126.             this.algorithm.setParent(this);
  127.          }
  128.  
  129.          this.algorithm.init();
  130.          this.algorithm.sort(this.arr);
  131.       } catch (Exception var1) {
  132.       }
  133.    }
  134.  
  135.    public synchronized void stop() {
  136.       if (this.kicker != null) {
  137.          try {
  138.             this.kicker.stop();
  139.          } catch (IllegalThreadStateException var2) {
  140.          }
  141.  
  142.          this.kicker = null;
  143.       }
  144.  
  145.       if (this.algorithm != null) {
  146.          try {
  147.             this.algorithm.stop();
  148.          } catch (IllegalThreadStateException var1) {
  149.          }
  150.       }
  151.    }
  152.  
  153.    private synchronized void startSort() {
  154.       if (this.kicker == null || !this.kicker.isAlive()) {
  155.          this.scramble();
  156.          ((Component)this).repaint();
  157.          this.kicker = new Thread(this);
  158.          this.kicker.start();
  159.       }
  160.  
  161.    }
  162.  
  163.    public boolean mouseUp(Event var1, int var2, int var3) {
  164.       this.startSort();
  165.       return true;
  166.    }
  167. }
  168.