home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / javax / swing / ArrayTable.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  2.6 KB  |  263 lines

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