home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / CHIPHEFT062001.ISO / browser / nc32lyc / comm.z / java40.jar / sun / awt / motif / MComponentPeer.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-08-15  |  9.1 KB  |  464 lines

  1. package sun.awt.motif;
  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.ScrollPane;
  16. import java.awt.Toolkit;
  17. import java.awt.event.PaintEvent;
  18. import java.awt.image.ColorModel;
  19. import java.awt.image.ImageObserver;
  20. import java.awt.image.ImageProducer;
  21. import java.awt.peer.ComponentPeer;
  22. import java.awt.peer.LightweightPeer;
  23. import sun.awt.ObjectPeer;
  24. import sun.awt.ScreenUpdater;
  25. import sun.awt.UpdateClient;
  26.  
  27. public abstract class MComponentPeer extends ObjectPeer implements ComponentPeer, UpdateClient {
  28.    Component target;
  29.    int pData;
  30.    int cursorSet;
  31.  
  32.    abstract void create(MComponentPeer var1);
  33.  
  34.    void create(MComponentPeer var1, Object var2) {
  35.       this.create(var1);
  36.    }
  37.  
  38.    native void pInitialize();
  39.  
  40.    native void pShow();
  41.  
  42.    native void pHide();
  43.  
  44.    native void pEnable();
  45.  
  46.    native void pDisable();
  47.  
  48.    native void pReshape(int var1, int var2, int var3, int var4);
  49.  
  50.    native void pAddRepaint(int var1, int var2, int var3, int var4);
  51.  
  52.    native void pTriggerRepaint();
  53.  
  54.    native void pDispose();
  55.  
  56.    native void pMakeCursorVisible();
  57.  
  58.    native Point pGetLocationOnScreen();
  59.  
  60.    void initialize() {
  61.       if (!this.target.isVisible()) {
  62.          this.hide();
  63.       }
  64.  
  65.       this.pInitialize();
  66.       Color var1;
  67.       if ((var1 = this.target.getForeground()) != null) {
  68.          this.setForeground(var1);
  69.       }
  70.  
  71.       if ((var1 = this.target.getBackground()) != null) {
  72.          this.setBackground(var1);
  73.       }
  74.  
  75.       Font var2;
  76.       if ((var2 = this.target.getFont()) != null) {
  77.          this.setFont(var2);
  78.       }
  79.  
  80.       Cursor var3;
  81.       if ((var3 = this.target.getCursor()) == null) {
  82.          var3 = Cursor.getPredefinedCursor(0);
  83.       }
  84.  
  85.       this.setCursor(var3);
  86.       if (var3.getType() == 0) {
  87.          this.cursorSet = 1;
  88.       }
  89.  
  90.       if (!this.target.isEnabled()) {
  91.          this.disable();
  92.       }
  93.  
  94.       Rectangle var4 = this.target.getBounds();
  95.       this.reshape(var4.x, var4.y, var4.width, var4.height);
  96.       if (this.target.isVisible()) {
  97.          this.show();
  98.       }
  99.  
  100.    }
  101.  
  102.    MComponentPeer(Component var1, Object var2) {
  103.       this.target = var1;
  104.       Container var3 = MToolkit.getNativeContainer(var1);
  105.       MComponentPeer var4 = (MComponentPeer)MToolkit.targetToPeer(var3);
  106.       this.create(var4, var2);
  107.       this.initialize();
  108.    }
  109.  
  110.    MComponentPeer(Component var1) {
  111.       this.target = var1;
  112.       Container var2 = MToolkit.getNativeContainer(var1);
  113.       MComponentPeer var3 = (MComponentPeer)MToolkit.targetToPeer(var2);
  114.       this.create(var3);
  115.       if (var2 != null && var2 instanceof ScrollPane) {
  116.          MScrollPanePeer var4 = (MScrollPanePeer)var3;
  117.          var4.setScrollChild(this);
  118.       }
  119.  
  120.       this.initialize();
  121.    }
  122.  
  123.    public native void setForeground(Color var1);
  124.  
  125.    public native void setBackground(Color var1);
  126.  
  127.    public native void setFont(Font var1);
  128.  
  129.    public native void setCursor(Cursor var1);
  130.  
  131.    public boolean isFocusTraversable() {
  132.       return false;
  133.    }
  134.  
  135.    public ColorModel getColorModel() {
  136.       return MToolkit.getStaticColorModel();
  137.    }
  138.  
  139.    public int updatePriority() {
  140.       return 5;
  141.    }
  142.  
  143.    public void updateClient(Object var1) {
  144.       this.pTriggerRepaint();
  145.    }
  146.  
  147.    public void repaint(long var1, int var3, int var4, int var5, int var6) {
  148.       this.pAddRepaint(var3, var4, var5, var6);
  149.       ScreenUpdater.updater.notify(this, var1);
  150.    }
  151.  
  152.    public void paint(Graphics var1) {
  153.       var1.setColor(this.target.getForeground());
  154.       var1.setFont(this.target.getFont());
  155.       this.target.paint(var1);
  156.    }
  157.  
  158.    public void update(Graphics var1) {
  159.       var1.setColor(this.target.getForeground());
  160.       var1.setFont(this.target.getFont());
  161.       this.target.update(var1);
  162.    }
  163.  
  164.    public void print(Graphics var1) {
  165.       Dimension var2 = this.target.getSize();
  166.       Color var3 = this.target.getBackground();
  167.       Color var4 = this.target.getForeground();
  168.       var1.setColor(var3);
  169.       var1.fillRect(0, 0, var2.width, var2.height);
  170.       var1.setColor(var4);
  171.       var1.setFont(this.target.getFont());
  172.       this.target.print(var1);
  173.    }
  174.  
  175.    public native void handleEvent(AWTEvent var1);
  176.  
  177.    public Dimension getMinimumSize() {
  178.       return this.target.getSize();
  179.    }
  180.  
  181.    public Dimension getPreferredSize() {
  182.       return this.getMinimumSize();
  183.    }
  184.  
  185.    public Toolkit getToolkit() {
  186.       return Toolkit.getDefaultToolkit();
  187.    }
  188.  
  189.    public Graphics getGraphics() {
  190.       X11Graphics var1 = new X11Graphics(this);
  191.       ((Graphics)var1).setColor(this.target.getForeground());
  192.       ((Graphics)var1).setFont(this.target.getFont());
  193.       return var1;
  194.    }
  195.  
  196.    public Image createImage(ImageProducer var1) {
  197.       return new X11Image(var1);
  198.    }
  199.  
  200.    public Image createImage(int var1, int var2) {
  201.       return new X11OffScreenImage(this.target, var1, var2);
  202.    }
  203.  
  204.    public boolean prepareImage(Image var1, int var2, int var3, ImageObserver var4) {
  205.       return MToolkit.prepareScrImage(var1, var2, var3, var4);
  206.    }
  207.  
  208.    public int checkImage(Image var1, int var2, int var3, ImageObserver var4) {
  209.       return MToolkit.checkScrImage(var1, var2, var3, var4);
  210.    }
  211.  
  212.    public FontMetrics getFontMetrics(Font var1) {
  213.       return X11FontMetrics.getFontMetrics(var1);
  214.    }
  215.  
  216.    public void dispose() {
  217.       ScreenUpdater.updater.removeClient(this);
  218.       MToolkit.targetDisposedPeer(this.target, this);
  219.       this.pDispose();
  220.    }
  221.  
  222.    public native void requestFocus();
  223.  
  224.    void postEvent(AWTEvent var1) {
  225.       MToolkit.postEvent(var1);
  226.    }
  227.  
  228.    void handleExpose(int var1, int var2, int var3, int var4) {
  229.       this.postEvent(new PaintEvent(this.target, 800, new Rectangle(var1, var2, var3, var4)));
  230.    }
  231.  
  232.    void handleRepaint(int var1, int var2, int var3, int var4) {
  233.       this.postEvent(new PaintEvent(this.target, 801, new Rectangle(var1, var2, var3, var4)));
  234.    }
  235.  
  236.    public int getZOrderPosition() {
  237.       Container var1 = this.target.getParent();
  238.       if (var1 != null) {
  239.          Component[] var2 = var1.getComponents();
  240.          int var4 = 0;
  241.  
  242.          for(int var3 = 0; var3 < var2.length; ++var3) {
  243.             if (var2[var3] == this.target) {
  244.                return var4;
  245.             }
  246.  
  247.             Object var5 = MToolkit.targetToPeer(var2[var3]);
  248.             if (var5 != null && !(var5 instanceof LightweightPeer)) {
  249.                ++var4;
  250.             }
  251.          }
  252.       }
  253.  
  254.       return -1;
  255.    }
  256.  
  257.    void draw3DOval(Graphics var1, Color var2, int var3, int var4, int var5, int var6, boolean var7) {
  258.       Color var8 = var1.getColor();
  259.       Color var9 = var2.darker();
  260.       Color var10 = var2.brighter();
  261.       var1.setColor(var7 ? var10 : var9);
  262.       var1.drawArc(var3, var4, var5, var6, 45, 180);
  263.       var1.setColor(var7 ? var9 : var10);
  264.       var1.drawArc(var3, var4, var5, var6, 225, 180);
  265.       var1.setColor(var8);
  266.    }
  267.  
  268.    void draw3DRect(Graphics var1, Color var2, int var3, int var4, int var5, int var6, boolean var7) {
  269.       Color var8 = var1.getColor();
  270.       Color var9 = var2.darker();
  271.       Color var10 = var2.brighter();
  272.       var1.setColor(var7 ? var10 : var9);
  273.       var1.drawLine(var3, var4, var3, var4 + var6);
  274.       var1.drawLine(var3 + 1, var4, var3 + var5 - 1, var4);
  275.       var1.setColor(var7 ? var9 : var10);
  276.       var1.drawLine(var3 + 1, var4 + var6, var3 + var5, var4 + var6);
  277.       var1.drawLine(var3 + var5, var4, var3 + var5, var4 + var6 - 1);
  278.       var1.setColor(var8);
  279.    }
  280.  
  281.    void drawScrollbar(Graphics var1, Color var2, int var3, int var4, int var5, int var6, int var7, int var8, boolean var9) {
  282.       Color var10 = var1.getColor();
  283.       double var11 = (double)(var4 - 2 * (var3 - 1)) / (double)Math.max(1, var6 - var5 + var8);
  284.       int var13 = var3 + (int)(var11 * (double)(var7 - var5));
  285.       int var14 = (int)(var11 * (double)var8);
  286.       int var15 = var3 - 4;
  287.       int[] var16 = new int[3];
  288.       int[] var17 = new int[3];
  289.       if (var4 < 3 * var15) {
  290.          var14 = 0;
  291.          var13 = 0;
  292.          if (var4 < 2 * var15 + 2) {
  293.             var15 = (var4 - 2) / 2;
  294.          }
  295.       } else if (var14 < 7) {
  296.          var13 = Math.max(0, var13 - (7 - var14 >> 1));
  297.          var14 = 7;
  298.       }
  299.  
  300.       int var18 = var3 / 2;
  301.       int var19 = var18 - var15 / 2;
  302.       int var20 = var18 + var15 / 2;
  303.       Color var21 = new Color((int)((double)var2.getRed() * 0.85), (int)((double)var2.getGreen() * 0.85), (int)((double)var2.getBlue() * 0.85));
  304.       var1.setColor(var21);
  305.       if (var9) {
  306.          var1.fillRect(0, 0, var4, var3);
  307.       } else {
  308.          var1.fillRect(0, 0, var3, var4);
  309.       }
  310.  
  311.       var1.setColor(var2);
  312.       if (var13 > 0) {
  313.          if (var9) {
  314.             var1.fillRect(var13, 3, var14, var3 - 3);
  315.          } else {
  316.             var1.fillRect(3, var13, var3 - 3, var14);
  317.          }
  318.       }
  319.  
  320.       var16[0] = var18;
  321.       var17[0] = 2;
  322.       var16[1] = var19;
  323.       var17[1] = var15;
  324.       var16[2] = var20;
  325.       var17[2] = var15;
  326.       if (var9) {
  327.          var1.fillPolygon(var17, var16, 3);
  328.       } else {
  329.          var1.fillPolygon(var16, var17, 3);
  330.       }
  331.  
  332.       var17[0] = var4 - 2;
  333.       var17[1] = var4 - var15;
  334.       var17[2] = var4 - var15;
  335.       if (var9) {
  336.          var1.fillPolygon(var17, var16, 3);
  337.       } else {
  338.          var1.fillPolygon(var16, var17, 3);
  339.       }
  340.  
  341.       Color var22 = var2.brighter();
  342.       var1.setColor(var22);
  343.       if (var9) {
  344.          var1.drawLine(1, var3, var4 - 1, var3);
  345.          var1.drawLine(var4 - 1, 1, var4 - 1, var3);
  346.          var1.drawLine(1, var18, var15, var19);
  347.          var1.drawLine(var4 - var15, var19, var4 - var15, var20);
  348.          var1.drawLine(var4 - var15, var19, var4 - 2, var18);
  349.       } else {
  350.          var1.drawLine(var3, 1, var3, var4 - 1);
  351.          var1.drawLine(1, var4 - 1, var3, var4 - 1);
  352.          var1.drawLine(var18, 1, var19, var15);
  353.          var1.drawLine(var19, var4 - var15, var20, var4 - var15);
  354.          var1.drawLine(var19, var4 - var15, var18, var4 - 2);
  355.       }
  356.  
  357.       if (var13 > 0) {
  358.          if (var9) {
  359.             var1.drawLine(var13, 2, var13 + var14, 2);
  360.             var1.drawLine(var13, 2, var13, var3 - 3);
  361.          } else {
  362.             var1.drawLine(2, var13, 2, var13 + var14);
  363.             var1.drawLine(2, var13, var3 - 3, var13);
  364.          }
  365.       }
  366.  
  367.       Color var23 = var2.darker();
  368.       var1.setColor(var23);
  369.       if (var9) {
  370.          var1.drawLine(0, 0, 0, var3);
  371.          var1.drawLine(0, 0, var4 - 1, 0);
  372.          var1.drawLine(var15, var19, var15, var20);
  373.          var1.drawLine(var15, var20, 1, var18);
  374.          var1.drawLine(var4 - 2, var18, var4 - var15, var20);
  375.       } else {
  376.          var1.drawLine(0, 0, var3, 0);
  377.          var1.drawLine(0, 0, 0, var4 - 1);
  378.          var1.drawLine(var19, var15, var20, var15);
  379.          var1.drawLine(var20, var15, var18, 1);
  380.          var1.drawLine(var18, var4 - 2, var20, var4 - var15);
  381.       }
  382.  
  383.       if (var13 > 0) {
  384.          if (var9) {
  385.             var1.drawLine(var13 + var14, 2, var13 + var14, var3 - 2);
  386.             var1.drawLine(var13, var3 - 2, var13 + var14, var3 - 2);
  387.          } else {
  388.             var1.drawLine(2, var13 + var14, var3 - 2, var13 + var14);
  389.             var1.drawLine(var3 - 2, var13, var3 - 2, var13 + var14);
  390.          }
  391.       }
  392.  
  393.       var1.setColor(var10);
  394.    }
  395.  
  396.    public String toString() {
  397.       return this.getClass().getName() + "[" + this.target + "]";
  398.    }
  399.  
  400.    public void setVisible(boolean var1) {
  401.       if (var1) {
  402.          this.pShow();
  403.       } else {
  404.          this.pHide();
  405.       }
  406.    }
  407.  
  408.    public void setEnabled(boolean var1) {
  409.       if (var1) {
  410.          this.pEnable();
  411.       } else {
  412.          this.pDisable();
  413.       }
  414.    }
  415.  
  416.    public Point getLocationOnScreen() {
  417.       return this.pGetLocationOnScreen();
  418.    }
  419.  
  420.    public void setBounds(int var1, int var2, int var3, int var4) {
  421.       Container var5 = this.target.getParent();
  422.       this.pReshape(var1, var2, var3, var4);
  423.       if (var5 != null && var5 instanceof ScrollPane) {
  424.          MScrollPanePeer var6 = (MScrollPanePeer)((Component)var5).getPeer();
  425.          var6.childResized(var3, var4);
  426.       }
  427.  
  428.    }
  429.  
  430.    public void beginValidate() {
  431.    }
  432.  
  433.    public void endValidate() {
  434.    }
  435.  
  436.    public void show() {
  437.       this.setVisible(true);
  438.    }
  439.  
  440.    public void hide() {
  441.       this.setVisible(false);
  442.    }
  443.  
  444.    public void enable() {
  445.       this.setEnabled(true);
  446.    }
  447.  
  448.    public void disable() {
  449.       this.setEnabled(false);
  450.    }
  451.  
  452.    public void reshape(int var1, int var2, int var3, int var4) {
  453.       this.setBounds(var1, var2, var3, var4);
  454.    }
  455.  
  456.    public Dimension minimumSize() {
  457.       return this.getMinimumSize();
  458.    }
  459.  
  460.    public Dimension preferredSize() {
  461.       return this.getPreferredSize();
  462.    }
  463. }
  464.