home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / AbstractAction$ArrayTable.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.3 KB  |  228 lines

  1. package javax.swing;
  2.  
  3. import java.util.Enumeration;
  4. import java.util.Hashtable;
  5.  
  6. class AbstractAction$ArrayTable implements Cloneable {
  7.    private Object table = null;
  8.    private static final int ARRAY_BOUNDARY = 8;
  9.  
  10.    public void put(Object var1, Object var2) {
  11.       if (this.table == null) {
  12.          this.table = new Object[]{var1, var2};
  13.       } else {
  14.          int var3 = this.size();
  15.          if (var3 < 8) {
  16.             if (this.containsKey(var1)) {
  17.                Object[] var4 = this.table;
  18.  
  19.                for(int var5 = 0; var5 < var4.length - 1; var5 += 2) {
  20.                   if (var4[var5].equals(var1)) {
  21.                      var4[var5 + 1] = var2;
  22.                      break;
  23.                   }
  24.                }
  25.             } else {
  26.                Object[] var7 = this.table;
  27.                int var8 = var7.length;
  28.                Object[] var6 = new Object[var8 + 2];
  29.                System.arraycopy(var7, 0, var6, 0, var8);
  30.                var6[var8] = var1;
  31.                var6[var8 + 1] = var2;
  32.                this.table = var6;
  33.             }
  34.          } else {
  35.             if (var3 == 8 && this.isArray()) {
  36.                this.grow();
  37.             }
  38.  
  39.             ((Hashtable)this.table).put(var1, var2);
  40.          }
  41.       }
  42.  
  43.    }
  44.  
  45.    public Object get(Object var1) {
  46.       Object var2 = null;
  47.       if (this.table != null) {
  48.          if (this.isArray()) {
  49.             Object[] var3 = this.table;
  50.  
  51.             for(int var4 = 0; var4 < var3.length - 1; var4 += 2) {
  52.                if (var3[var4].equals(var1)) {
  53.                   var2 = var3[var4 + 1];
  54.                   break;
  55.                }
  56.             }
  57.          } else {
  58.             var2 = ((Hashtable)this.table).get(var1);
  59.          }
  60.       }
  61.  
  62.       return var2;
  63.    }
  64.  
  65.    public int size() {
  66.       if (this.table == null) {
  67.          return 0;
  68.       } else {
  69.          int var1;
  70.          if (this.isArray()) {
  71.             var1 = ((Object[])this.table).length / 2;
  72.          } else {
  73.             var1 = ((Hashtable)this.table).size();
  74.          }
  75.  
  76.          return var1;
  77.       }
  78.    }
  79.  
  80.    public boolean containsKey(Object var1) {
  81.       boolean var2 = false;
  82.       if (this.table != null) {
  83.          if (this.isArray()) {
  84.             Object[] var3 = this.table;
  85.  
  86.             for(int var4 = 0; var4 < var3.length - 1; var4 += 2) {
  87.                if (var3[var4].equals(var1)) {
  88.                   var2 = true;
  89.                   break;
  90.                }
  91.             }
  92.          } else {
  93.             var2 = ((Hashtable)this.table).containsKey(var1);
  94.          }
  95.       }
  96.  
  97.       return var2;
  98.    }
  99.  
  100.    public Object remove(Object var1) {
  101.       Object var2 = null;
  102.       if (var1 == null) {
  103.          return null;
  104.       } else {
  105.          if (this.table != null) {
  106.             if (!this.isArray()) {
  107.                var2 = ((Hashtable)this.table).remove(var1);
  108.             } else {
  109.                int var3 = -1;
  110.                Object[] var4 = this.table;
  111.  
  112.                for(int var5 = var4.length - 2; var5 >= 0; var5 -= 2) {
  113.                   if (var4[var5].equals(var1)) {
  114.                      var3 = var5;
  115.                      var2 = var4[var5 + 1];
  116.                      break;
  117.                   }
  118.                }
  119.  
  120.                if (var3 != -1) {
  121.                   Object[] var6 = new Object[var4.length - 2];
  122.                   System.arraycopy(var4, 0, var6, 0, var3);
  123.                   if (var3 < var6.length) {
  124.                      System.arraycopy(var4, var3 + 2, var6, var3, var6.length - var3);
  125.                   }
  126.  
  127.                   this.table = var6.length == 0 ? null : var6;
  128.                }
  129.             }
  130.  
  131.             if (this.size() == 7 && !this.isArray()) {
  132.                this.shrink();
  133.             }
  134.          }
  135.  
  136.          return var2;
  137.       }
  138.    }
  139.  
  140.    public void clear() {
  141.       this.table = null;
  142.    }
  143.  
  144.    public Object clone() {
  145.       AbstractAction$ArrayTable var1 = new AbstractAction$ArrayTable();
  146.       if (this.isArray()) {
  147.          Object[] var2 = this.table;
  148.  
  149.          for(int var3 = 0; var3 < var2.length - 1; var3 += 2) {
  150.             var1.put(var2[var3], var2[var3 + 1]);
  151.          }
  152.       } else {
  153.          Hashtable var5 = (Hashtable)this.table;
  154.          Enumeration var6 = var5.keys();
  155.  
  156.          while(var6.hasMoreElements()) {
  157.             Object var4 = var6.nextElement();
  158.             var1.put(var4, var5.get(var4));
  159.          }
  160.       }
  161.  
  162.       return var1;
  163.    }
  164.  
  165.    public Object[] getKeys(Object[] var1) {
  166.       if (this.table == null) {
  167.          return null;
  168.       } else {
  169.          if (this.isArray()) {
  170.             Object[] var2 = this.table;
  171.             if (var1 == null) {
  172.                var1 = new Object[var2.length / 2];
  173.             }
  174.  
  175.             int var3 = 0;
  176.  
  177.             for(int var4 = 0; var3 < var2.length - 1; ++var4) {
  178.                var1[var4] = var2[var3];
  179.                var3 += 2;
  180.             }
  181.          } else {
  182.             Hashtable var5 = (Hashtable)this.table;
  183.             Enumeration var6 = var5.keys();
  184.             int var7 = var5.size();
  185.             if (var1 == null) {
  186.                var1 = new Object[var7];
  187.             }
  188.  
  189.             while(var7 > 0) {
  190.                --var7;
  191.                var1[var7] = var6.nextElement();
  192.             }
  193.          }
  194.  
  195.          return var1;
  196.       }
  197.    }
  198.  
  199.    private boolean isArray() {
  200.       return this.table instanceof Object[];
  201.    }
  202.  
  203.    private void grow() {
  204.       Object[] var1 = this.table;
  205.       Hashtable var2 = new Hashtable(var1.length / 2);
  206.  
  207.       for(int var3 = 0; var3 < var1.length; var3 += 2) {
  208.          var2.put(var1[var3], var1[var3 + 1]);
  209.       }
  210.  
  211.       this.table = var2;
  212.    }
  213.  
  214.    private void shrink() {
  215.       Hashtable var1 = (Hashtable)this.table;
  216.       Object[] var2 = new Object[var1.size() * 2];
  217.       Enumeration var3 = var1.keys();
  218.  
  219.       for(int var4 = 0; var3.hasMoreElements(); var4 += 2) {
  220.          Object var5 = var3.nextElement();
  221.          var2[var4] = var5;
  222.          var2[var4 + 1] = var1.get(var5);
  223.       }
  224.  
  225.       this.table = var2;
  226.    }
  227. }
  228.