package madsdf.shimmer.gui; import java.awt.Toolkit; import java.util.Arrays; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.DefaultComboBoxModel; import javax.swing.JFrame; import static com.google.common.base.Preconditions.*; import java.awt.BorderLayout; import javax.swing.JLabel; /** * This is the main class of the application. The design has been realised with * the Netbeans graphic tool. * * Java version : JDK 1.6.0_21 IDE : Netbeans 7.1.1 * * @author Gregoire Aubert * @version 1.0 */ public class ShimmerMoveAnalyzerFrame extends JFrame { private final static String PREFS_DEVICES = "btDevicesIDs"; private static final long serialVersionUID = 1L; private final Logger log = Logger.getLogger(ShimmerMoveAnalyzerFrame.class.getName()); private ShimmerDataPanel dataPanel = null; /** * Creates new form ShimmerMoveAnalyzerFrame * * @param args The numbers of commands and samples can be passed via the * console parameters. */ public ShimmerMoveAnalyzerFrame(String title, String defaultID, String[] allIDs) { initComponents(); setTitle(title); btIDCombo.setModel(new DefaultComboBoxModel(allIDs)); final int defaultIndex = Arrays.asList(allIDs).indexOf(defaultID); checkState(defaultIndex >= 0, "defaultID must be in allIDs"); btIDCombo.setSelectedIndex(defaultIndex); connect(); } private void connect() { checkState(dataPanel == null); connectButton.setText("Disconnect"); btIDCombo.setEnabled(false); final String btid = (String)btIDCombo.getSelectedItem(); dataPanel = new ShimmerDataPanel(btid); mainPanel.removeAll(); mainPanel.add(dataPanel, BorderLayout.CENTER); } private void disconnect() { // Disconnect try { dataPanel.shutdown(); } catch (Exception e) { Logger.getLogger(ShimmerMoveAnalyzerFrame.class.getName()).log(Level.SEVERE, null, e); } mainPanel.removeAll(); mainPanel.add(new JLabel("Disconnected"), BorderLayout.CENTER); dataPanel = null; connectButton.setText("Connect"); btIDCombo.setEnabled(true); } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { jPanelConnect = new javax.swing.JPanel(); jLabel9 = new javax.swing.JLabel(); btIDCombo = new javax.swing.JComboBox(); connectButton = new javax.swing.JButton(); mainPanel = new javax.swing.JPanel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Graph accelerometer / gyro"); setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("shimmer_icon.png"))); setMinimumSize(new java.awt.Dimension(500, 400)); setName("frmShimmerMoveAnalyzer"); // NOI18N setPreferredSize(new java.awt.Dimension(400, 400)); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { formWindowClosing(evt); } }); jLabel9.setText("BT ID :"); btIDCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); connectButton.setText("Connect"); connectButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { connectButtonActionPerformed(evt); } }); javax.swing.GroupLayout jPanelConnectLayout = new javax.swing.GroupLayout(jPanelConnect); jPanelConnect.setLayout(jPanelConnectLayout); jPanelConnectLayout.setHorizontalGroup( jPanelConnectLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelConnectLayout.createSequentialGroup() .addContainerGap() .addComponent(jLabel9) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(btIDCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(connectButton) .addContainerGap(293, Short.MAX_VALUE)) ); jPanelConnectLayout.setVerticalGroup( jPanelConnectLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanelConnectLayout.createSequentialGroup() .addContainerGap() .addGroup(jPanelConnectLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel9) .addComponent(btIDCombo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(connectButton)) .addContainerGap(17, Short.MAX_VALUE)) ); mainPanel.setLayout(new java.awt.BorderLayout()); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(mainPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanelConnect, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addComponent(jPanelConnect, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(mainPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 455, Short.MAX_VALUE) .addContainerGap()) ); pack(); }// </editor-fold>//GEN-END:initComponents private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing if (dataPanel != null) { dataPanel.shutdown(); } }//GEN-LAST:event_formWindowClosing private void connectButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_connectButtonActionPerformed if (dataPanel == null) { connect(); } else { disconnect(); } }//GEN-LAST:event_connectButtonActionPerformed /** * @param args the command line arguments */ public static void main(final String args[]) { /* * Set the Nimbus look and feel */ //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* * If Nimbus (introduced in Java SE 6) is not available, stay with the * default look and feel. For details see * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { boolean nimbus = false; for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); nimbus = true; break; } } if (!nimbus || System.getProperty("os.name").toLowerCase().indexOf("win") >= 0) { javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName()); } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(ShimmerMoveAnalyzerFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(ShimmerMoveAnalyzerFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(ShimmerMoveAnalyzerFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(ShimmerMoveAnalyzerFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* * Create and display the form */ // TODO: Get that from properties file final String btid = "BDCD"; //final String btid = "9EDB"; final String[] allbtid = new String[]{"9EDB", "B3FB", "B4D5", "B5EE", "B414", "BCAD", "BD62", "BD89", "BDB2", "BDCD", "BDFA"}; java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new ShimmerMoveAnalyzerFrame("Shimmer", btid, allbtid).setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JComboBox btIDCombo; private javax.swing.JButton connectButton; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanelConnect; private javax.swing.JPanel mainPanel; // End of variables declaration//GEN-END:variables }