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

  1. package sun.awt.motif;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Dialog;
  7. import java.awt.Dimension;
  8. import java.awt.Font;
  9. import java.awt.FontMetrics;
  10. import java.awt.Frame;
  11. import java.awt.Graphics;
  12. import java.awt.TextComponent;
  13. import java.awt.TextField;
  14. import java.awt.datatransfer.Clipboard;
  15. import java.awt.datatransfer.DataFlavor;
  16. import java.awt.datatransfer.Transferable;
  17. import java.awt.event.ActionEvent;
  18. import java.awt.event.TextEvent;
  19. import java.awt.peer.TextFieldPeer;
  20.  
  21. public class MTextFieldPeer extends MComponentPeer implements TextFieldPeer {
  22.    public static final int BORDER = 2;
  23.    public static final int MARGIN = 4;
  24.  
  25.    native void create(MComponentPeer var1);
  26.  
  27.    void initialize() {
  28.       TextField var1 = (TextField)super.target;
  29.       this.setText(((TextComponent)var1).getText());
  30.       if (var1.echoCharIsSet()) {
  31.          this.setEchoChar(var1.getEchoChar());
  32.       }
  33.  
  34.       this.select(((TextComponent)var1).getSelectionStart(), ((TextComponent)var1).getSelectionEnd());
  35.       this.setEditable(((TextComponent)var1).isEditable());
  36.  
  37.       Container var2;
  38.       for(var2 = super.target.getParent(); var2 != null && !(var2 instanceof Frame) && !(var2 instanceof Dialog); var2 = ((Component)var2).getParent()) {
  39.       }
  40.  
  41.       if (var2 instanceof Frame) {
  42.          ((MFramePeer)((Frame)var2).getPeer()).addTextComponent();
  43.       } else if (var2 instanceof Dialog) {
  44.          ((MDialogPeer)((Dialog)var2).getPeer()).addTextComponent();
  45.       }
  46.  
  47.       super.initialize();
  48.    }
  49.  
  50.    public MTextFieldPeer(TextField var1) {
  51.       super(var1);
  52.    }
  53.  
  54.    public void setEditable(boolean var1) {
  55.       this.pSetEditable(var1);
  56.       this.setBackground(super.target.getBackground());
  57.    }
  58.  
  59.    public void setBackground(Color var1) {
  60.       TextField var2 = (TextField)super.target;
  61.       if (((TextComponent)var2).isEditable()) {
  62.          var1 = var1.brighter();
  63.       }
  64.  
  65.       super.setBackground(var1);
  66.    }
  67.  
  68.    public native void pSetEditable(boolean var1);
  69.  
  70.    public native void select(int var1, int var2);
  71.  
  72.    public native int getSelectionStart();
  73.  
  74.    public native int getSelectionEnd();
  75.  
  76.    public native void setText(String var1);
  77.  
  78.    public native void insertReplaceText(String var1);
  79.  
  80.    public native void preDispose();
  81.  
  82.    public native String getText();
  83.  
  84.    public native void setEchoChar(char var1);
  85.  
  86.    public native void setFont(Font var1);
  87.  
  88.    public native void setCaretPosition(int var1);
  89.  
  90.    public native int getCaretPosition();
  91.  
  92.    public Dimension getMinimumSize() {
  93.       FontMetrics var1 = ((MComponentPeer)this).getFontMetrics(super.target.getFont());
  94.       return new Dimension(var1.stringWidth(((TextField)super.target).getText()) + 20, var1.getHeight() + 15);
  95.    }
  96.  
  97.    public Dimension getPreferredSize(int var1) {
  98.       return this.getMinimumSize(var1);
  99.    }
  100.  
  101.    public Dimension getMinimumSize(int var1) {
  102.       FontMetrics var2 = ((MComponentPeer)this).getFontMetrics(super.target.getFont());
  103.       return new Dimension(var2.charWidth('0') * var1 + 20, var2.getHeight() + 15);
  104.    }
  105.  
  106.    public boolean isFocusTraversable() {
  107.       return true;
  108.    }
  109.  
  110.    public void action() {
  111.       ((MComponentPeer)this).postEvent(new ActionEvent(super.target, 1001, ((TextField)super.target).getText()));
  112.    }
  113.  
  114.    public void dispose() {
  115.       this.preDispose();
  116.       super.dispose();
  117.    }
  118.  
  119.    public void valueChanged() {
  120.       ((MComponentPeer)this).postEvent(new TextEvent(super.target, 900));
  121.    }
  122.  
  123.    public void pasteFromClipboard() {
  124.       Clipboard var1 = super.target.getToolkit().getSystemClipboard();
  125.       Transferable var2 = var1.getContents(this);
  126.       if (var2 != null) {
  127.          try {
  128.             String var3 = (String)var2.getTransferData(DataFlavor.stringFlavor);
  129.             this.insertReplaceText(var3);
  130.          } catch (Exception var4) {
  131.          }
  132.       }
  133.    }
  134.  
  135.    public void print(Graphics var1) {
  136.       TextField var2 = (TextField)super.target;
  137.       Dimension var3 = ((Component)var2).size();
  138.       int var4 = var3.width - 4;
  139.       int var5 = var3.height - 4;
  140.       Color var6 = ((Component)var2).getBackground();
  141.       Color var7 = ((Component)var2).getForeground();
  142.       Color var8 = var6.brighter();
  143.       String var9 = ((TextComponent)var2).getText();
  144.       byte var10 = 0;
  145.       byte var11 = 0;
  146.       byte var12 = 0;
  147.       var1.setFont(((Component)var2).getFont());
  148.       var1.setColor(((TextComponent)var2).isEditable() ? var8 : var6);
  149.       var1.fillRect(2, 2, var4, var5);
  150.       var1.setColor(var6);
  151.       ((MComponentPeer)this).draw3DRect(var1, var6, 1, 1, var3.width - 3, var3.height - 3, false);
  152.       if (var9 != null) {
  153.          var1.clipRect(2, 4, var4, var3.height - 8);
  154.          FontMetrics var13 = var1.getFontMetrics();
  155.          var4 = var3.width - 2;
  156.          var5 = var3.height - 8;
  157.          int var14 = this.pos2x(var11) - var10;
  158.          int var15 = this.pos2x(var12) - var10;
  159.          if (var14 < 4 && var15 > var4) {
  160.             var1.setColor(var8);
  161.             var1.fillRect(2, 4, var4 - 2, var5);
  162.          } else {
  163.             var1.setColor(var6);
  164.             if (var14 >= 4 && var14 <= var4) {
  165.                var1.setColor(var8);
  166.                if (var15 > var4) {
  167.                   var1.fillRect(var14, 4, var4 - var14, var5);
  168.                } else if (var14 != var15) {
  169.                   var1.fillRect(var14, 4, var15 - var14, var5);
  170.                }
  171.             } else if (var15 >= 4 && var15 <= var4) {
  172.                var1.setColor(var8);
  173.                var1.fillRect(2, 4, var15 - 2, var5);
  174.             }
  175.          }
  176.  
  177.          var1.setColor(var7);
  178.          int var16 = 4 - var10;
  179.          char var17 = var2.getEchoChar();
  180.          if (var17 == 0) {
  181.             var1.drawString(var9, var16, (var3.height + var13.getMaxAscent() - var13.getMaxDescent()) / 2);
  182.          } else {
  183.             char[] var18 = new char[var9.length()];
  184.  
  185.             for(int var19 = 0; var19 < var18.length; ++var19) {
  186.                var18[var19] = var17;
  187.             }
  188.  
  189.             var1.drawChars(var18, 0, var18.length, var16, (var3.height + var13.getMaxAscent() - var13.getMaxDescent()) / 2);
  190.          }
  191.       }
  192.  
  193.       super.target.print(var1);
  194.    }
  195.  
  196.    int pos2x(int var1) {
  197.       TextField var2 = (TextField)super.target;
  198.       FontMetrics var3 = ((MComponentPeer)this).getFontMetrics(((Component)var2).getFont());
  199.       int var4 = 4;
  200.       int[] var5 = var3.getWidths();
  201.       String var6 = ((TextComponent)var2).getText();
  202.       char var7 = var2.getEchoChar();
  203.       if (var7 == 0) {
  204.          for(int var8 = 0; var8 < var1; ++var8) {
  205.             var4 += var5[var6.charAt(var8)];
  206.          }
  207.       } else {
  208.          var4 += var5[var7] * var1;
  209.       }
  210.  
  211.       return var4;
  212.    }
  213.  
  214.    public void setEchoCharacter(char var1) {
  215.       this.setEchoChar(var1);
  216.    }
  217.  
  218.    public Dimension minimumSize() {
  219.       return this.getMinimumSize();
  220.    }
  221.  
  222.    public Dimension minimumSize(int var1) {
  223.       return this.getMinimumSize(var1);
  224.    }
  225.  
  226.    public Dimension preferredSize(int var1) {
  227.       return this.getPreferredSize(var1);
  228.    }
  229. }
  230.