home *** CD-ROM | disk | FTP | other *** search
- package sun.awt.motif;
-
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dialog;
- import java.awt.Dimension;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Frame;
- import java.awt.Graphics;
- import java.awt.TextComponent;
- import java.awt.TextField;
- import java.awt.datatransfer.Clipboard;
- import java.awt.datatransfer.DataFlavor;
- import java.awt.datatransfer.Transferable;
- import java.awt.event.ActionEvent;
- import java.awt.event.TextEvent;
- import java.awt.peer.TextFieldPeer;
-
- public class MTextFieldPeer extends MComponentPeer implements TextFieldPeer {
- public static final int BORDER = 2;
- public static final int MARGIN = 4;
-
- native void create(MComponentPeer var1);
-
- void initialize() {
- TextField var1 = (TextField)super.target;
- this.setText(((TextComponent)var1).getText());
- if (var1.echoCharIsSet()) {
- this.setEchoChar(var1.getEchoChar());
- }
-
- this.select(((TextComponent)var1).getSelectionStart(), ((TextComponent)var1).getSelectionEnd());
- this.setEditable(((TextComponent)var1).isEditable());
-
- Container var2;
- for(var2 = super.target.getParent(); var2 != null && !(var2 instanceof Frame) && !(var2 instanceof Dialog); var2 = ((Component)var2).getParent()) {
- }
-
- if (var2 instanceof Frame) {
- ((MFramePeer)((Frame)var2).getPeer()).addTextComponent();
- } else if (var2 instanceof Dialog) {
- ((MDialogPeer)((Dialog)var2).getPeer()).addTextComponent();
- }
-
- super.initialize();
- }
-
- public MTextFieldPeer(TextField var1) {
- super(var1);
- }
-
- public void setEditable(boolean var1) {
- this.pSetEditable(var1);
- this.setBackground(super.target.getBackground());
- }
-
- public void setBackground(Color var1) {
- TextField var2 = (TextField)super.target;
- if (((TextComponent)var2).isEditable()) {
- var1 = var1.brighter();
- }
-
- super.setBackground(var1);
- }
-
- public native void pSetEditable(boolean var1);
-
- public native void select(int var1, int var2);
-
- public native int getSelectionStart();
-
- public native int getSelectionEnd();
-
- public native void setText(String var1);
-
- public native void insertReplaceText(String var1);
-
- public native void preDispose();
-
- public native String getText();
-
- public native void setEchoChar(char var1);
-
- public native void setFont(Font var1);
-
- public native void setCaretPosition(int var1);
-
- public native int getCaretPosition();
-
- public Dimension getMinimumSize() {
- FontMetrics var1 = ((MComponentPeer)this).getFontMetrics(super.target.getFont());
- return new Dimension(var1.stringWidth(((TextField)super.target).getText()) + 20, var1.getHeight() + 15);
- }
-
- public Dimension getPreferredSize(int var1) {
- return this.getMinimumSize(var1);
- }
-
- public Dimension getMinimumSize(int var1) {
- FontMetrics var2 = ((MComponentPeer)this).getFontMetrics(super.target.getFont());
- return new Dimension(var2.charWidth('0') * var1 + 20, var2.getHeight() + 15);
- }
-
- public boolean isFocusTraversable() {
- return true;
- }
-
- public void action() {
- ((MComponentPeer)this).postEvent(new ActionEvent(super.target, 1001, ((TextField)super.target).getText()));
- }
-
- public void dispose() {
- this.preDispose();
- super.dispose();
- }
-
- public void valueChanged() {
- ((MComponentPeer)this).postEvent(new TextEvent(super.target, 900));
- }
-
- public void pasteFromClipboard() {
- Clipboard var1 = super.target.getToolkit().getSystemClipboard();
- Transferable var2 = var1.getContents(this);
- if (var2 != null) {
- try {
- String var3 = (String)var2.getTransferData(DataFlavor.stringFlavor);
- this.insertReplaceText(var3);
- } catch (Exception var4) {
- }
- }
- }
-
- public void print(Graphics var1) {
- TextField var2 = (TextField)super.target;
- Dimension var3 = ((Component)var2).size();
- int var4 = var3.width - 4;
- int var5 = var3.height - 4;
- Color var6 = ((Component)var2).getBackground();
- Color var7 = ((Component)var2).getForeground();
- Color var8 = var6.brighter();
- String var9 = ((TextComponent)var2).getText();
- byte var10 = 0;
- byte var11 = 0;
- byte var12 = 0;
- var1.setFont(((Component)var2).getFont());
- var1.setColor(((TextComponent)var2).isEditable() ? var8 : var6);
- var1.fillRect(2, 2, var4, var5);
- var1.setColor(var6);
- ((MComponentPeer)this).draw3DRect(var1, var6, 1, 1, var3.width - 3, var3.height - 3, false);
- if (var9 != null) {
- var1.clipRect(2, 4, var4, var3.height - 8);
- FontMetrics var13 = var1.getFontMetrics();
- var4 = var3.width - 2;
- var5 = var3.height - 8;
- int var14 = this.pos2x(var11) - var10;
- int var15 = this.pos2x(var12) - var10;
- if (var14 < 4 && var15 > var4) {
- var1.setColor(var8);
- var1.fillRect(2, 4, var4 - 2, var5);
- } else {
- var1.setColor(var6);
- if (var14 >= 4 && var14 <= var4) {
- var1.setColor(var8);
- if (var15 > var4) {
- var1.fillRect(var14, 4, var4 - var14, var5);
- } else if (var14 != var15) {
- var1.fillRect(var14, 4, var15 - var14, var5);
- }
- } else if (var15 >= 4 && var15 <= var4) {
- var1.setColor(var8);
- var1.fillRect(2, 4, var15 - 2, var5);
- }
- }
-
- var1.setColor(var7);
- int var16 = 4 - var10;
- char var17 = var2.getEchoChar();
- if (var17 == 0) {
- var1.drawString(var9, var16, (var3.height + var13.getMaxAscent() - var13.getMaxDescent()) / 2);
- } else {
- char[] var18 = new char[var9.length()];
-
- for(int var19 = 0; var19 < var18.length; ++var19) {
- var18[var19] = var17;
- }
-
- var1.drawChars(var18, 0, var18.length, var16, (var3.height + var13.getMaxAscent() - var13.getMaxDescent()) / 2);
- }
- }
-
- super.target.print(var1);
- }
-
- int pos2x(int var1) {
- TextField var2 = (TextField)super.target;
- FontMetrics var3 = ((MComponentPeer)this).getFontMetrics(((Component)var2).getFont());
- int var4 = 4;
- int[] var5 = var3.getWidths();
- String var6 = ((TextComponent)var2).getText();
- char var7 = var2.getEchoChar();
- if (var7 == 0) {
- for(int var8 = 0; var8 < var1; ++var8) {
- var4 += var5[var6.charAt(var8)];
- }
- } else {
- var4 += var5[var7] * var1;
- }
-
- return var4;
- }
-
- public void setEchoCharacter(char var1) {
- this.setEchoChar(var1);
- }
-
- public Dimension minimumSize() {
- return this.getMinimumSize();
- }
-
- public Dimension minimumSize(int var1) {
- return this.getMinimumSize(var1);
- }
-
- public Dimension preferredSize(int var1) {
- return this.getPreferredSize(var1);
- }
- }
-