home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Event;
- import java.awt.Graphics;
-
- public class SortItem extends Applet implements Runnable {
- private Thread kicker;
- int[] arr;
- // $FF: renamed from: h1 int
- int field_0 = -1;
- // $FF: renamed from: h2 int
- int field_1 = -1;
- String algName;
- SortAlgorithm algorithm;
-
- void scramble() {
- int[] var1 = new int[((Component)this).size().height / 2];
- double var2 = (double)((Component)this).size().width / (double)var1.length;
- int var4 = var1.length;
-
- while(true) {
- --var4;
- if (var4 < 0) {
- int var5 = var1.length;
-
- while(true) {
- --var5;
- if (var5 < 0) {
- this.arr = var1;
- return;
- }
-
- int var6 = (int)((double)var5 * Math.random());
- int var7 = var1[var5];
- var1[var5] = var1[var6];
- var1[var6] = var7;
- }
- }
-
- var1[var4] = (int)((double)var4 * var2);
- }
- }
-
- void pause() {
- this.pause(-1, -1);
- }
-
- void pause(int var1) {
- this.pause(var1, -1);
- }
-
- void pause(int var1, int var2) {
- this.field_0 = var1;
- this.field_1 = var2;
- if (this.kicker != null) {
- ((Component)this).repaint();
- }
-
- try {
- Thread.sleep(20L);
- } catch (InterruptedException var3) {
- }
- }
-
- public void init() {
- String var1 = ((Applet)this).getParameter("alg");
- if (var1 == null) {
- var1 = "BubbleSort";
- }
-
- this.algName = var1 + "Algorithm";
- this.scramble();
- ((Applet)this).resize(100, 100);
- }
-
- public void paint(Graphics var1) {
- int[] var2 = this.arr;
- int var3 = ((Component)this).size().height - 1;
- var1.setColor(((Component)this).getBackground());
- int var4 = var2.length;
-
- while(true) {
- --var4;
- if (var4 < 0) {
- var1.setColor(Color.black);
- var3 = ((Component)this).size().height - 1;
- int var5 = var2.length;
-
- while(true) {
- --var5;
- if (var5 < 0) {
- if (this.field_0 >= 0) {
- var1.setColor(Color.red);
- var3 = this.field_0 * 2 + 1;
- var1.drawLine(0, var3, ((Component)this).size().width, var3);
- }
-
- if (this.field_1 >= 0) {
- var1.setColor(Color.blue);
- var3 = this.field_1 * 2 + 1;
- var1.drawLine(0, var3, ((Component)this).size().width, var3);
- }
-
- return;
- }
-
- var1.drawLine(0, var3, this.arr[var5], var3);
- var3 -= 2;
- }
- }
-
- var1.drawLine(this.arr[var4], var3, ((Component)this).size().width, var3);
- var3 -= 2;
- }
- }
-
- public void update(Graphics var1) {
- this.paint(var1);
- }
-
- public void run() {
- try {
- if (this.algorithm == null) {
- this.algorithm = (SortAlgorithm)Class.forName(this.algName).newInstance();
- this.algorithm.setParent(this);
- }
-
- this.algorithm.init();
- this.algorithm.sort(this.arr);
- } catch (Exception var1) {
- }
- }
-
- public synchronized void stop() {
- if (this.kicker != null) {
- try {
- this.kicker.stop();
- } catch (IllegalThreadStateException var2) {
- }
-
- this.kicker = null;
- }
-
- if (this.algorithm != null) {
- try {
- this.algorithm.stop();
- } catch (IllegalThreadStateException var1) {
- }
- }
- }
-
- private synchronized void startSort() {
- if (this.kicker == null || !this.kicker.isAlive()) {
- this.scramble();
- ((Component)this).repaint();
- this.kicker = new Thread(this);
- this.kicker.start();
- }
-
- }
-
- public boolean mouseUp(Event var1, int var2, int var3) {
- this.startSort();
- return true;
- }
- }
-