33 import javafx.geometry.Bounds;
34 import javafx.geometry.Point2D;
35 import javafx.geometry.Rectangle2D;
36 import javafx.scene.Node;
37 import javafx.scene.Scene;
38 import javafx.scene.control.ContextMenu;
39 import javafx.scene.control.TextField;
40 import javafx.scene.control.skin.TextFieldSkin;
41 import com.sun.javafx.scene.control.skin.Utils;
42 import javafx.scene.input.ContextMenuEvent;
43 import javafx.scene.input.KeyEvent;
44 import javafx.scene.input.MouseEvent;
45 import javafx.scene.text.HitInfo;
46 import javafx.stage.Screen;
47 import javafx.stage.Window;
48 import com.sun.javafx.PlatformUtil;
49 import com.sun.javafx.geom.transform.Affine3D;
50
51 import static com.sun.javafx.PlatformUtil.isMac;
52 import static com.sun.javafx.PlatformUtil.isWindows;
53 import com.sun.javafx.stage.WindowHelper;
54
55 /**
56 * Text field behavior.
57 */
58 public class TextFieldBehavior extends TextInputControlBehavior<TextField> {
59 private TextFieldSkin skin;
60 private TwoLevelFocusBehavior tlFocus;
61 private ChangeListener<Scene> sceneListener;
62 private ChangeListener<Node> focusOwnerListener;
63
64 public TextFieldBehavior(final TextField textField) {
65 super(textField);
66
67 if (Properties.IS_TOUCH_SUPPORTED) {
68 contextMenu.getStyleClass().add("text-input-context-menu");
69 }
70
71 handleFocusChange();
72
145 trans.getMxx(), trans.getMxy(), trans.getMxz(), trans.getMxt(),// + insets.getLeft(),
146 trans.getMyx(), trans.getMyy(), trans.getMyz(), trans.getMyt(),// + insets.getTop(),
147 trans.getMzx(), trans.getMzy(), trans.getMzz(), trans.getMzt());
148 }
149 if (!focusGainedByMouseClick) {
150 setCaretAnimating(true);
151 }
152 } else {
153 if (PlatformUtil.isIOS() && textField.getScene() != null) {
154 // releasing the focus => we need to hide the native component and also native keyboard
155 WindowHelper.getPeer(textField.getScene().getWindow()).releaseInput();
156 }
157 focusGainedByMouseClick = false;
158 setCaretAnimating(false);
159 }
160 }
161
162 static Affine3D calculateNodeToSceneTransform(Node node) {
163 final Affine3D transform = new Affine3D();
164 do {
165 transform.preConcatenate(node.impl_getLeafTransform());
166 node = node.getParent();
167 } while (node != null);
168
169 return transform;
170 }
171
172 // An unholy back-reference!
173 public void setTextFieldSkin(TextFieldSkin skin) {
174 this.skin = skin;
175 }
176
177 @Override protected void fire(KeyEvent event) {
178 TextField textField = getNode();
179 EventHandler<ActionEvent> onAction = textField.getOnAction();
180 ActionEvent actionEvent = new ActionEvent(textField, null);
181
182 textField.fireEvent(actionEvent);
183 textField.commitValue();
184
185 if (onAction == null && !actionEvent.isConsumed()) {
|
33 import javafx.geometry.Bounds;
34 import javafx.geometry.Point2D;
35 import javafx.geometry.Rectangle2D;
36 import javafx.scene.Node;
37 import javafx.scene.Scene;
38 import javafx.scene.control.ContextMenu;
39 import javafx.scene.control.TextField;
40 import javafx.scene.control.skin.TextFieldSkin;
41 import com.sun.javafx.scene.control.skin.Utils;
42 import javafx.scene.input.ContextMenuEvent;
43 import javafx.scene.input.KeyEvent;
44 import javafx.scene.input.MouseEvent;
45 import javafx.scene.text.HitInfo;
46 import javafx.stage.Screen;
47 import javafx.stage.Window;
48 import com.sun.javafx.PlatformUtil;
49 import com.sun.javafx.geom.transform.Affine3D;
50
51 import static com.sun.javafx.PlatformUtil.isMac;
52 import static com.sun.javafx.PlatformUtil.isWindows;
53 import com.sun.javafx.scene.NodeHelper;
54 import com.sun.javafx.stage.WindowHelper;
55
56 /**
57 * Text field behavior.
58 */
59 public class TextFieldBehavior extends TextInputControlBehavior<TextField> {
60 private TextFieldSkin skin;
61 private TwoLevelFocusBehavior tlFocus;
62 private ChangeListener<Scene> sceneListener;
63 private ChangeListener<Node> focusOwnerListener;
64
65 public TextFieldBehavior(final TextField textField) {
66 super(textField);
67
68 if (Properties.IS_TOUCH_SUPPORTED) {
69 contextMenu.getStyleClass().add("text-input-context-menu");
70 }
71
72 handleFocusChange();
73
146 trans.getMxx(), trans.getMxy(), trans.getMxz(), trans.getMxt(),// + insets.getLeft(),
147 trans.getMyx(), trans.getMyy(), trans.getMyz(), trans.getMyt(),// + insets.getTop(),
148 trans.getMzx(), trans.getMzy(), trans.getMzz(), trans.getMzt());
149 }
150 if (!focusGainedByMouseClick) {
151 setCaretAnimating(true);
152 }
153 } else {
154 if (PlatformUtil.isIOS() && textField.getScene() != null) {
155 // releasing the focus => we need to hide the native component and also native keyboard
156 WindowHelper.getPeer(textField.getScene().getWindow()).releaseInput();
157 }
158 focusGainedByMouseClick = false;
159 setCaretAnimating(false);
160 }
161 }
162
163 static Affine3D calculateNodeToSceneTransform(Node node) {
164 final Affine3D transform = new Affine3D();
165 do {
166 transform.preConcatenate(NodeHelper.getLeafTransform(node));
167 node = node.getParent();
168 } while (node != null);
169
170 return transform;
171 }
172
173 // An unholy back-reference!
174 public void setTextFieldSkin(TextFieldSkin skin) {
175 this.skin = skin;
176 }
177
178 @Override protected void fire(KeyEvent event) {
179 TextField textField = getNode();
180 EventHandler<ActionEvent> onAction = textField.getOnAction();
181 ActionEvent actionEvent = new ActionEvent(textField, null);
182
183 textField.fireEvent(actionEvent);
184 textField.commitValue();
185
186 if (onAction == null && !actionEvent.isConsumed()) {
|