| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- package control.button;
- import java.awt.Color;
- import java.awt.event.KeyEvent;
- import java.awt.event.KeyListener;
- import java.util.ArrayList;
- import java.util.List;
- import main.Window;
- import com.pi4j.io.gpio.GpioController;
- import com.pi4j.io.gpio.GpioFactory;
- import com.pi4j.io.gpio.GpioPinDigitalInput;
- import com.pi4j.io.gpio.PinState;
- import com.pi4j.io.gpio.RaspiPin;
- import com.pi4j.io.gpio.event.GpioPinDigitalStateChangeEvent;
- import com.pi4j.io.gpio.event.GpioPinListenerDigital;
- import control.NetworkHandler;
- public class ButtonHandler implements KeyListener{
- List<ButtonListener> listeners;
- static List<Button> buttons;
- NetworkHandler ntw;
-
- public ButtonHandler()
- {
- this.ntw = null;
-
- listeners = new ArrayList<ButtonListener>();
- buttons = new ArrayList<Button>();
-
- // if (Window.ON_RASP)
- // addGpioListeners();
-
- }
-
- private void addGpioListeners(){
- ArrayList<GpioPinDigitalInput> inputpins = new ArrayList<GpioPinDigitalInput>();
- final GpioController gpio = GpioFactory.getInstance();
-
- inputpins.add(gpio.provisionDigitalInputPin(RaspiPin.GPIO_02, "1")); //button 1 to 6 + start button
- inputpins.add(gpio.provisionDigitalInputPin(RaspiPin.GPIO_03, "2"));
- inputpins.add(gpio.provisionDigitalInputPin(RaspiPin.GPIO_13, "3"));
- inputpins.add(gpio.provisionDigitalInputPin(RaspiPin.GPIO_14, "4"));
- inputpins.add(gpio.provisionDigitalInputPin(RaspiPin.GPIO_00, "5"));
- inputpins.add(gpio.provisionDigitalInputPin(RaspiPin.GPIO_12, "6"));
- inputpins.add(gpio.provisionDigitalInputPin(RaspiPin.GPIO_06, "0"));
-
- for(GpioPinDigitalInput p:inputpins){
- p.addListener(new GpioPinListenerDigital() {
- @Override
- public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent e) {
- if(e.getState() == PinState.HIGH){
- buttonRelease(buttons.get(Integer.parseInt(e.getPin().getName())));
- System.out.println(e.getPin().getName() + " Released");
- }else{
- buttonPress(buttons.get(Integer.parseInt(e.getPin().getName())));
- System.out.println(e.getPin().getName() + " Pressed");
- }
- }
- });
- }
- }
- public void addButtonListener(ButtonListener toAdd) {
- listeners.add(toAdd);
- }
-
- public void buttonPress(Button b) {
- if(Window.ON_RASP)
- {
- Color c = b.getColor().brighter().brighter();
- ntw.setLed(b.getLedID(), c.getGreen(), c.getRed(), c.getBlue());
- ntw.show();
- }
- ButtonEvent e = new ButtonEvent(b, System.currentTimeMillis());
- for (ButtonListener bt : listeners)
- bt.buttonPressed(e);
- }
-
- public void buttonRelease(Button b) {
- if(Window.ON_RASP)
- {
- ntw.setLed(b.getLedID(), b.getColor().getGreen(), b.getColor().getRed(), b.getColor().getBlue());
- ntw.show();
- }
- ButtonEvent e = new ButtonEvent(b, System.currentTimeMillis());
- for (ButtonListener bt : listeners)
- bt.buttonReleased(e);
- }
-
- @Override
- public void keyPressed(KeyEvent e) {
- switch(e.getKeyCode())
- {
- case KeyEvent.VK_0:
- buttonPress(buttons.get(0));
- break;
- case KeyEvent.VK_1:
- buttonPress(buttons.get(1));
- break;
- case KeyEvent.VK_2:
- buttonPress(buttons.get(2));
- break;
- case KeyEvent.VK_3:
- buttonPress(buttons.get(3));
- break;
- case KeyEvent.VK_4:
- buttonPress(buttons.get(4));
- break;
- case KeyEvent.VK_5:
- buttonPress(buttons.get(5));
- break;
- case KeyEvent.VK_6:
- buttonPress(buttons.get(6));
- break;
- case KeyEvent.VK_ESCAPE:
- if(!Window.ON_RASP)
- System.exit(0);
- break;
- }
- }
- public void keyReleased(KeyEvent e) {
- switch(e.getKeyCode())
- {
- case KeyEvent.VK_0:
- buttonRelease(buttons.get(0));
- break;
- case KeyEvent.VK_1:
- buttonRelease(buttons.get(1));
- break;
- case KeyEvent.VK_2:
- buttonRelease(buttons.get(2));
- break;
- case KeyEvent.VK_3:
- buttonRelease(buttons.get(3));
- break;
- case KeyEvent.VK_4:
- buttonRelease(buttons.get(4));
- break;
- case KeyEvent.VK_5:
- buttonRelease(buttons.get(5));
- break;
- case KeyEvent.VK_6:
- buttonRelease(buttons.get(6));
- break;
- }
- }
- public void keyTyped(KeyEvent arg0) {}
-
- public static List<Button> getButtons()
- {
- return buttons;
- }
-
- public static Button getButton(int id)
- {
- for(Button b : buttons)
- {
- if(b.getButtonID() == id)
- {
- return b;
- }
- }
- return null;
- }
- public void setNetwork(NetworkHandler ntw) {
- this.ntw = ntw;
-
- buttons.add(new Button(0, -1, ntw));
- buttons.add(new Button(1, 2, ntw));
- buttons.add(new Button(2, 1, ntw));
- buttons.add(new Button(3, 0, ntw));
- buttons.add(new Button(4, -1, ntw));
- buttons.add(new Button(5, 3, ntw));
- buttons.add(new Button(6, 4, ntw));
- }
- }
|