< prev index next > modules/javafx.controls/src/android/java/javafx/scene/control/skin/TextAreaSkinAndroid.java
Print this page
*/
package javafx.scene.control.skin;
import javafx.beans.value.ChangeListener;
! import javafx.beans.value.ObservableValue;
import javafx.scene.control.TextArea;
! import javafx.scene.control.skin.TextAreaSkin;
public class TextAreaSkinAndroid extends TextAreaSkin {
public TextAreaSkinAndroid(final TextArea textArea) {
super(textArea);
! textArea.focusedProperty().addListener(new ChangeListener<Boolean>() {
! public void changed(ObservableValue<? extends Boolean> observable,
! Boolean wasFocused, Boolean isFocused) {
! if (textArea.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.TextArea;
! import javafx.scene.input.MouseEvent;
public class TextAreaSkinAndroid extends TextAreaSkin {
+ /**************************************************************************
+ *
+ * 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 TextAreaSkinAndroid(final TextArea textArea) {
super(textArea);
+ textArea.addEventHandler(MouseEvent.MOUSE_CLICKED, mouseEventListener);
+ textArea.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 >