home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / CHIPHEFT062001.ISO / browser / nc32lyc / comm.z / java40.jar / sun / awt / windows / WComponentPeer.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-08-15  |  6.8 KB  |  300 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.Image;
  13. import java.awt.Point;
  14. import java.awt.Rectangle;
  15. import java.awt.Toolkit;
  16. import java.awt.event.PaintEvent;
  17. import java.awt.image.ColorModel;
  18. import java.awt.image.ImageObserver;
  19. import java.awt.image.ImageProducer;
  20. import java.awt.peer.ComponentPeer;
  21. import java.awt.peer.LightweightPeer;
  22. import sun.awt.ScreenUpdater;
  23. import sun.awt.SunToolkit;
  24. import sun.awt.UpdateClient;
  25.  
  26. abstract class WComponentPeer extends WObjectPeer implements ComponentPeer, UpdateClient {
  27.    private boolean repaintPending;
  28.    private Rectangle repaintRect;
  29.    private int updateX1;
  30.    private int updateY1;
  31.    private int updateX2;
  32.    private int updateY2;
  33.  
  34.    public synchronized native void show();
  35.  
  36.    public synchronized native void hide();
  37.  
  38.    public synchronized native void enable();
  39.  
  40.    public synchronized native void disable();
  41.  
  42.    public native Point getLocationOnScreen();
  43.  
  44.    public void setVisible(boolean var1) {
  45.       if (var1) {
  46.          this.show();
  47.       } else {
  48.          this.hide();
  49.       }
  50.    }
  51.  
  52.    public void setEnabled(boolean var1) {
  53.       if (var1) {
  54.          this.enable();
  55.       } else {
  56.          this.disable();
  57.       }
  58.    }
  59.  
  60.    public void setBounds(int var1, int var2, int var3, int var4) {
  61.       this.reshape(var1, var2, var3, var4);
  62.    }
  63.  
  64.    public void paint(Graphics var1) {
  65.       var1.setColor(((Component)super.target).getForeground());
  66.       var1.setFont(((Component)super.target).getFont());
  67.       ((Component)super.target).paint(var1);
  68.    }
  69.  
  70.    public void repaint(long var1, int var3, int var4, int var5, int var6) {
  71.       this.addRepaintArea(var3, var4, var5, var6);
  72.       ScreenUpdater.updater.notify(this, var1);
  73.    }
  74.  
  75.    public void print(Graphics var1) {
  76.       ((WGraphics)var1).print(this);
  77.    }
  78.  
  79.    public synchronized native void reshape(int var1, int var2, int var3, int var4);
  80.  
  81.    public native void handleEvent(AWTEvent var1);
  82.  
  83.    public Dimension getMinimumSize() {
  84.       return ((Component)super.target).getSize();
  85.    }
  86.  
  87.    public Dimension getPreferredSize() {
  88.       return this.getMinimumSize();
  89.    }
  90.  
  91.    public boolean isFocusTraversable() {
  92.       return false;
  93.    }
  94.  
  95.    public ColorModel getColorModel() {
  96.       return WToolkit.getStaticColorModel();
  97.    }
  98.  
  99.    public Toolkit getToolkit() {
  100.       return Toolkit.getDefaultToolkit();
  101.    }
  102.  
  103.    public Graphics getGraphics() {
  104.       WGraphics var1 = new WGraphics(this);
  105.       ((Graphics)var1).setColor(((Component)super.target).getForeground());
  106.       ((Graphics)var1).setFont(((Component)super.target).getFont());
  107.       return var1;
  108.    }
  109.  
  110.    public FontMetrics getFontMetrics(Font var1) {
  111.       return WFontMetrics.getFontMetrics(var1);
  112.    }
  113.  
  114.    public void dispose() {
  115.       WToolkit.targetDisposedPeer(super.target, this);
  116.       ScreenUpdater.updater.removeClient(this);
  117.       super.beingDisposed = true;
  118.       this._dispose();
  119.    }
  120.  
  121.    native void _dispose();
  122.  
  123.    protected void destroy() {
  124.       WToolkit.targetDisposedPeer(super.target, this);
  125.       ScreenUpdater.updater.removeClient(this);
  126.    }
  127.  
  128.    public synchronized void setForeground(Color var1) {
  129.       this._setForeground(var1.getRGB());
  130.    }
  131.  
  132.    public synchronized void setBackground(Color var1) {
  133.       this._setBackground(var1.getRGB());
  134.    }
  135.  
  136.    public native void _setForeground(int var1);
  137.  
  138.    public native void _setBackground(int var1);
  139.  
  140.    public synchronized native void setFont(Font var1);
  141.  
  142.    public synchronized native void requestFocus();
  143.  
  144.    public synchronized native void setCursor(Cursor var1);
  145.  
  146.    public Image createImage(ImageProducer var1) {
  147.       return new WImage(var1);
  148.    }
  149.  
  150.    public Image createImage(int var1, int var2) {
  151.       return new WOffScreenImage((Component)super.target, var1, var2);
  152.    }
  153.  
  154.    public boolean prepareImage(Image var1, int var2, int var3, ImageObserver var4) {
  155.       return WToolkit.prepareScrImage(var1, var2, var3, var4);
  156.    }
  157.  
  158.    public int checkImage(Image var1, int var2, int var3, ImageObserver var4) {
  159.       return WToolkit.checkScrImage(var1, var2, var3, var4);
  160.    }
  161.  
  162.    public void updateClient(Object var1) {
  163.       Rectangle var2 = null;
  164.       synchronized(this){}
  165.  
  166.       try {
  167.          if (this.repaintPending) {
  168.             var2 = this.repaintRect;
  169.             this.repaintPending = false;
  170.          }
  171.       } catch (Throwable var5) {
  172.          throw var5;
  173.       }
  174.  
  175.       if (var2 != null) {
  176.          this.postEvent(new PaintEvent((Component)super.target, 801, var2));
  177.       }
  178.  
  179.    }
  180.  
  181.    public String toString() {
  182.       return this.getClass().getName() + "[" + super.target + "]";
  183.    }
  184.  
  185.    WComponentPeer(Component var1) {
  186.       super.target = var1;
  187.       this.repaintRect = new Rectangle();
  188.       this.repaintPending = false;
  189.       Container var2 = SunToolkit.getNativeContainer(var1);
  190.       WComponentPeer var3 = (WComponentPeer)WToolkit.targetToPeer(var2);
  191.       this.create(var3);
  192.       this.initialize();
  193.       this.start();
  194.    }
  195.  
  196.    abstract void create(WComponentPeer var1);
  197.  
  198.    synchronized native void start();
  199.  
  200.    void initialize() {
  201.       this.initZOrderPosition();
  202.       if (((Component)super.target).isVisible()) {
  203.          this.show();
  204.       }
  205.  
  206.       Color var1 = ((Component)super.target).getForeground();
  207.       if (var1 != null) {
  208.          this.setForeground(var1);
  209.       }
  210.  
  211.       Font var2 = ((Component)super.target).getFont();
  212.       if (var2 != null) {
  213.          this.setFont(var2);
  214.       }
  215.  
  216.       if (!((Component)super.target).isEnabled()) {
  217.          this.disable();
  218.       }
  219.  
  220.       Rectangle var3 = ((Component)super.target).getBounds();
  221.       this.setBounds(var3.x, var3.y, var3.width, var3.height);
  222.       Cursor var4 = ((Component)super.target).getCursor();
  223.       if (var4 != Cursor.getPredefinedCursor(0)) {
  224.          this.setCursor(var4);
  225.       }
  226.  
  227.    }
  228.  
  229.    private synchronized void addRepaintArea(int var1, int var2, int var3, int var4) {
  230.       if (!this.repaintPending) {
  231.          this.repaintPending = true;
  232.          this.repaintRect = new Rectangle(var1, var2, var3, var4);
  233.       } else {
  234.          this.repaintRect = this.repaintRect.union(new Rectangle(var1, var2, var3, var4));
  235.       }
  236.    }
  237.  
  238.    void handleRepaint(int var1, int var2, int var3, int var4) {
  239.    }
  240.  
  241.    void handleExpose(int var1, int var2, int var3, int var4) {
  242.       Graphics var5 = this.getGraphics();
  243.  
  244.       try {
  245.          var5.clearRect(var1, var2, var3, var4);
  246.       } catch (NullPointerException var6) {
  247.       }
  248.  
  249.       this.postEvent(new PaintEvent((Component)super.target, 800, new Rectangle(var1, var2, var3, var4)));
  250.    }
  251.  
  252.    void handlePaint(int var1, int var2, int var3, int var4) {
  253.       this.postEvent(new PaintEvent((Component)super.target, 800, new Rectangle(var1, var2, var3, var4)));
  254.    }
  255.  
  256.    void postEvent(AWTEvent var1) {
  257.       WToolkit.postEvent(var1);
  258.    }
  259.  
  260.    protected void finalize() throws Throwable {
  261.       this._dispose();
  262.       super.finalize();
  263.    }
  264.  
  265.    public void beginValidate() {
  266.       this._beginValidate();
  267.    }
  268.  
  269.    public native void _beginValidate();
  270.  
  271.    public native void endValidate();
  272.  
  273.    public void initZOrderPosition() {
  274.       Container var1 = ((Component)super.target).getParent();
  275.       WComponentPeer var2 = null;
  276.       if (var1 != null) {
  277.          Component[] var3 = var1.getComponents();
  278.  
  279.          for(int var4 = 0; var4 < var3.length && var3[var4] != super.target; ++var4) {
  280.             Object var5 = WToolkit.targetToPeer(var3[var4]);
  281.             if (var5 != null && !(var5 instanceof LightweightPeer)) {
  282.                var2 = (WComponentPeer)var5;
  283.             }
  284.          }
  285.       }
  286.  
  287.       this.setZOrderPosition(var2);
  288.    }
  289.  
  290.    native void setZOrderPosition(WComponentPeer var1);
  291.  
  292.    public Dimension minimumSize() {
  293.       return this.getMinimumSize();
  294.    }
  295.  
  296.    public Dimension preferredSize() {
  297.       return this.getPreferredSize();
  298.    }
  299. }
  300.