/* * Copyright 2008 motej * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package motej.demos.balanceboard; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities; import motej.Mote; import motej.MoteFinder; import motej.MoteFinderListener; import motej.event.CoreButtonEvent; import motej.event.CoreButtonListener; import motej.request.ReportModeRequest; import motejx.extensions.balanceboard.BalanceBoard; /** * * <p> * @author <a href="mailto:vfritzsch@users.sourceforge.net">Volker Fritzsch</a> */ public class BalanceBoardGUI { private JFrame frame; private Mote mote; private MoteFinderListener moteFinderListener = new MoteFinderListener() { public void moteFound(final Mote m) { System.out.println("Found mote!"); mote = m; mote.setPlayerLeds(new boolean[] { true, false, false, false }); mote.addCoreButtonListener(new CoreButtonListener() { public void buttonPressed(CoreButtonEvent evt) { System.out.println("Button pressed: " + evt.getButton()); } }); } }; private Action findBalanceBoardAction = new AbstractAction("Find Balance Board") { public void actionPerformed(ActionEvent e) { MoteFinder finder = MoteFinder.getMoteFinder(); finder.addMoteFinderListener(moteFinderListener); finder.startDiscovery(); } }; private Action statusInformationAction = new AbstractAction("Status Information") { public void actionPerformed(ActionEvent e) { final StatusInformationReportPanel statusInformationReportPanel = new StatusInformationReportPanel(mote); SwingUtilities.invokeLater(new Runnable() { public void run() { frame.getContentPane().add(statusInformationReportPanel.getPanel(), BorderLayout.WEST); frame.pack(); } }); } }; private Action moteCalibrationAction = new AbstractAction("Mote Calibration") { public void actionPerformed(ActionEvent e) { final CalibrationDataReportPanel p = new CalibrationDataReportPanel(mote.getCalibrationDataReport()); SwingUtilities.invokeLater(new Runnable() { public void run() { frame.getContentPane().add(p.getPanel(), BorderLayout.EAST); frame.pack(); } }); } }; private Action bbCalibrationAction = new AbstractAction("Balance Board Calibration") { public void actionPerformed(ActionEvent e) { final BalanceBoardCalibrationDataPanel p = new BalanceBoardCalibrationDataPanel(mote.<BalanceBoard>getExtension().getCalibrationData()); SwingUtilities.invokeLater(new Runnable() { public void run() { frame.getContentPane().add(p.getPanel(), BorderLayout.SOUTH); frame.pack(); } }); } }; private Action bbListenerAction = new AbstractAction("Balance Board Listener") { public void actionPerformed(ActionEvent e) { final BalanceBoardListenerPanel p = new BalanceBoardListenerPanel(mote.<BalanceBoard>getExtension()); SwingUtilities.invokeLater(new Runnable() { public void run() { frame.getContentPane().add(p.getPanel(), BorderLayout.CENTER); frame.pack(); } }); } }; protected Action report0x32Action = new AbstractAction("Report: 0x32") { public void actionPerformed(ActionEvent arg0) { mote.setReportMode(ReportModeRequest.DATA_REPORT_0x32); }; }; protected Action graphicalPanelAction = new AbstractAction("Graphical Panel") { public void actionPerformed(ActionEvent e) { final BalanceBoardGraphicalPanel p1 = new BalanceBoardGraphicalPanel(mote.<BalanceBoard>getExtension()); final BalanceBoardListenerPanel p2 = new BalanceBoardListenerPanel(mote.<BalanceBoard>getExtension()); SwingUtilities.invokeLater(new Runnable() { public void run() { JPanel tmp = new JPanel(new GridLayout(2,1)); tmp.add(p1.getPanel()); tmp.add(p2.getPanel()); frame.getContentPane().add(tmp, BorderLayout.CENTER); frame.pack(); } }); } }; public BalanceBoardGUI() { initGUI(); } private JPanel buttonPanel = new JPanel(new FlowLayout()); protected void initGUI() { buttonPanel.add(new JButton(findBalanceBoardAction)); buttonPanel.add(new JButton(statusInformationAction)); buttonPanel.add(new JButton(moteCalibrationAction)); buttonPanel.add(new JButton(bbCalibrationAction)); buttonPanel.add(new JButton(bbListenerAction)); buttonPanel.add(new JButton(graphicalPanelAction)); buttonPanel.add(new JButton(report0x32Action)); frame = new JFrame("motej BalanceBoard GUI"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setLayout(new BorderLayout()); frame.getContentPane().add(buttonPanel, BorderLayout.NORTH); frame.pack(); frame.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new BalanceBoardGUI(); } }); } }