1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
// when mouse is pressed say "pressed" otherwise say "released"
// concatenate message with mouse position and update each time it is necessary
// declare the mouse reactor
Var<String> mouseAndTime = MouseReact.hold().filter(MouseReact.BUTTON1).map(new Function1<String, Integer>() {
@Override
public String invoke(Integer value) {
// when mouse button is pressed
return "button pressed";
}
}).otherwise(new Function1<String, String>() {
@Override
public String invoke(String arg1) {
// when it is released
return "button released";
}
}).toVar("no button yet !").merge(mouseX, new Function2<String, String, Integer>() {
@Override
public String invoke(String arg1, Integer arg2) {
// add mouse x position
return arg1 + " ( x=" + arg2;
}
}).merge(mouseY, new Function2<String, String, Integer>() {
@Override
public String invoke(String arg1, Integer arg2) {
// add mouse y position
return arg1 + ", y=" + arg2 + ")";
}
});
label1.setText(mouseAndTime); |
Partager