Skip to content

Commit ea3804e

Browse files
author
jmhofer
committed
Added filtering for key codes.
1 parent cbcb6fe commit ea3804e

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

rxjava-contrib/rxjava-swing/src/main/java/rx/SwingObservable.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,18 @@
1515
*/
1616
package rx;
1717

18+
import static rx.Observable.filter;
19+
1820
import java.awt.event.ActionEvent;
1921
import java.awt.event.KeyEvent;
22+
import java.util.Set;
2023

2124
import javax.swing.AbstractButton;
2225
import javax.swing.JComponent;
2326

2427
import rx.swing.sources.AbstractButtonSource;
2528
import rx.swing.sources.KeyEventSource;
29+
import rx.util.functions.Func1;
2630

2731
/**
2832
* Allows creating observables from various sources specific to Swing.
@@ -50,4 +54,20 @@ public static Observable<ActionEvent> fromButtonAction(AbstractButton button) {
5054
public static Observable<KeyEvent> fromKeyEvents(JComponent component) {
5155
return KeyEventSource.fromKeyEventsOf(component);
5256
}
57+
58+
/**
59+
* Creates an observable corresponding to raw key events, restricted a set of given key codes.
60+
*
61+
* @param component
62+
* The component to register the observable for.
63+
* @return Observable of key events.
64+
*/
65+
public static Observable<KeyEvent> fromKeyEvents(JComponent component, final Set<Integer> keyCodes) {
66+
return filter(fromKeyEvents(component), new Func1<KeyEvent, Boolean>() {
67+
@Override
68+
public Boolean call(KeyEvent event) {
69+
return keyCodes.contains(event.getKeyCode());
70+
}
71+
});
72+
}
5373
}

0 commit comments

Comments
 (0)