home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / java / awt / datatransfer / SystemFlavorMap.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  4.1 KB  |  177 lines

  1. package java.awt.datatransfer;
  2.  
  3. import java.security.AccessController;
  4. import java.util.Enumeration;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. import java.util.Properties;
  8. import java.util.WeakHashMap;
  9.  
  10. public final class SystemFlavorMap implements FlavorMap {
  11.    private static String JavaMIME = "JAVA_DATAFLAVOR:";
  12.    private static final WeakHashMap flavorMaps = new WeakHashMap();
  13.    private Properties nativeToMIME;
  14.    private HashMap flavorToNative;
  15.    private HashMap nativeToFlavor;
  16.  
  17.    public static FlavorMap getDefaultFlavorMap() {
  18.       ClassLoader var0 = Thread.currentThread().getContextClassLoader();
  19.       if (var0 == null) {
  20.          var0 = ClassLoader.getSystemClassLoader();
  21.       }
  22.  
  23.       WeakHashMap var2 = flavorMaps;
  24.       synchronized(var2) {
  25.          Object var1;
  26.          if ((var1 = (FlavorMap)flavorMaps.get(var0)) == null) {
  27.             flavorMaps.put(var0, var1 = new SystemFlavorMap());
  28.          }
  29.  
  30.          return (FlavorMap)var1;
  31.       }
  32.    }
  33.  
  34.    private SystemFlavorMap() {
  35.       Properties[] var1 = new Properties[]{null};
  36.       boolean[] var2 = new boolean[]{false};
  37.       AccessController.doPrivileged(new 1(this, var1, var2));
  38.       if (!var2[0]) {
  39.          int var3 = this.nativeToMIME.size() + (var1[0] != null ? var1[0].size() : 0);
  40.          int var4 = var3 > 0 ? var3 : 1;
  41.          this.flavorToNative = new HashMap(var4);
  42.          this.nativeToFlavor = new HashMap(var4);
  43.          if (var3 > 0) {
  44.             Enumeration var5 = this.nativeToMIME.propertyNames();
  45.  
  46.             while(true) {
  47.                String var6;
  48.                DataFlavor var13;
  49.                while(true) {
  50.                   if (!var5.hasMoreElements()) {
  51.                      return;
  52.                   }
  53.  
  54.                   var6 = (String)var5.nextElement();
  55.                   String var7 = this.nativeToMIME.getProperty(var6);
  56.                   Object var8 = null;
  57.  
  58.                   try {
  59.                      var13 = new DataFlavor(var7);
  60.                      break;
  61.                   } catch (Exception var12) {
  62.                      try {
  63.                         var13 = new DataFlavor(var7, (String)null);
  64.                         break;
  65.                      } catch (Exception var11) {
  66.                         ((Throwable)var11).printStackTrace();
  67.                      }
  68.                   }
  69.                }
  70.  
  71.                this.flavorToNative.put(var13.getMimeType(), var6);
  72.                this.nativeToFlavor.put(var6, var13);
  73.             }
  74.          }
  75.       }
  76.    }
  77.  
  78.    public synchronized Map getNativesForFlavors(DataFlavor[] var1) {
  79.       if (var1 == null) {
  80.          return (Map)this.flavorToNative.clone();
  81.       } else if (var1.length == 0) {
  82.          return null;
  83.       } else {
  84.          HashMap var3 = new HashMap(var1.length);
  85.  
  86.          for(int var2 = 0; var2 < var1.length; ++var2) {
  87.             DataFlavor var4 = var1[var2];
  88.             String var5 = var4.getMimeType();
  89.             String var6 = (String)this.flavorToNative.get(var5);
  90.             if (var6 == null) {
  91.                String var7 = encodeJavaMIMEType(var5);
  92.                var3.put(var4, var7);
  93.                this.nativeToFlavor.put(var7, var4);
  94.                this.flavorToNative.put(var5, var7);
  95.             } else {
  96.                var3.put(var4, var6);
  97.             }
  98.          }
  99.  
  100.          return var3;
  101.       }
  102.    }
  103.  
  104.    public synchronized Map getFlavorsForNatives(String[] var1) {
  105.       boolean var2 = false;
  106.       if (var1 == null) {
  107.          return (Map)this.nativeToFlavor.clone();
  108.       } else if (var1.length == 0) {
  109.          return new HashMap();
  110.       } else {
  111.          HashMap var4 = new HashMap(var1.length);
  112.  
  113.          for(int var3 = 0; var3 < var1.length; ++var3) {
  114.             String var5 = var1[var3];
  115.             Object var6 = null;
  116.             DataFlavor var11;
  117.             if (isJavaMIMEType(var1[var3])) {
  118.                String var7 = var1[var3];
  119.                if ((var11 = (DataFlavor)this.nativeToFlavor.get(var7)) == null) {
  120.                   String var8 = decodeJavaMIMEType(var1[var3]);
  121.  
  122.                   try {
  123.                      var11 = new DataFlavor(var8);
  124.                   } catch (Exception var10) {
  125.                      System.err.println("Exception \"" + var10.getClass().getName() + ": " + ((Throwable)var10).getMessage() + "\"while constructing DataFlavor for: " + var8);
  126.                      var11 = null;
  127.                   }
  128.  
  129.                   if (var11 != null) {
  130.                      this.nativeToFlavor.put(var7, var11);
  131.                      this.flavorToNative.put(var11.getMimeType(), var7);
  132.                   }
  133.                }
  134.             } else {
  135.                var11 = (DataFlavor)this.nativeToFlavor.get(var5);
  136.             }
  137.  
  138.             if (var11 != null) {
  139.                var4.put(var5, var11);
  140.             }
  141.          }
  142.  
  143.          return var4;
  144.       }
  145.    }
  146.  
  147.    public static String encodeJavaMIMEType(String var0) {
  148.       return JavaMIME + var0;
  149.    }
  150.  
  151.    public static String encodeDataFlavor(DataFlavor var0) {
  152.       return JavaMIME + var0.getMimeType();
  153.    }
  154.  
  155.    public static boolean isJavaMIMEType(String var0) {
  156.       return var0 != null && var0.startsWith(JavaMIME, 0);
  157.    }
  158.  
  159.    public static String decodeJavaMIMEType(String var0) {
  160.       return !isJavaMIMEType(var0) ? null : var0.substring(JavaMIME.length(), var0.length()).trim();
  161.    }
  162.  
  163.    public static DataFlavor decodeDataFlavor(String var0) throws ClassNotFoundException {
  164.       return !isJavaMIMEType(var0) ? null : new DataFlavor(var0.substring(JavaMIME.length(), var0.length()).trim());
  165.    }
  166.  
  167.    // $FF: synthetic method
  168.    static Properties access$002(SystemFlavorMap var0, Properties var1) {
  169.       return var0.nativeToMIME = var1;
  170.    }
  171.  
  172.    // $FF: synthetic method
  173.    static Properties access$000(SystemFlavorMap var0) {
  174.       return var0.nativeToMIME;
  175.    }
  176. }
  177.