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 / WComponentPeer.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  9.2 KB  |  445 lines

  1. package sun.awt.windows;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.Color;
  5. import java.awt.Component;
  6. import java.awt.Container;
  7. import java.awt.Cursor;
  8. import java.awt.Dimension;
  9. import java.awt.Font;
  10. import java.awt.FontMetrics;
  11. import java.awt.Graphics;
  12. import java.awt.GraphicsConfiguration;
  13. import java.awt.Image;
  14. import java.awt.Point;
  15. import java.awt.Rectangle;
  16. import java.awt.Toolkit;
  17. import java.awt.dnd.DropTarget;
  18. import java.awt.dnd.peer.DropTargetPeer;
  19. import java.awt.event.PaintEvent;
  20. import java.awt.image.BufferedImage;
  21. import java.awt.image.ColorModel;
  22. import java.awt.image.ImageObserver;
  23. import java.awt.image.ImageProducer;
  24. import java.awt.peer.ComponentPeer;
  25. import java.awt.peer.LightweightPeer;
  26. import java.security.AccessController;
  27. import sun.awt.DebugHelper;
  28. import sun.awt.RepaintArea;
  29. import sun.awt.ScreenUpdater;
  30. import sun.awt.SunToolkit;
  31. import sun.awt.UpdateClient;
  32. import sun.awt.Win32GraphicsConfig;
  33. import sun.awt.image.OffScreenImage;
  34. import sun.security.action.GetPropertyAction;
  35.  
  36. abstract class WComponentPeer extends WObjectPeer implements ComponentPeer, UpdateClient, DropTargetPeer {
  37.    private static final DebugHelper dbg;
  38.    private boolean repaintPending;
  39.    private Rectangle repaintRect;
  40.    private RepaintArea paintArea;
  41.    private RepaintArea updateArea;
  42.    protected Win32GraphicsConfig winGraphicsConfig;
  43.    int nDropTargets;
  44.    int nativeDropTargetContext;
  45.    public int serialNum = 0;
  46.    private static final double BANDING_DIVISOR = (double)4.0F;
  47.    private int updateX1;
  48.    private int updateY1;
  49.    private int updateX2;
  50.    private int updateY2;
  51.    private static final boolean isFocusFixEnabled;
  52.    // $FF: synthetic field
  53.    static Class class$sun$awt$windows$WComponentPeer;
  54.  
  55.    native GraphicsConfiguration getTargetGC();
  56.  
  57.    public synchronized native void show();
  58.  
  59.    public synchronized native void hide();
  60.  
  61.    public synchronized native void enable();
  62.  
  63.    public synchronized native void disable();
  64.  
  65.    public native Point getLocationOnScreen();
  66.  
  67.    public void setVisible(boolean var1) {
  68.       if (var1) {
  69.          this.show();
  70.       } else {
  71.          this.hide();
  72.       }
  73.  
  74.    }
  75.  
  76.    public void setEnabled(boolean var1) {
  77.       if (var1) {
  78.          this.enable();
  79.       } else {
  80.          this.disable();
  81.       }
  82.  
  83.    }
  84.  
  85.    public void setBounds(int var1, int var2, int var3, int var4) {
  86.       this.reshape(var1, var2, var3, var4);
  87.       ++this.serialNum;
  88.    }
  89.  
  90.    void paintDamagedAreaImmediately() {
  91.       this.updateWindow();
  92.       WToolkit.getWToolkit().flushPendingEvents();
  93.       this.paintArea.paint(super.target, this.shouldClearRectBeforePaint());
  94.    }
  95.  
  96.    synchronized native void updateWindow();
  97.  
  98.    public void paint(Graphics var1) {
  99.       ((Component)super.target).paint(var1);
  100.    }
  101.  
  102.    public void repaint(long var1, int var3, int var4, int var5, int var6) {
  103.       this.addRepaintArea(var3, var4, var5, var6);
  104.       ScreenUpdater.updater.notify(this, var1);
  105.    }
  106.  
  107.    private native int[] createPrintedPixels(int var1, int var2, int var3, int var4);
  108.  
  109.    public void print(Graphics var1) {
  110.       Component var2 = (Component)super.target;
  111.       if (var1 instanceof WGraphics) {
  112.          ((WGraphics)var1).print(this);
  113.       } else if (var1 instanceof WPrintGraphicsWrapper) {
  114.          ((WGraphics)((WPrintGraphicsWrapper)var1).getTarget()).print(this);
  115.       } else {
  116.          int var3 = var2.getWidth();
  117.          int var4 = var2.getHeight();
  118.          int var5 = (int)((double)var4 / (double)4.0F);
  119.  
  120.          for(int var6 = 0; var6 < var4; var6 += var5) {
  121.             int var7 = var6 + var5 - 1;
  122.             if (var7 >= var4) {
  123.                var7 = var4 - 1;
  124.             }
  125.  
  126.             int var8 = var7 - var6 + 1;
  127.             int[] var9 = this.createPrintedPixels(0, var6, var3, var8);
  128.             if (var9 != null) {
  129.                BufferedImage var10 = new BufferedImage(var3, var8, 1);
  130.                var10.setRGB(0, 0, var3, var8, var9, 0, var3);
  131.                var1.drawImage(var10, 0, var6, (ImageObserver)null);
  132.                var10.flush();
  133.             }
  134.          }
  135.       }
  136.  
  137.       var2.print(var1);
  138.    }
  139.  
  140.    public void coalescePaintEvent(PaintEvent var1) {
  141.       Rectangle var2 = var1.getUpdateRect();
  142.       int var3 = ((AWTEvent)var1).getID();
  143.       switch (var3) {
  144.          case 800:
  145.             this.paintArea.add(var2);
  146.             return;
  147.          case 801:
  148.             this.updateArea.add(var2);
  149.             return;
  150.          default:
  151.       }
  152.    }
  153.  
  154.    public synchronized native void reshape(int var1, int var2, int var3, int var4);
  155.  
  156.    native void nativeHandleEvent(AWTEvent var1);
  157.  
  158.    public void handleEvent(AWTEvent var1) {
  159.       int var2 = var1.getID();
  160.       switch (var2) {
  161.          case 800:
  162.             this.paintArea.paint(super.target, this.shouldClearRectBeforePaint());
  163.             return;
  164.          case 801:
  165.             this.updateArea.update(super.target);
  166.             return;
  167.          default:
  168.             this.nativeHandleEvent(var1);
  169.       }
  170.    }
  171.  
  172.    public boolean shouldClearRectBeforePaint() {
  173.       return true;
  174.    }
  175.  
  176.    public Dimension getMinimumSize() {
  177.       return ((Component)super.target).getSize();
  178.    }
  179.  
  180.    public Dimension getPreferredSize() {
  181.       return this.getMinimumSize();
  182.    }
  183.  
  184.    public boolean isFocusTraversable() {
  185.       return false;
  186.    }
  187.  
  188.    public GraphicsConfiguration getGraphicsConfiguration() {
  189.       Object var1 = ((Component)super.target).getTreeLock();
  190.       synchronized(var1) {
  191.          if (this.winGraphicsConfig != null) {
  192.             Win32GraphicsConfig var5 = this.winGraphicsConfig;
  193.             return var5;
  194.          } else {
  195.             GraphicsConfiguration var2 = ((Component)super.target).getGraphicsConfiguration();
  196.             return var2;
  197.          }
  198.       }
  199.    }
  200.  
  201.    protected void initNonDefaultGC() {
  202.    }
  203.  
  204.    void resetLocalGC() {
  205.       Object var1 = ((Component)super.target).getTreeLock();
  206.       synchronized(var1) {
  207.          this.winGraphicsConfig = null;
  208.       }
  209.    }
  210.  
  211.    public ColorModel getColorModel() {
  212.       GraphicsConfiguration var1 = this.getGraphicsConfiguration();
  213.       return var1 != null ? var1.getColorModel() : null;
  214.    }
  215.  
  216.    public ColorModel getColorModel(int var1) {
  217.       GraphicsConfiguration var2 = this.getGraphicsConfiguration();
  218.       return var2 != null ? var2.getColorModel(var1) : null;
  219.    }
  220.  
  221.    public Toolkit getToolkit() {
  222.       return Toolkit.getDefaultToolkit();
  223.    }
  224.  
  225.    public synchronized Graphics getGraphics() {
  226.       if (!((WObjectPeer)this).isDisposed()) {
  227.          WGraphics var1 = new WGraphics(this);
  228.          ((Graphics)var1).setColor(((Component)super.target).getForeground());
  229.          ((Graphics)var1).setFont(((Component)super.target).getFont());
  230.          return var1;
  231.       } else {
  232.          return null;
  233.       }
  234.    }
  235.  
  236.    public FontMetrics getFontMetrics(Font var1) {
  237.       return WFontMetrics.getFontMetrics(var1);
  238.    }
  239.  
  240.    private synchronized native void _dispose();
  241.  
  242.    protected void disposeImpl() {
  243.       ScreenUpdater.updater.removeClient(this);
  244.       WToolkit.targetDisposedPeer(super.target, this);
  245.       this._dispose();
  246.    }
  247.  
  248.    public synchronized void setForeground(Color var1) {
  249.       this._setForeground(var1.getRGB());
  250.    }
  251.  
  252.    public synchronized void setBackground(Color var1) {
  253.       this._setBackground(var1.getRGB());
  254.    }
  255.  
  256.    public native void _setForeground(int var1);
  257.  
  258.    public native void _setBackground(int var1);
  259.  
  260.    public synchronized native void setFont(Font var1);
  261.  
  262.    public synchronized native void pRequestFocus();
  263.  
  264.    public synchronized void requestFocus() {
  265.       WWindowPeer.cancelFocusOnActivate((Component)super.target);
  266.       this.pRequestFocus();
  267.    }
  268.  
  269.    public final void setCursor(Cursor var1) {
  270.    }
  271.  
  272.    public Image createImage(ImageProducer var1) {
  273.       return new WImage(var1);
  274.    }
  275.  
  276.    public Image createImage(int var1, int var2) {
  277.       ColorModel var3 = this.getColorModel(1);
  278.       return new OffScreenImage((Component)super.target, var3, var3.createCompatibleWritableRaster(var1, var2), var3.isAlphaPremultiplied());
  279.    }
  280.  
  281.    public boolean prepareImage(Image var1, int var2, int var3, ImageObserver var4) {
  282.       return WToolkit.prepareScrImage(var1, var2, var3, var4);
  283.    }
  284.  
  285.    public int checkImage(Image var1, int var2, int var3, ImageObserver var4) {
  286.       return WToolkit.checkScrImage(var1, var2, var3, var4);
  287.    }
  288.  
  289.    public void updateClient(Object var1) {
  290.       Rectangle var2 = null;
  291.       synchronized(this) {
  292.          if (this.repaintPending) {
  293.             var2 = this.repaintRect;
  294.             this.repaintPending = false;
  295.          }
  296.       }
  297.  
  298.       if (var2 != null) {
  299.          this.postEvent(new PaintEvent((Component)super.target, 801, var2));
  300.       }
  301.  
  302.    }
  303.  
  304.    public String toString() {
  305.       return this.getClass().getName() + "[" + super.target + "]";
  306.    }
  307.  
  308.    WComponentPeer(Component var1) {
  309.       super.target = var1;
  310.       this.repaintRect = new Rectangle();
  311.       this.repaintPending = false;
  312.       this.paintArea = new RepaintArea();
  313.       this.updateArea = new RepaintArea();
  314.       Container var2 = SunToolkit.getNativeContainer(var1);
  315.       WComponentPeer var3 = (WComponentPeer)WToolkit.targetToPeer(var2);
  316.       this.create(var3);
  317.       this.initialize();
  318.       this.start();
  319.       this.initNonDefaultGC();
  320.    }
  321.  
  322.    abstract void create(WComponentPeer var1);
  323.  
  324.    synchronized native void start();
  325.  
  326.    void initialize() {
  327.       this.initZOrderPosition();
  328.       if (((Component)super.target).isVisible()) {
  329.          this.show();
  330.       }
  331.  
  332.       Color var1 = ((Component)super.target).getForeground();
  333.       if (var1 != null) {
  334.          this.setForeground(var1);
  335.       }
  336.  
  337.       Font var2 = ((Component)super.target).getFont();
  338.       if (var2 != null) {
  339.          this.setFont(var2);
  340.       }
  341.  
  342.       if (!((Component)super.target).isEnabled()) {
  343.          this.disable();
  344.       }
  345.  
  346.       Rectangle var3 = ((Component)super.target).getBounds();
  347.       this.setBounds(var3.x, var3.y, var3.width, var3.height);
  348.    }
  349.  
  350.    private synchronized void addRepaintArea(int var1, int var2, int var3, int var4) {
  351.       if (!this.repaintPending) {
  352.          this.repaintPending = true;
  353.          this.repaintRect = new Rectangle(var1, var2, var3, var4);
  354.       } else {
  355.          this.repaintRect = this.repaintRect.union(new Rectangle(var1, var2, var3, var4));
  356.       }
  357.  
  358.    }
  359.  
  360.    void handleRepaint(int var1, int var2, int var3, int var4) {
  361.    }
  362.  
  363.    void handleExpose(int var1, int var2, int var3, int var4) {
  364.       this.postEvent(new PaintEvent((Component)super.target, 800, new Rectangle(var1, var2, var3, var4)));
  365.    }
  366.  
  367.    void handlePaint(int var1, int var2, int var3, int var4) {
  368.       this.postEvent(new PaintEvent((Component)super.target, 800, new Rectangle(var1, var2, var3, var4)));
  369.    }
  370.  
  371.    void postEvent(AWTEvent var1) {
  372.       SunToolkit.postEvent(SunToolkit.targetToAppContext(super.target), var1);
  373.    }
  374.  
  375.    public void beginValidate() {
  376.       this._beginValidate();
  377.    }
  378.  
  379.    public native void _beginValidate();
  380.  
  381.    public native void endValidate();
  382.  
  383.    public void initZOrderPosition() {
  384.       Container var1 = ((Component)super.target).getParent();
  385.       WComponentPeer var2 = null;
  386.       if (var1 != null) {
  387.          Component[] var3 = var1.getComponents();
  388.  
  389.          for(int var4 = 0; var4 < var3.length && var3[var4] != super.target; ++var4) {
  390.             Object var5 = WToolkit.targetToPeer(var3[var4]);
  391.             if (var5 != null && !(var5 instanceof LightweightPeer)) {
  392.                var2 = (WComponentPeer)var5;
  393.             }
  394.          }
  395.       }
  396.  
  397.       this.setZOrderPosition(var2);
  398.    }
  399.  
  400.    native void setZOrderPosition(WComponentPeer var1);
  401.  
  402.    public Dimension minimumSize() {
  403.       return this.getMinimumSize();
  404.    }
  405.  
  406.    public Dimension preferredSize() {
  407.       return this.getPreferredSize();
  408.    }
  409.  
  410.    public synchronized void addDropTarget(DropTarget var1) {
  411.       if (this.nDropTargets == 0) {
  412.          this.nativeDropTargetContext = this.addNativeDropTarget();
  413.       }
  414.  
  415.       ++this.nDropTargets;
  416.    }
  417.  
  418.    public synchronized void removeDropTarget(DropTarget var1) {
  419.       --this.nDropTargets;
  420.       if (this.nDropTargets == 0) {
  421.          this.removeNativeDropTarget();
  422.          this.nativeDropTargetContext = 0;
  423.       }
  424.  
  425.    }
  426.  
  427.    native int addNativeDropTarget();
  428.  
  429.    native void removeNativeDropTarget();
  430.  
  431.    // $FF: synthetic method
  432.    static Class class$(String var0) {
  433.       try {
  434.          return Class.forName(var0);
  435.       } catch (ClassNotFoundException var2) {
  436.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  437.       }
  438.    }
  439.  
  440.    static {
  441.       dbg = DebugHelper.create(class$sun$awt$windows$WComponentPeer == null ? (class$sun$awt$windows$WComponentPeer = class$("sun.awt.windows.WComponentPeer")) : class$sun$awt$windows$WComponentPeer);
  442.       isFocusFixEnabled = AccessController.doPrivileged(new GetPropertyAction("sun.awt.activationFocusFix", "")).equals("true");
  443.    }
  444. }
  445.