< prev index next > modules/javafx.controls/src/android/java/javafx/scene/control/skin/TextFieldSkinAndroid.java
Print this page
*/
package javafx.scene.control.skin;
import javafx.beans.value.ChangeListener;
! import javafx.beans.value.ObservableValue;
import javafx.scene.control.TextField;
!
- import com.sun.javafx.scene.control.behavior.TextFieldBehavior;
- import javafx.scene.control.skin.TextFieldSkin;
public class TextFieldSkinAndroid extends TextFieldSkin {
public TextFieldSkinAndroid(final TextField textField) {
super(textField);
! textField.focusedProperty().addListener(new ChangeListener<Boolean>() {
! public void changed(ObservableValue<? extends Boolean> observable,
! Boolean wasFocused, Boolean isFocused) {
! if (textField.isEditable()) {
! if (isFocused) {
! showSoftwareKeyboard();
! } else {
! hideSoftwareKeyboard();
! }
! }
! }
! });
}
native void showSoftwareKeyboard();
native void hideSoftwareKeyboard();
*/
package javafx.scene.control.skin;
import javafx.beans.value.ChangeListener;
! import javafx.beans.value.WeakChangeListener;
+ import javafx.event.EventHandler;
import javafx.scene.control.TextField;
! import javafx.scene.input.MouseEvent;
public class TextFieldSkinAndroid extends TextFieldSkin {
+ /**************************************************************************
+ *
+ * Private fields
+ *
+ **************************************************************************/
+
+ private final EventHandler<MouseEvent> mouseEventListener = e -> {
+ if (getSkinnable().isEditable() && getSkinnable().isFocused()) {
+ showSoftwareKeyboard();
+ }
+ };
+
+ private final ChangeListener<Boolean> focusChangeListener = (observable, wasFocused, isFocused) -> {
+ if (wasFocused && !isFocused) {
+ hideSoftwareKeyboard();
+ }
+ };
+ private final WeakChangeListener<Boolean> weakFocusChangeListener = new WeakChangeListener<>(focusChangeListener);
+
+ /**************************************************************************
+ *
+ * Constructors
+ *
+ **************************************************************************/
+
public TextFieldSkinAndroid(final TextField textField) {
super(textField);
! textField.addEventHandler(MouseEvent.MOUSE_CLICKED, mouseEventListener);
! textField.focusedProperty().addListener(weakFocusChangeListener);
! }
!
! /***************************************************************************
! * *
! * Public API *
! * *
! **************************************************************************/
!
! /** {@inheritDoc} */
! @Override public void dispose() {
+ if (getSkinnable() == null) return;
+ getSkinnable().removeEventHandler(MouseEvent.MOUSE_CLICKED, mouseEventListener);
+ getSkinnable().focusedProperty().removeListener(weakFocusChangeListener);
+ super.dispose();
}
native void showSoftwareKeyboard();
native void hideSoftwareKeyboard();
< prev index next >