1 /* 2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 27 package sun.lwawt; 28 29 import java.awt.Dimension; 30 import java.awt.Point; 31 import java.awt.TextField; 32 import java.awt.event.ActionEvent; 33 import java.awt.event.ActionListener; 34 import java.awt.event.FocusEvent; 35 import java.awt.peer.TextFieldPeer; 36 37 import javax.swing.JPasswordField; 38 import javax.swing.text.JTextComponent; 39 40 import javax.tools.annotation.GenerateNativeHeader; 41 42 /* No native methods here, but the constants are needed in the supporting JNI code */ 43 @GenerateNativeHeader 44 final class LWTextFieldPeer 45 extends LWTextComponentPeer<TextField, JPasswordField> 46 implements TextFieldPeer, ActionListener { 47 48 private static final int DEFAULT_COLUMNS = 1; 49 50 LWTextFieldPeer(final TextField target, 51 final PlatformComponent platformComponent) { 52 super(target, platformComponent); 53 } 54 55 @Override 56 protected JPasswordField createDelegate() { 57 return new JTextAreaDelegate(); 58 } 59 60 @Override 61 void initializeImpl() { 62 super.initializeImpl(); 63 setEchoChar(getTarget().getEchoChar()); 64 synchronized (getDelegateLock()) { 65 getDelegate().addActionListener(this); 66 } 67 } 68 69 @Override 70 public JTextComponent getTextComponent() { 71 return getDelegate(); 72 } 73 74 @Override 75 public void setEchoChar(final char echoChar) { 76 synchronized (getDelegateLock()) { 77 getDelegate().setEchoChar(echoChar); 78 getDelegate().putClientProperty("JPasswordField.cutCopyAllowed", 79 getDelegate().echoCharIsSet() 80 ? Boolean.FALSE : Boolean.TRUE); 81 } 82 } 83 84 @Override 85 public Dimension getPreferredSize(final int columns) { 86 return getPreferredSize(1, columns); 87 } 88 89 @Override 90 public Dimension getMinimumSize(final int columns) { 91 return getPreferredSize(columns); 92 } 93 94 @Override 95 public Dimension getMinimumSize() { 96 return getMinimumSize(DEFAULT_COLUMNS); 97 } 98 99 @Override 100 public void actionPerformed(final ActionEvent e) { 101 postEvent(new ActionEvent(getTarget(), ActionEvent.ACTION_PERFORMED, 102 getText(), e.getWhen(), e.getModifiers())); 103 } 104 105 /** 106 * Restoring native behavior. We should sets the selection range to zero, 107 * when component lost its focus. 108 * 109 * @param e the focus event 110 */ 111 @Override 112 protected void handleJavaFocusEvent(final FocusEvent e) { 113 if (e.getID() == FocusEvent.FOCUS_LOST) { 114 // In order to de-select the selection 115 setCaretPosition(0); 116 } | 1 /* 2 * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 27 package sun.lwawt; 28 29 import java.awt.Dimension; 30 import java.awt.Point; 31 import java.awt.TextField; 32 import java.awt.event.ActionEvent; 33 import java.awt.event.ActionListener; 34 import java.awt.event.FocusEvent; 35 import java.awt.peer.TextFieldPeer; 36 37 import javax.swing.JPasswordField; 38 import javax.swing.text.JTextComponent; 39 40 final class LWTextFieldPeer 41 extends LWTextComponentPeer<TextField, JPasswordField> 42 implements TextFieldPeer, ActionListener { 43 44 LWTextFieldPeer(final TextField target, 45 final PlatformComponent platformComponent) { 46 super(target, platformComponent); 47 } 48 49 @Override 50 protected JPasswordField createDelegate() { 51 return new JTextAreaDelegate(); 52 } 53 54 @Override 55 void initializeImpl() { 56 super.initializeImpl(); 57 setEchoChar(getTarget().getEchoChar()); 58 synchronized (getDelegateLock()) { 59 getDelegate().addActionListener(this); 60 } 61 } 62 63 @Override 64 public JTextComponent getTextComponent() { 65 return getDelegate(); 66 } 67 68 @Override 69 public void setEchoChar(final char echoChar) { 70 synchronized (getDelegateLock()) { 71 getDelegate().setEchoChar(echoChar); 72 getDelegate().putClientProperty("JPasswordField.cutCopyAllowed", 73 getDelegate().echoCharIsSet() 74 ? Boolean.FALSE : Boolean.TRUE); 75 } 76 } 77 78 @Override 79 public Dimension getPreferredSize(final int columns) { 80 return getMinimumSize(columns); 81 } 82 83 @Override 84 public Dimension getMinimumSize(final int columns) { 85 return getMinimumSize(1, columns); 86 } 87 88 @Override 89 public void actionPerformed(final ActionEvent e) { 90 postEvent(new ActionEvent(getTarget(), ActionEvent.ACTION_PERFORMED, 91 getText(), e.getWhen(), e.getModifiers())); 92 } 93 94 /** 95 * Restoring native behavior. We should sets the selection range to zero, 96 * when component lost its focus. 97 * 98 * @param e the focus event 99 */ 100 @Override 101 protected void handleJavaFocusEvent(final FocusEvent e) { 102 if (e.getID() == FocusEvent.FOCUS_LOST) { 103 // In order to de-select the selection 104 setCaretPosition(0); 105 } |