public interface EventPattern<T extends javafx.event.Event,U extends T>
EventType
s (e.g. the "case" line in a powerful switch
statement). When match(Event)
returns a non-empty Optional
, the corresponding
InputHandler
will be called.
This class provides a number of static factory methods that provide the base pattern to match.
keyPressed()
, keyTyped()
,
mousePressed()
, mouseClicked()
, mouseDragged()
, etc.
InputEvent.ANY
), one
will use the base pattern, eventType(EventType)
Once a base pattern is created, one can further define the pattern for which to match for by
adding what are known as "guards" in pattern matching: andThen(EventPattern)
,
onlyIf(Predicate)
, unless(Predicate)
, and anyOf(EventPattern[])
. See each
method's javadoc for more info.
// a pattern that matches any key pressed event
keyPressed()
// a pattern that matches only key pressed events where the user
// pressed a digit key
keyPressed().onlyIf(pressedKey -> pressedKey.getCode().isDigitKey())
Modifier and Type | Field and Description |
---|---|
static javafx.scene.input.KeyCombination.Modifier[] |
ALL_MODIFIERS_AS_ANY |
Modifier and Type | Method and Description |
---|---|
default <V extends U> |
andThen(EventPattern<? super U,V> next)
Returns an EventPattern that matches the given event type only when this event pattern matches it
and the
next EventPattern matches it. |
static <T extends javafx.event.Event,U extends T> |
anyOf(EventPattern<T,? extends U>... events)
Returns an EventPattern that matches the given event type when any of the given EventPatterns match the
given event type; useful when one wants to specify the same behavior for a variety of events (i.e.
|
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> |
dragDetected() |
static <T extends javafx.event.Event> |
eventType(javafx.event.EventType<? extends T> eventType) |
java.util.Set<javafx.event.EventType<? extends U>> |
getEventTypes() |
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> |
keyPressed() |
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> |
keyPressed(javafx.scene.input.KeyCode code,
javafx.scene.input.KeyCombination.Modifier... modifiers) |
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> |
keyPressed(javafx.scene.input.KeyCombination combination) |
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> |
keyPressed(java.util.function.Predicate<javafx.scene.input.KeyCode> keyTest,
javafx.scene.input.KeyCombination.Modifier... modifiers) |
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> |
keyPressed(java.lang.String character,
javafx.scene.input.KeyCombination.Modifier... modifiers) |
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> |
keyPressedNoMod(java.lang.String character)
Matches the given key pressed event regardless of modifiers; this should only be used for the rare KeyEvents
which require a pressed modifier (e.g.
|
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> |
keyReleased() |
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> |
keyReleased(javafx.scene.input.KeyCode code,
javafx.scene.input.KeyCombination.Modifier... modifiers) |
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> |
keyReleased(javafx.scene.input.KeyCombination combination) |
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> |
keyReleased(java.util.function.Predicate<javafx.scene.input.KeyCode> keyTest,
javafx.scene.input.KeyCombination.Modifier... modifiers) |
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> |
keyReleased(java.lang.String character,
javafx.scene.input.KeyCombination.Modifier... modifiers) |
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> |
keyReleasedNoMod(java.lang.String character)
Matches the given key released event regardless of modifiers; this should only be used for the rare KeyEvents
which require a pressed modifier (e.g.
|
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> |
keyTyped() |
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> |
keyTyped(java.util.function.Predicate<java.lang.String> charTest,
javafx.scene.input.KeyCombination.Modifier... modifiers) |
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> |
keyTyped(java.lang.String character,
javafx.scene.input.KeyCombination.Modifier... modifiers) |
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> |
keyTypedNoMod(java.lang.String character)
Matches the given key typed event regardless of modifiers; this should only be used for the rare KeyEvents
which require a pressed modifier (e.g.
|
java.util.Optional<? extends U> |
match(T event)
Returns a non-empty
Optional when a match is found. |
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> |
mouseClicked() |
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> |
mouseClicked(javafx.scene.input.MouseButton button) |
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> |
mouseDragged() |
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> |
mouseEntered() |
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> |
mouseEnteredTarget() |
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> |
mouseExited() |
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> |
mouseExitedTarget() |
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> |
mouseMoved() |
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> |
mousePressed() |
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> |
mousePressed(javafx.scene.input.MouseButton button) |
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> |
mouseReleased() |
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> |
mouseReleased(javafx.scene.input.MouseButton button) |
default EventPattern<T,U> |
onlyIf(java.util.function.Predicate<? super U> condition)
Returns an EventPattern that matches the given event type only if this event pattern matches it
and the event type passed the given
condition |
default EventPattern<T,U> |
unless(java.util.function.Predicate<? super U> condition)
Returns an EventPattern that matches the given event type only if this event pattern matches it
and the event type fails the given
condition |
static final javafx.scene.input.KeyCombination.Modifier[] ALL_MODIFIERS_AS_ANY
java.util.Optional<? extends U> match(T event)
Optional
when a match is found.java.util.Set<javafx.event.EventType<? extends U>> getEventTypes()
default <V extends U> EventPattern<T,V> andThen(EventPattern<? super U,V> next)
next
EventPattern matches it.default EventPattern<T,U> onlyIf(java.util.function.Predicate<? super U> condition)
condition
default EventPattern<T,U> unless(java.util.function.Predicate<? super U> condition)
condition
@SafeVarargs static <T extends javafx.event.Event,U extends T> EventPattern<T,U> anyOf(EventPattern<T,? extends U>... events)
static <T extends javafx.event.Event> EventPattern<javafx.event.Event,T> eventType(javafx.event.EventType<? extends T> eventType)
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> keyPressed()
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> keyPressed(javafx.scene.input.KeyCombination combination)
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> keyPressed(javafx.scene.input.KeyCode code, javafx.scene.input.KeyCombination.Modifier... modifiers)
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> keyPressed(java.util.function.Predicate<javafx.scene.input.KeyCode> keyTest, javafx.scene.input.KeyCombination.Modifier... modifiers)
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> keyPressed(java.lang.String character, javafx.scene.input.KeyCombination.Modifier... modifiers)
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> keyPressedNoMod(java.lang.String character)
InputMap.sequence(InputMap[])
, the second EventPattern will never run.static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> keyReleased()
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> keyReleased(javafx.scene.input.KeyCombination combination)
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> keyReleased(javafx.scene.input.KeyCode code, javafx.scene.input.KeyCombination.Modifier... modifiers)
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> keyReleased(java.util.function.Predicate<javafx.scene.input.KeyCode> keyTest, javafx.scene.input.KeyCombination.Modifier... modifiers)
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> keyReleased(java.lang.String character, javafx.scene.input.KeyCombination.Modifier... modifiers)
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> keyReleasedNoMod(java.lang.String character)
InputMap.sequence(InputMap[])
, the second EventPattern will never run.static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> keyTyped()
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> keyTyped(java.util.function.Predicate<java.lang.String> charTest, javafx.scene.input.KeyCombination.Modifier... modifiers)
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> keyTyped(java.lang.String character, javafx.scene.input.KeyCombination.Modifier... modifiers)
static EventPattern<javafx.event.Event,javafx.scene.input.KeyEvent> keyTypedNoMod(java.lang.String character)
InputMap.sequence(InputMap[])
, the second EventPattern will never run.static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> mouseClicked()
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> mouseClicked(javafx.scene.input.MouseButton button)
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> mousePressed()
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> mousePressed(javafx.scene.input.MouseButton button)
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> mouseReleased()
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> mouseReleased(javafx.scene.input.MouseButton button)
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> mouseMoved()
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> mouseDragged()
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> dragDetected()
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> mouseEntered()
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> mouseEnteredTarget()
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> mouseExited()
static EventPattern<javafx.event.Event,javafx.scene.input.MouseEvent> mouseExitedTarget()