Simulate JButton behavior while still preserving check for BUTTON1 using MouseAdapter. Add a slight tint when button is pressing, but not pressed.

This commit is contained in:
John Hitchings 2019-03-10 23:02:13 -07:00
parent 2b4a01410b
commit 11b93d0771
3 changed files with 82 additions and 89 deletions

View file

@ -0,0 +1,47 @@
package mage.client.game;
import mage.client.components.KeyboundButton;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.function.Consumer;
public class FirstButtonMousePressedAction extends MouseAdapter {
private final Consumer<MouseEvent> callback;
private boolean inside = false;
public FirstButtonMousePressedAction(Consumer<MouseEvent> callback) {
this.callback = callback;
}
@Override
public void mousePressed(MouseEvent e) {
if (e.getSource() instanceof KeyboundButton) {
KeyboundButton button = (KeyboundButton) e.getSource();
button.setPressing(true);
}
}
@Override
public void mouseReleased(MouseEvent e) {
if (e.getSource() instanceof KeyboundButton) {
KeyboundButton button = (KeyboundButton) e.getSource();
button.setPressing(false);
}
if (e.getButton() == MouseEvent.BUTTON1 && inside) {
callback.accept(e);
}
}
@Override
public void mouseEntered(MouseEvent e) {
inside = true;
}
@Override
public void mouseExited(MouseEvent e) {
inside = false;
}
}