From f49e1b8f5fc491ad63f8a640a404299d57dd0e1a Mon Sep 17 00:00:00 2001 From: Enrico Joerns Date: Tue, 4 Nov 2014 01:42:46 +0100 Subject: [PATCH] Button: Allow to press and release button by mouse and key In the previous implementation a click event was triggered when the button was pressed. This implementation allows to set and release buttons independently both by mouse clicking and by key typing. --- .../contikios/cooja/interfaces/Button.java | 56 +++++++++++++++++-- 1 file changed, 50 insertions(+), 6 deletions(-) diff --git a/tools/cooja/java/org/contikios/cooja/interfaces/Button.java b/tools/cooja/java/org/contikios/cooja/interfaces/Button.java index f04b81e8b..b32cfe315 100644 --- a/tools/cooja/java/org/contikios/cooja/interfaces/Button.java +++ b/tools/cooja/java/org/contikios/cooja/interfaces/Button.java @@ -1,4 +1,5 @@ /* + * Copyright (c) 2014, TU Braunschweig. * Copyright (c) 2006, Swedish Institute of Computer Science. * All rights reserved. * @@ -30,8 +31,10 @@ package org.contikios.cooja.interfaces; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.util.Collection; import javax.swing.JButton; import javax.swing.JPanel; @@ -129,11 +132,52 @@ public abstract class Button extends MoteInterface { final JButton clickButton = new JButton("Click button"); panel.add(clickButton); - - clickButton.addActionListener(new ActionListener() { + + clickButton.addMouseListener(new MouseAdapter() { @Override - public void actionPerformed(ActionEvent e) { - clickButton(); + public void mousePressed(MouseEvent e) { + sim.invokeSimulationThread(new Runnable() { + + @Override + public void run() { + doPressButton(); + } + }); + } + + @Override + public void mouseReleased(MouseEvent e) { + sim.invokeSimulationThread(new Runnable() { + + @Override + public void run() { + doReleaseButton(); + } + }); + } + }); + + clickButton.addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(KeyEvent e) { + sim.invokeSimulationThread(new Runnable() { + + @Override + public void run() { + doPressButton(); + } + }); + } + + @Override + public void keyReleased(KeyEvent e) { + sim.invokeSimulationThread(new Runnable() { + + @Override + public void run() { + doReleaseButton(); + } + }); } });