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 / sun / awt / windows / WPrintControl.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  4.8 KB  |  149 lines

  1. package sun.awt.windows;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Dialog;
  5. import java.awt.Frame;
  6. import java.awt.JobAttributes;
  7. import java.awt.PageAttributes;
  8. import java.awt.PrintJob;
  9. import java.awt.PageAttributes.MediaType;
  10. import java.util.HashMap;
  11. import java.util.Iterator;
  12. import java.util.TreeSet;
  13. import sun.awt.print.PrintControl;
  14. import sun.awt.print.PrinterCapabilities;
  15. import sun.awt.print.PrinterListUpdatable;
  16.  
  17. class WPrintControl extends PrintControl {
  18.    private static final PageAttributes.MediaType[] dmPaperToPrintControl;
  19.    private WFramePeer dialogOwnerPeer = null;
  20.    private static final double TENTHS_MM_TO_POINTS = 3.527777778;
  21.    private static final HashMap mediaCache;
  22.    private static final HashMap capabilitiesCache;
  23.  
  24.    public WPrintControl(Frame var1, String var2, JobAttributes var3, PageAttributes var4) {
  25.       super(var1, var2, var3, var4);
  26.       if (var1 != null) {
  27.          this.dialogOwnerPeer = (WFramePeer)((Component)var1).getPeer();
  28.       }
  29.  
  30.    }
  31.  
  32.    private native char _getWin32MediaAttrib(int var1, String var2);
  33.  
  34.    public char getWin32MediaAttrib() {
  35.       return this._getWin32MediaAttrib(((PrintControl)this).getMediaAttrib(), ((PrintControl)this).getPrinterAttrib());
  36.    }
  37.  
  38.    private int findWin32Media(int var1, int var2, int var3, boolean var4) {
  39.       if (var1 >= 1 && var1 <= 41) {
  40.          return !var4 || var1 != 32 && var1 != 39 && var1 != 40 ? dmPaperToPrintControl[var1 - 1].hashCode() : -1;
  41.       } else {
  42.          Integer var5 = (Integer)mediaCache.get(new CacheKey(this, var1, var2, var3));
  43.          if (var5 != null) {
  44.             int var13 = var5;
  45.             if (!var4) {
  46.                return var13;
  47.             } else {
  48.                int var14 = (int)((double)var2 / 3.527777778 + (double)0.5F);
  49.                int var16 = (int)((double)var3 / 3.527777778 + (double)0.5F);
  50.                return (var14 != PrintControl.WIDTHS[var13] || var16 != PrintControl.LENGTHS[var13]) && (var14 != PrintControl.LENGTHS[var13] || var16 != PrintControl.WIDTHS[var13]) ? -1 : var13;
  51.             }
  52.          } else {
  53.             int var6 = (int)((double)var2 / 3.527777778 + (double)0.5F);
  54.             int var7 = (int)((double)var3 / 3.527777778 + (double)0.5F);
  55.             int var10 = Integer.MAX_VALUE;
  56.             int var11 = -1;
  57.  
  58.             for(int var12 = 0; var12 < PrintControl.SIZES.length; ++var12) {
  59.                int var8 = Math.abs(var6 - PrintControl.WIDTHS[var12]) + Math.abs(var7 - PrintControl.LENGTHS[var12]);
  60.                int var9 = Math.abs(var6 - PrintControl.LENGTHS[var12]) + Math.abs(var7 - PrintControl.WIDTHS[var12]);
  61.                var8 = var8 < var9 ? var8 : var9;
  62.                if (var8 < var10) {
  63.                   var10 = var8;
  64.                   var11 = var12;
  65.                   if (var8 == 0) {
  66.                      break;
  67.                   }
  68.                }
  69.             }
  70.  
  71.             mediaCache.put(new CacheKey(this, var1, var2, var3), new Integer(var11));
  72.             return var4 && var10 != 0 ? -1 : var11;
  73.          }
  74.       }
  75.    }
  76.  
  77.    public void setWin32MediaAttrib(int var1, int var2, int var3) {
  78.       ((PrintControl)this).setMediaAttrib(this.findWin32Media(var1, var2, var3, false));
  79.    }
  80.  
  81.    public native String getDefaultPrinterName();
  82.  
  83.    private native boolean _getCapabilities(PrinterCapabilities var1);
  84.  
  85.    public boolean getCapabilities(PrinterCapabilities var1) {
  86.       PrinterCapabilities var2 = (PrinterCapabilities)capabilitiesCache.get(var1.getPrinterName());
  87.       if (var2 != null) {
  88.          var1.set(var2);
  89.          return true;
  90.       } else if (!this._getCapabilities(var1)) {
  91.          return false;
  92.       } else {
  93.          int[] var3 = var1.getSizes();
  94.          if (var3 != null) {
  95.             TreeSet var4 = new TreeSet();
  96.  
  97.             for(int var5 = 0; var5 < var3.length; ++var5) {
  98.                if (var3[var5] != -1) {
  99.                   var4.add(new Integer(var3[var5]));
  100.                }
  101.             }
  102.  
  103.             int[] var6 = new int[var4.size()];
  104.             Iterator var7 = var4.iterator();
  105.  
  106.             for(int var8 = 0; var7.hasNext(); ++var8) {
  107.                var6[var8] = (Integer)var7.next();
  108.             }
  109.  
  110.             var1.setSizes(var6);
  111.          }
  112.  
  113.          capabilitiesCache.put(var1.getPrinterName(), var1);
  114.          return true;
  115.       }
  116.    }
  117.  
  118.    private native String[] _getPrinterList();
  119.  
  120.    public void getPrinterList(PrinterListUpdatable var1) {
  121.       (new Thread(new 1(this, var1))).start();
  122.    }
  123.  
  124.    protected PrintJob initJobWithNativeDialog() {
  125.       WPrintDialog var1 = new WPrintDialog(super.dialogOwner, this);
  126.       PrintJob var2 = var1.initJob();
  127.       ((Dialog)var1).dispose();
  128.       return var2;
  129.    }
  130.  
  131.    protected PrintJob createPrintJob() {
  132.       return WPrintJob.createPrintJob(this);
  133.    }
  134.  
  135.    private static native void initIDs();
  136.  
  137.    // $FF: synthetic method
  138.    static String[] access$000(WPrintControl var0) {
  139.       return var0._getPrinterList();
  140.    }
  141.  
  142.    static {
  143.       initIDs();
  144.       dmPaperToPrintControl = new PageAttributes.MediaType[]{MediaType.NA_LETTER, MediaType.NA_LETTER, MediaType.LEDGER, MediaType.LEDGER, MediaType.NA_LEGAL, MediaType.INVOICE, MediaType.EXECUTIVE, MediaType.ISO_A3, MediaType.ISO_A4, MediaType.ISO_A4, MediaType.ISO_A5, MediaType.ISO_B4, MediaType.JIS_B5, MediaType.FOLIO, MediaType.QUARTO, MediaType.NA_10X14_ENVELOPE, MediaType.B, MediaType.NA_LETTER, MediaType.NA_NUMBER_9_ENVELOPE, MediaType.NA_NUMBER_10_ENVELOPE, MediaType.NA_NUMBER_11_ENVELOPE, MediaType.NA_NUMBER_12_ENVELOPE, MediaType.NA_NUMBER_14_ENVELOPE, MediaType.C, MediaType.D, MediaType.E, MediaType.ISO_DESIGNATED_LONG, MediaType.ISO_C5, MediaType.ISO_C3, MediaType.ISO_C4, MediaType.ISO_C6, MediaType.ITALY_ENVELOPE, MediaType.ISO_B4, MediaType.ISO_B5, MediaType.ISO_B6, MediaType.ITALY_ENVELOPE, MediaType.MONARCH_ENVELOPE, MediaType.PERSONAL_ENVELOPE, MediaType.NA_10X15_ENVELOPE, MediaType.NA_9X12_ENVELOPE, MediaType.FOLIO};
  145.       mediaCache = new HashMap();
  146.       capabilitiesCache = new HashMap();
  147.    }
  148. }
  149.