|
35 | 35 | import javafx.css.Styleable; |
36 | 36 | import javafx.css.StyleableObjectProperty; |
37 | 37 | import javafx.event.Event; |
| 38 | +import javafx.event.EventHandler; |
38 | 39 | import javafx.geometry.BoundingBox; |
39 | 40 | import javafx.geometry.Bounds; |
40 | 41 | import javafx.geometry.Insets; |
|
182 | 183 | * <li> |
183 | 184 | * <em>First (1 click count) Primary Button Mouse Pressed Events:</em> |
184 | 185 | * (<code>EventPattern.mousePressed(MouseButton.PRIMARY).onlyIf(e -> e.getClickCount() == 1)</code>). |
185 | | - * Do not override. Instead, use {@link #onOutsideSelectionMousePress}, |
186 | | - * {@link #onInsideSelectionMousePressRelease}, or see next item. |
| 186 | + * Do not override. Instead, use {@link #onOutsideSelectionMousePressed}, |
| 187 | + * {@link #onInsideSelectionMousePressReleased}, or see next item. |
187 | 188 | * </li> |
188 | 189 | * <li>( |
189 | 190 | * <em>All Other Mouse Pressed Events (e.g., Primary with 2+ click count):</em> |
|
223 | 224 | * <li> |
224 | 225 | * <em>Primary-Button-only Mouse Released Events:</em> |
225 | 226 | * (<code>EventPattern.mouseReleased().onlyIf(e -> e.getButton() == MouseButton.PRIMARY && !e.isMiddleButtonDown() && !e.isSecondaryButtonDown())</code>). |
226 | | - * Do not override. Instead, use {@link #onNewSelectionDragEnd}, {@link #onSelectionDrop}, or see next item. |
| 227 | + * Do not override. Instead, use {@link #onNewSelectionDragFinished}, {@link #onSelectionDropped}, or see next item. |
227 | 228 | * </li> |
228 | 229 | * <li> |
229 | 230 | * <em>All other Mouse Released Events:</em> |
@@ -348,7 +349,7 @@ protected void invalidated() { |
348 | 349 | // Don't remove as FXMLLoader doesn't recognise default methods ! |
349 | 350 | @Override public void setWrapText(boolean value) { wrapText.set(value); } |
350 | 351 | @Override public boolean isWrapText() { return wrapText.get(); } |
351 | | - |
| 352 | + |
352 | 353 | // undo manager |
353 | 354 | private UndoManager undoManager; |
354 | 355 | @Override public UndoManager getUndoManager() { return undoManager; } |
@@ -406,41 +407,46 @@ protected void invalidated() { |
406 | 407 | * * |
407 | 408 | * ********************************************************************** */ |
408 | 409 |
|
409 | | - private final ObjectProperty<Consumer<MouseEvent>> onOutsideSelectionMousePress = new SimpleObjectProperty<>(e -> { |
410 | | - CharacterHit hit = hit(e.getX(), e.getY()); |
411 | | - moveTo(hit.getInsertionIndex(), SelectionPolicy.CLEAR); |
| 410 | + @Override public final EventHandler<MouseEvent> getOnOutsideSelectionMousePressed() { return onOutsideSelectionMousePressed.get(); } |
| 411 | + @Override public final void setOnOutsideSelectionMousePressed(EventHandler<MouseEvent> handler) { onOutsideSelectionMousePressed.set( handler ); } |
| 412 | + @Override public final ObjectProperty<EventHandler<MouseEvent>> onOutsideSelectionMousePressedProperty() { return onOutsideSelectionMousePressed; } |
| 413 | + private final ObjectProperty<EventHandler<MouseEvent>> onOutsideSelectionMousePressed = new SimpleObjectProperty<>( e -> { |
| 414 | + onOutsideSelectionMousePressProperty().get().accept(e); |
412 | 415 | }); |
413 | | - @Override public final ObjectProperty<Consumer<MouseEvent>> onOutsideSelectionMousePressProperty() { return onOutsideSelectionMousePress; } |
414 | 416 |
|
415 | | - private final ObjectProperty<Consumer<MouseEvent>> onInsideSelectionMousePressRelease = new SimpleObjectProperty<>(e -> { |
416 | | - CharacterHit hit = hit(e.getX(), e.getY()); |
417 | | - moveTo(hit.getInsertionIndex(), SelectionPolicy.CLEAR); |
| 417 | + @Override public final EventHandler<MouseEvent> getOnInsideSelectionMousePressReleased() { return onInsideSelectionMousePressReleased.get(); } |
| 418 | + @Override public final void setOnInsideSelectionMousePressReleased(EventHandler<MouseEvent> handler) { onInsideSelectionMousePressReleased.set( handler ); } |
| 419 | + @Override public final ObjectProperty<EventHandler<MouseEvent>> onInsideSelectionMousePressReleasedProperty() { return onInsideSelectionMousePressReleased; } |
| 420 | + private final ObjectProperty<EventHandler<MouseEvent>> onInsideSelectionMousePressReleased = new SimpleObjectProperty<>( e -> { |
| 421 | + onInsideSelectionMousePressReleaseProperty().get().accept(e); |
418 | 422 | }); |
419 | | - @Override public final ObjectProperty<Consumer<MouseEvent>> onInsideSelectionMousePressReleaseProperty() { return onInsideSelectionMousePressRelease; } |
420 | 423 |
|
421 | 424 | private final ObjectProperty<Consumer<Point2D>> onNewSelectionDrag = new SimpleObjectProperty<>(p -> { |
422 | 425 | CharacterHit hit = hit(p.getX(), p.getY()); |
423 | 426 | moveTo(hit.getInsertionIndex(), SelectionPolicy.ADJUST); |
424 | 427 | }); |
425 | 428 | @Override public final ObjectProperty<Consumer<Point2D>> onNewSelectionDragProperty() { return onNewSelectionDrag; } |
426 | 429 |
|
427 | | - private final ObjectProperty<Consumer<MouseEvent>> onNewSelectionDragEnd = new SimpleObjectProperty<>(e -> { |
| 430 | + @Override public final EventHandler<MouseEvent> getOnNewSelectionDragFinished() { return onNewSelectionDragFinished.get(); } |
| 431 | + @Override public final void setOnNewSelectionDragFinished(EventHandler<MouseEvent> handler) { onNewSelectionDragFinished.set( handler ); } |
| 432 | + @Override public final ObjectProperty<EventHandler<MouseEvent>> onNewSelectionDragFinishedProperty() { return onNewSelectionDragFinished; } |
| 433 | + private final ObjectProperty<EventHandler<MouseEvent>> onNewSelectionDragFinished = new SimpleObjectProperty<>( e -> { |
428 | 434 | CharacterHit hit = hit(e.getX(), e.getY()); |
429 | 435 | moveTo(hit.getInsertionIndex(), SelectionPolicy.ADJUST); |
430 | 436 | }); |
431 | | - @Override public final ObjectProperty<Consumer<MouseEvent>> onNewSelectionDragEndProperty() { return onNewSelectionDragEnd; } |
432 | 437 |
|
433 | 438 | private final ObjectProperty<Consumer<Point2D>> onSelectionDrag = new SimpleObjectProperty<>(p -> { |
434 | 439 | CharacterHit hit = hit(p.getX(), p.getY()); |
435 | 440 | displaceCaret(hit.getInsertionIndex()); |
436 | 441 | }); |
437 | 442 | @Override public final ObjectProperty<Consumer<Point2D>> onSelectionDragProperty() { return onSelectionDrag; } |
438 | 443 |
|
439 | | - private final ObjectProperty<Consumer<MouseEvent>> onSelectionDrop = new SimpleObjectProperty<>(e -> { |
440 | | - CharacterHit hit = hit(e.getX(), e.getY()); |
441 | | - moveSelectedText(hit.getInsertionIndex()); |
| 444 | + @Override public final EventHandler<MouseEvent> getOnSelectionDropped() { return onSelectionDropped.get(); } |
| 445 | + @Override public final void setOnSelectionDropped(EventHandler<MouseEvent> handler) { onSelectionDropped.set( handler ); } |
| 446 | + @Override public final ObjectProperty<EventHandler<MouseEvent>> onSelectionDroppedProperty() { return onSelectionDropped; } |
| 447 | + private final ObjectProperty<EventHandler<MouseEvent>> onSelectionDropped = new SimpleObjectProperty<>( e -> { |
| 448 | + onSelectionDropProperty().get().accept(e); |
442 | 449 | }); |
443 | | - @Override public final ObjectProperty<Consumer<MouseEvent>> onSelectionDropProperty() { return onSelectionDrop; } |
444 | 450 |
|
445 | 451 | // not a hook, but still plays a part in the default mouse behavior |
446 | 452 | private final BooleanProperty autoScrollOnDragDesired = new SimpleBooleanProperty(true); |
@@ -1483,4 +1489,37 @@ private void suspendVisibleParsWhile(Runnable runnable) { |
1483 | 1489 | return CSS_META_DATA_LIST; |
1484 | 1490 | } |
1485 | 1491 |
|
| 1492 | + |
| 1493 | + // Note: this code should be moved to `onOutsideSelectionMousePressed` property |
| 1494 | + // in the next major release before removing this deprecated field |
| 1495 | + @Deprecated private final ObjectProperty<Consumer<MouseEvent>> onOutsideSelectionMousePress = new SimpleObjectProperty<>( e -> { |
| 1496 | + CharacterHit hit = hit(e.getX(), e.getY()); |
| 1497 | + moveTo(hit.getInsertionIndex(), SelectionPolicy.CLEAR); |
| 1498 | + }); |
| 1499 | + @Deprecated |
| 1500 | + @Override public final ObjectProperty<Consumer<MouseEvent>> onOutsideSelectionMousePressProperty() { |
| 1501 | + return onOutsideSelectionMousePress; |
| 1502 | + } |
| 1503 | + |
| 1504 | + // Note: this code should be moved to `onInsideSelectionMouseReleased` property |
| 1505 | + // in the next major release before removing this deprecated field |
| 1506 | + @Deprecated private final ObjectProperty<Consumer<MouseEvent>> onInsideSelectionMousePressRelease = new SimpleObjectProperty<>( e -> { |
| 1507 | + CharacterHit hit = hit(e.getX(), e.getY()); |
| 1508 | + moveTo(hit.getInsertionIndex(), SelectionPolicy.CLEAR); |
| 1509 | + }); |
| 1510 | + @Deprecated |
| 1511 | + @Override public final ObjectProperty<Consumer<MouseEvent>> onInsideSelectionMousePressReleaseProperty() { |
| 1512 | + return onInsideSelectionMousePressRelease; |
| 1513 | + } |
| 1514 | + |
| 1515 | + // Note: this code should be moved to `onSelectionDropped` property |
| 1516 | + // in the next major release before removing this deprecated field |
| 1517 | + @Deprecated private final ObjectProperty<Consumer<MouseEvent>> onSelectionDrop = new SimpleObjectProperty<>( e -> { |
| 1518 | + CharacterHit hit = hit(e.getX(), e.getY()); |
| 1519 | + moveSelectedText(hit.getInsertionIndex()); |
| 1520 | + }); |
| 1521 | + @Deprecated |
| 1522 | + @Override public final ObjectProperty<Consumer<MouseEvent>> onSelectionDropProperty() { |
| 1523 | + return onSelectionDrop; |
| 1524 | + } |
1486 | 1525 | } |
0 commit comments