home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / Share / Java / Bluette / Plastic / demo / Graph.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-09-03  |  3.0 KB  |  102 lines

  1. import java.applet.Applet;
  2. import java.awt.BorderLayout;
  3. import java.awt.Button;
  4. import java.awt.Checkbox;
  5. import java.awt.Component;
  6. import java.awt.Container;
  7. import java.awt.Dimension;
  8. import java.awt.Event;
  9. import java.awt.Panel;
  10. import java.util.StringTokenizer;
  11.  
  12. public class Graph extends Applet {
  13.    GraphPanel panel;
  14.  
  15.    public void init() {
  16.       ((Container)this).setLayout(new BorderLayout());
  17.       this.panel = new GraphPanel(this);
  18.       ((Container)this).add("Center", this.panel);
  19.       Panel var1 = new Panel();
  20.       ((Container)this).add("South", var1);
  21.       ((Container)var1).add(new Button("Scramble"));
  22.       ((Container)var1).add(new Button("Shake"));
  23.       ((Container)var1).add(new Checkbox("Stress"));
  24.       ((Container)var1).add(new Checkbox("Random"));
  25.       String var2 = ((Applet)this).getParameter("edges");
  26.       StringTokenizer var3 = new StringTokenizer(var2, ",");
  27.  
  28.       while(var3.hasMoreTokens()) {
  29.          String var4 = var3.nextToken();
  30.          int var5 = var4.indexOf(45);
  31.          if (var5 > 0) {
  32.             int var6 = 50;
  33.             int var7 = var4.indexOf(47);
  34.             if (var7 > 0) {
  35.                var6 = Integer.valueOf(var4.substring(var7 + 1));
  36.                var4 = var4.substring(0, var7);
  37.             }
  38.  
  39.             this.panel.addEdge(var4.substring(0, var5), var4.substring(var5 + 1), var6);
  40.          }
  41.       }
  42.  
  43.       Dimension var8 = ((Component)this).size();
  44.       String var9 = ((Applet)this).getParameter("center");
  45.       if (var9 != null) {
  46.          Node var10 = this.panel.nodes[this.panel.findNode(var9)];
  47.          var10.x = (double)(var8.width / 2);
  48.          var10.y = (double)(var8.height / 2);
  49.          var10.fixed = true;
  50.       }
  51.  
  52.    }
  53.  
  54.    public void start() {
  55.       this.panel.start();
  56.    }
  57.  
  58.    public void stop() {
  59.       this.panel.stop();
  60.    }
  61.  
  62.    public boolean action(Event var1, Object var2) {
  63.       if (var2 instanceof Boolean) {
  64.          if (((Checkbox)var1.target).getLabel().equals("Stress")) {
  65.             this.panel.stress = (Boolean)var2;
  66.          } else {
  67.             this.panel.random = (Boolean)var2;
  68.          }
  69.  
  70.          return true;
  71.       } else if ("Scramble".equals(var2)) {
  72.          ((Applet)this).play(((Applet)this).getCodeBase(), "audio/computer.au");
  73.          Dimension var6 = ((Component)this).size();
  74.  
  75.          for(int var7 = 0; var7 < this.panel.nnodes; ++var7) {
  76.             Node var5 = this.panel.nodes[var7];
  77.             if (!var5.fixed) {
  78.                var5.x = (double)10.0F + (double)(var6.width - 20) * Math.random();
  79.                var5.y = (double)10.0F + (double)(var6.height - 20) * Math.random();
  80.             }
  81.          }
  82.  
  83.          return true;
  84.       } else if ("Shake".equals(var2)) {
  85.          ((Applet)this).play(((Applet)this).getCodeBase(), "audio/gong.au");
  86.          ((Component)this).size();
  87.  
  88.          for(int var3 = 0; var3 < this.panel.nnodes; ++var3) {
  89.             Node var4 = this.panel.nodes[var3];
  90.             if (!var4.fixed) {
  91.                var4.x += (double)80.0F * Math.random() - (double)40.0F;
  92.                var4.y += (double)80.0F * Math.random() - (double)40.0F;
  93.             }
  94.          }
  95.  
  96.          return true;
  97.       } else {
  98.          return false;
  99.       }
  100.    }
  101. }
  102.