home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / awt / MediaTracker.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  4.0 KB  |  309 lines

  1. package java.awt;
  2.  
  3. import java.io.Serializable;
  4.  
  5. public class MediaTracker implements Serializable {
  6.    Component target;
  7.    MediaEntry head;
  8.    private static final long serialVersionUID = -483174189758638095L;
  9.    public static final int LOADING = 1;
  10.    public static final int ABORTED = 2;
  11.    public static final int ERRORED = 4;
  12.    public static final int COMPLETE = 8;
  13.    static final int DONE = 14;
  14.  
  15.    public MediaTracker(Component var1) {
  16.       this.target = var1;
  17.    }
  18.  
  19.    public void addImage(Image var1, int var2) {
  20.       this.addImage(var1, var2, -1, -1);
  21.    }
  22.  
  23.    public synchronized void addImage(Image var1, int var2, int var3, int var4) {
  24.       this.head = MediaEntry.insert(this.head, new ImageMediaEntry(this, var1, var2, var3, var4));
  25.    }
  26.  
  27.    public boolean checkAll() {
  28.       return this.checkAll(false, true);
  29.    }
  30.  
  31.    public boolean checkAll(boolean var1) {
  32.       return this.checkAll(var1, true);
  33.    }
  34.  
  35.    private synchronized boolean checkAll(boolean var1, boolean var2) {
  36.       MediaEntry var3 = this.head;
  37.  
  38.       boolean var4;
  39.       for(var4 = true; var3 != null; var3 = var3.next) {
  40.          if ((var3.getStatus(var1, var2) & 14) == 0) {
  41.             var4 = false;
  42.          }
  43.       }
  44.  
  45.       return var4;
  46.    }
  47.  
  48.    public synchronized boolean isErrorAny() {
  49.       for(MediaEntry var1 = this.head; var1 != null; var1 = var1.next) {
  50.          if ((var1.getStatus(false, true) & 4) != 0) {
  51.             return true;
  52.          }
  53.       }
  54.  
  55.       return false;
  56.    }
  57.  
  58.    public synchronized Object[] getErrorsAny() {
  59.       MediaEntry var1 = this.head;
  60.  
  61.       int var2;
  62.       for(var2 = 0; var1 != null; var1 = var1.next) {
  63.          if ((var1.getStatus(false, true) & 4) != 0) {
  64.             ++var2;
  65.          }
  66.       }
  67.  
  68.       if (var2 == 0) {
  69.          return null;
  70.       } else {
  71.          Object[] var3 = new Object[var2];
  72.          var1 = this.head;
  73.  
  74.          for(int var5 = 0; var1 != null; var1 = var1.next) {
  75.             if ((var1.getStatus(false, false) & 4) != 0) {
  76.                var3[var5++] = var1.getMedia();
  77.             }
  78.          }
  79.  
  80.          return var3;
  81.       }
  82.    }
  83.  
  84.    public void waitForAll() throws InterruptedException {
  85.       this.waitForAll(0L);
  86.    }
  87.  
  88.    public synchronized boolean waitForAll(long var1) throws InterruptedException {
  89.       long var3 = System.currentTimeMillis() + var1;
  90.       boolean var5 = true;
  91.  
  92.       while(true) {
  93.          int var6 = this.statusAll(var5, var5);
  94.          if ((var6 & 1) == 0) {
  95.             if (var6 != 8) {
  96.                return false;
  97.             }
  98.  
  99.             return true;
  100.          }
  101.  
  102.          var5 = false;
  103.          long var7;
  104.          if (var1 == 0L) {
  105.             var7 = 0L;
  106.          } else {
  107.             var7 = var3 - System.currentTimeMillis();
  108.             if (var7 <= 0L) {
  109.                return false;
  110.             }
  111.          }
  112.  
  113.          this.wait(var7);
  114.       }
  115.    }
  116.  
  117.    public int statusAll(boolean var1) {
  118.       return this.statusAll(var1, true);
  119.    }
  120.  
  121.    private synchronized int statusAll(boolean var1, boolean var2) {
  122.       MediaEntry var3 = this.head;
  123.  
  124.       int var4;
  125.       for(var4 = 0; var3 != null; var3 = var3.next) {
  126.          var4 |= var3.getStatus(var1, var2);
  127.       }
  128.  
  129.       return var4;
  130.    }
  131.  
  132.    public boolean checkID(int var1) {
  133.       return this.checkID(var1, false, true);
  134.    }
  135.  
  136.    public boolean checkID(int var1, boolean var2) {
  137.       return this.checkID(var1, var2, true);
  138.    }
  139.  
  140.    private synchronized boolean checkID(int var1, boolean var2, boolean var3) {
  141.       MediaEntry var4 = this.head;
  142.  
  143.       boolean var5;
  144.       for(var5 = true; var4 != null; var4 = var4.next) {
  145.          if (var4.getID() == var1 && (var4.getStatus(var2, var3) & 14) == 0) {
  146.             var5 = false;
  147.          }
  148.       }
  149.  
  150.       return var5;
  151.    }
  152.  
  153.    public synchronized boolean isErrorID(int var1) {
  154.       for(MediaEntry var2 = this.head; var2 != null; var2 = var2.next) {
  155.          if (var2.getID() == var1 && (var2.getStatus(false, true) & 4) != 0) {
  156.             return true;
  157.          }
  158.       }
  159.  
  160.       return false;
  161.    }
  162.  
  163.    public synchronized Object[] getErrorsID(int var1) {
  164.       MediaEntry var2 = this.head;
  165.  
  166.       int var3;
  167.       for(var3 = 0; var2 != null; var2 = var2.next) {
  168.          if (var2.getID() == var1 && (var2.getStatus(false, true) & 4) != 0) {
  169.             ++var3;
  170.          }
  171.       }
  172.  
  173.       if (var3 == 0) {
  174.          return null;
  175.       } else {
  176.          Object[] var4 = new Object[var3];
  177.          var2 = this.head;
  178.  
  179.          for(int var6 = 0; var2 != null; var2 = var2.next) {
  180.             if (var2.getID() == var1 && (var2.getStatus(false, false) & 4) != 0) {
  181.                var4[var6++] = var2.getMedia();
  182.             }
  183.          }
  184.  
  185.          return var4;
  186.       }
  187.    }
  188.  
  189.    public void waitForID(int var1) throws InterruptedException {
  190.       this.waitForID(var1, 0L);
  191.    }
  192.  
  193.    public synchronized boolean waitForID(int var1, long var2) throws InterruptedException {
  194.       long var4 = System.currentTimeMillis() + var2;
  195.       boolean var6 = true;
  196.  
  197.       while(true) {
  198.          int var7 = this.statusID(var1, var6, var6);
  199.          if ((var7 & 1) == 0) {
  200.             if (var7 != 8) {
  201.                return false;
  202.             }
  203.  
  204.             return true;
  205.          }
  206.  
  207.          var6 = false;
  208.          long var8;
  209.          if (var2 == 0L) {
  210.             var8 = 0L;
  211.          } else {
  212.             var8 = var4 - System.currentTimeMillis();
  213.             if (var8 <= 0L) {
  214.                return false;
  215.             }
  216.          }
  217.  
  218.          this.wait(var8);
  219.       }
  220.    }
  221.  
  222.    public int statusID(int var1, boolean var2) {
  223.       return this.statusID(var1, var2, true);
  224.    }
  225.  
  226.    private synchronized int statusID(int var1, boolean var2, boolean var3) {
  227.       MediaEntry var4 = this.head;
  228.  
  229.       int var5;
  230.       for(var5 = 0; var4 != null; var4 = var4.next) {
  231.          if (var4.getID() == var1) {
  232.             var5 |= var4.getStatus(var2, var3);
  233.          }
  234.       }
  235.  
  236.       return var5;
  237.    }
  238.  
  239.    public synchronized void removeImage(Image var1) {
  240.       MediaEntry var2 = this.head;
  241.  
  242.       MediaEntry var4;
  243.       for(MediaEntry var3 = null; var2 != null; var2 = var4) {
  244.          var4 = var2.next;
  245.          if (var2.getMedia() == var1) {
  246.             if (var3 == null) {
  247.                this.head = var4;
  248.             } else {
  249.                var3.next = var4;
  250.             }
  251.  
  252.             var2.cancel();
  253.          } else {
  254.             var3 = var2;
  255.          }
  256.       }
  257.  
  258.       this.notifyAll();
  259.    }
  260.  
  261.    public synchronized void removeImage(Image var1, int var2) {
  262.       MediaEntry var3 = this.head;
  263.  
  264.       MediaEntry var5;
  265.       for(MediaEntry var4 = null; var3 != null; var3 = var5) {
  266.          var5 = var3.next;
  267.          if (var3.getID() == var2 && var3.getMedia() == var1) {
  268.             if (var4 == null) {
  269.                this.head = var5;
  270.             } else {
  271.                var4.next = var5;
  272.             }
  273.  
  274.             var3.cancel();
  275.          } else {
  276.             var4 = var3;
  277.          }
  278.       }
  279.  
  280.       this.notifyAll();
  281.    }
  282.  
  283.    public synchronized void removeImage(Image var1, int var2, int var3, int var4) {
  284.       MediaEntry var5 = this.head;
  285.  
  286.       MediaEntry var7;
  287.       for(MediaEntry var6 = null; var5 != null; var5 = var7) {
  288.          var7 = var5.next;
  289.          if (var5.getID() == var2 && var5 instanceof ImageMediaEntry && ((ImageMediaEntry)var5).matches(var1, var3, var4)) {
  290.             if (var6 == null) {
  291.                this.head = var7;
  292.             } else {
  293.                var6.next = var7;
  294.             }
  295.  
  296.             var5.cancel();
  297.          } else {
  298.             var6 = var5;
  299.          }
  300.       }
  301.  
  302.       this.notifyAll();
  303.    }
  304.  
  305.    synchronized void setDone() {
  306.       this.notifyAll();
  307.    }
  308. }
  309.