/*
* jPhoneMicro.java
*
* Created on Mar 22, 2010, 6:31:03 PM
*
* @author pquiring@gmail.com
*
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
import javaforce.*;
import javaforce.voip.*;
/** jphonelite Panel */
public class PhoneMicro extends BasePhone implements MeterController, GUI {
public String number = ""; //forced number to always dial
/** Creates new form jPhoneMicro */
public PhoneMicro(WindowController wc, String number) {
try {
this.number = number;
initBasePhone(this, wc);
Settings.isApplet = true;
initComponents();
init();
//must set focus to something or VK_BACK_SPACE beeps
SwingUtilities.invokeLater(new Runnable(){
public void run(){
call.requestFocusInWindow(); //must be called from EDT or when window is visible
}
});
} catch (Exception e) {
JFLog.log("Error:" + e);
}
}
/** 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() {
shareDesktopMenu = new javax.swing.JPopupMenu();
shareDesktopViewOnly = new javax.swing.JMenuItem();
shareDesktopRemoteControl = new javax.swing.JMenuItem();
call = new javax.swing.JToggleButton();
end = new javax.swing.JToggleButton();
status = new javax.swing.JTextField();
logo = new javax.swing.JLabel();
shareDesktopViewOnly.setText("Share Desktop (view only)");
shareDesktopMenu.add(shareDesktopViewOnly);
shareDesktopRemoteControl.setText("Share Desktop (remote control)");
shareDesktopMenu.add(shareDesktopRemoteControl);
setLayout(null);
call.setText("Call");
call.setFocusCycleRoot(true);
call.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
callActionPerformed(evt);
}
});
add(call);
call.setBounds(10, 40, 70, 50);
end.setText("End");
end.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
endActionPerformed(evt);
}
});
add(end);
end.setBounds(210, 40, 70, 50);
status.setEditable(false);
add(status);
status.setBounds(10, 10, 270, 20);
logo.setText(".");
add(logo);
logo.setBounds(80, 30, 130, 70);
}// </editor-fold>//GEN-END:initComponents
private void callActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_callActionPerformed
selectLine(0);
lines[0].dial = number;
call();
}//GEN-LAST:event_callActionPerformed
private void endActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_endActionPerformed
end();
}//GEN-LAST:event_endActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JToggleButton call;
private javax.swing.JToggleButton end;
private javax.swing.JLabel logo;
private javax.swing.JPopupMenu shareDesktopMenu;
private javax.swing.JMenuItem shareDesktopRemoteControl;
private javax.swing.JMenuItem shareDesktopViewOnly;
private javax.swing.JTextField status;
// End of variables declaration//GEN-END:variables
/** Init panel variables. */
public void init() {
loadIcons();
Settings.loadSettings();
setFonts();
wc.setPanelAlwaysOnTop(Settings.current.alwaysOnTop);
JFLog.setEnabled(!Settings.current.disableLogging);
JFLog.log("jphonelite/" + version);
updateContactList();
updateRecentList();
lines = new PhoneLine[6];
for(int a=0;a<6;a++) {
lines[a] = new PhoneLine();
}
//set PICs
call.setText("");
call.setIcon(ii[PIC_CALL]);
// call.setPressedIcon(ii[PIC_CALL2]);
call.setSelectedIcon(ii[PIC_CALL2]);
end.setText("");
end.setIcon(ii[PIC_END]);
// end.setPressedIcon(ii[PIC_END2]);
end.setSelectedIcon(ii[PIC_END2]);
logo.setText("");
logo.setIcon(ii[PIC_LOGO]);
keepAliveinit();
boolean sound_init = sound.init(lines, this);
setScales(); //requires sound.init()
new Thread() {
public void run() {
reRegisterAll();
}
}.start();
if (!sound_init) {
JOptionPane.showMessageDialog(this,
"No compatible sound found",
"Warning",
JOptionPane.INFORMATION_MESSAGE);
}
}
/** MeterController : Sets the recording level on the display meter. */
public void setMeterRec(int lvl) {}
/** MeterController : Sets the playback level on the display meter. */
public void setMeterPlay(int lvl) {}
/** MeterController : Sets the speaker mic status (green=true red=false). */
public void setSpeakerStatus(boolean state) {
}
public void setScales() {
if (sound.isSWVolRec()) {
sound.setVolRec(75);
} else {
sound.setVolRec(100);
}
if (sound.isSWVolPlay()) {
sound.setVolPlay(75);
} else {
sound.setVolPlay(100);
}
}
/** Select a new line. */
public void selectLine(int newline) {
//make sure line is valid
if ((line != -1) && (lines[line].dtmf != 'x')) lines[line].dtmfend = true;
line = newline;
if (line == -1) {
status.setText("");
return;
}
sound.selectLine(line);
updateLine();
}
/** Update the number to be dialed, status and buttons for current selected line. */
public void updateLine() {
end.setSelected(false);
if (lines[line].incall) {
call.setSelected(true);
} else {
call.setSelected(false);
}
status.setText(lines[line].status);
}
public void updateCallButton(boolean state) {
call.setSelected(state);
}
public void updateEndButton(boolean state) {
end.setSelected(state);
}
public void endLineUpdate(int xline) {
}
public void callInviteUpdate() {
}
/** Sets a contacts icon status when received from a NOTIFY message. */
public void setStatus(String number, String server, String status) {
}
/** Updates contact list after a change. */
public void updateContactList() {
}
/** Update recent lists after a change. */
public void updateRecentList() {
}
public void hld_setIcon(ImageIcon ii) {
}
public void aa_setIcon(ImageIcon ii) {
}
public void ac_setIcon(ImageIcon ii) {
}
public void dnd_setIcon(ImageIcon ii) {
}
public void cnf_setIcon(ImageIcon ii) {
}
public void mute_setIcon(ImageIcon ii) {
}
public void spk_setIcon(ImageIcon ii) {
}
public void setFonts() {
// JFLog.log("Font name= " + l1.getFont().getName() + ",stype=" + l1.getFont().getStyle() + ",size=" + l1.getFont().getSize() );
//sets font sizes for all buttons
int small = 10;
int large = 12; //default size
if (Settings.current.smallerFont) {
small -= 2;
large -= 2;
}
Font smallFont = new java.awt.Font("Dialog", 0, small);
Font largeFont = new java.awt.Font("Dialog", 0, large);
}
public void onRegister(SIPClient sip) {
}
public void rtp_jpeg_receive(RTPChannel rtp, byte data[], int pos, int len) {}
public void rtp_h263_receive(RTPChannel rtp, byte data[], int pos, int len) {}
public void rtp_h263_1998_receive(RTPChannel rtp, byte data[], int pos, int len) {}
public void rtp_h263_2000_receive(RTPChannel rtp, byte data[], int pos, int len) {}
public void rtp_h264_receive(RTPChannel rtp, byte data[], int pos, int len) {}
public void rtp_vp8_receive(RTPChannel rtp, byte data[], int pos, int len) {}
public String getLineStatus() {
return status.getText();
}
public void doConfig() {}
}