/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* MainFrame.java
*
* Created on May 10, 2011, 4:39:39 PM
*/
package com.wordpress.salaboy.sensor.ui;
import com.wordpress.salaboy.context.tracking.ContextTrackingProvider;
import com.wordpress.salaboy.messaging.MessageConsumerWorker;
import com.wordpress.salaboy.messaging.MessageConsumerWorkerHandler;
import com.wordpress.salaboy.model.Emergency;
import com.wordpress.salaboy.model.messages.IncomingCallMessage;
import com.wordpress.salaboy.model.messages.VehicleDispatchedMessage;
import com.wordpress.salaboy.model.persistence.PersistenceServiceProvider;
import com.wordpress.salaboy.sensor.EmergencyInformationDataSource;
import com.wordpress.salaboy.sensor.SensorMessageProducer;
import java.awt.Color;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
/**
*
* @author esteban
*/
public class MainFrame extends javax.swing.JFrame implements EmergencyInformationDataSource {
private SensorMessageProducer sensorMessageProducer;
private MessageConsumerWorker phoneCallsWorker;
private MessageConsumerWorker vehicleDispatchedWorker;
private WiiConfigPanel wiiConfigPanel;
private UDPServerPanel uDPServerPanel;
/** Creates new form MainFrame */
public MainFrame() {
sensorMessageProducer = new SensorMessageProducer(this);
initComponents();
wiiConfigPanel = new WiiConfigPanel(sensorMessageProducer, true);
uDPServerPanel= new UDPServerPanel(sensorMessageProducer, true);
this.tpnlMain.add(wiiConfigPanel);
this.tpnlMain.add(uDPServerPanel);
this.tpnlMain.add(new KeySheetPanel());
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
stopWorkers();
}
});
}
/** 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() {
jPanel1 = new javax.swing.JPanel();
chkConnectToCore = new javax.swing.JCheckBox();
pnlConnectionStatus = new javax.swing.JPanel();
tpnlMain = new javax.swing.JTabbedPane();
jPanel3 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
cboCallId = new javax.swing.JComboBox();
jLabel2 = new javax.swing.JLabel();
cboVehicleId = new javax.swing.JComboBox();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Sensor Manager");
chkConnectToCore.setText("Connect To Core");
chkConnectToCore.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
chkConnectToCoreActionPerformed(evt);
}
});
pnlConnectionStatus.setBackground(new java.awt.Color(255, 0, 0));
pnlConnectionStatus.setBorder(javax.swing.BorderFactory.createEtchedBorder());
javax.swing.GroupLayout pnlConnectionStatusLayout = new javax.swing.GroupLayout(pnlConnectionStatus);
pnlConnectionStatus.setLayout(pnlConnectionStatusLayout);
pnlConnectionStatusLayout.setHorizontalGroup(
pnlConnectionStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 16, Short.MAX_VALUE)
);
pnlConnectionStatusLayout.setVerticalGroup(
pnlConnectionStatusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 15, Short.MAX_VALUE)
);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(chkConnectToCore)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(pnlConnectionStatus, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(268, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(pnlConnectionStatus, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(chkConnectToCore))
.addContainerGap(7, Short.MAX_VALUE))
);
jLabel1.setText("Call");
jLabel2.setText("Vehicle");
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addGap(6, 6, 6)
.addComponent(cboCallId, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cboVehicleId, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(243, Short.MAX_VALUE))
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(cboCallId, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2)
.addComponent(cboVehicleId, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(tpnlMain, javax.swing.GroupLayout.DEFAULT_SIZE, 450, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tpnlMain, javax.swing.GroupLayout.DEFAULT_SIZE, 302, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void chkConnectToCoreActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkConnectToCoreActionPerformed
pnlConnectionStatus.setBackground(Color.YELLOW);
if (chkConnectToCore.isSelected()){
this.stopWorkers();
this.initWorkers();
this.uDPServerPanel.setOfflineMode(false);
this.wiiConfigPanel.setOfflineMode(false);
pnlConnectionStatus.setBackground(Color.GREEN);
}else{
this.stopWorkers();
this.uDPServerPanel.setOfflineMode(true);
this.wiiConfigPanel.setOfflineMode(true);
pnlConnectionStatus.setBackground(Color.RED);
}
}//GEN-LAST:event_chkConnectToCoreActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new MainFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JComboBox cboCallId;
private javax.swing.JComboBox cboVehicleId;
private javax.swing.JCheckBox chkConnectToCore;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel pnlConnectionStatus;
private javax.swing.JTabbedPane tpnlMain;
// End of variables declaration//GEN-END:variables
private void initWorkers() {
//Phone Calls Worker
phoneCallsWorker = new MessageConsumerWorker("Sensor-IncomingCall", new MessageConsumerWorkerHandler<IncomingCallMessage>() {
@Override
public void handleMessage(IncomingCallMessage incomingCallMessage) {
String callId = incomingCallMessage.getEmergencyId();
cboCallId.addItem(callId);
//cboCallId.setSelectedItem(callId);
}
});
//Vehicle Dispatched
vehicleDispatchedWorker = new MessageConsumerWorker("Sensor-VehicleDispatched", new MessageConsumerWorkerHandler<VehicleDispatchedMessage>() {
@Override
public void handleMessage(VehicleDispatchedMessage vehicleDispatchedMessage) {
String vehicleId = vehicleDispatchedMessage.getVehicleId();
String callId = ContextTrackingProvider.getTrackingService().getCallAttachedToEmergency(vehicleDispatchedMessage.getEmergencyId());
Emergency emergency = PersistenceServiceProvider.getPersistenceService().loadEmergency(vehicleDispatchedMessage.getEmergencyId());
System.out.println("Emergency Type = "+emergency.getType());
if (emergency.getType() == Emergency.EmergencyType.HEART_ATTACK){
cboVehicleId.addItem(vehicleId);
cboVehicleId.setSelectedItem(vehicleId);
cboCallId.setSelectedItem(callId);
}
}
});
phoneCallsWorker.start();
vehicleDispatchedWorker.start();
}
private void stopWorkers() {
if(phoneCallsWorker != null ){
phoneCallsWorker.stopWorker();
phoneCallsWorker = null;
}
if(vehicleDispatchedWorker != null ){
vehicleDispatchedWorker.stopWorker();
vehicleDispatchedWorker = null;
}
}
@Override
public String getCallId() {
if (this.cboCallId.getSelectedIndex() == -1) {
return null;
}
return (String) this.cboCallId.getSelectedItem();
}
@Override
public String getVehicleId() {
if (this.cboVehicleId.getSelectedIndex() == -1) {
return null;
}
return (String) this.cboVehicleId.getSelectedItem();
}
}