001: import java.awt.*;
002: import java.awt.event.*;
003: import javax.swing.*;
004:
005: /**
006: Presents a phone GUI for the voice mail system.
007: */
008: public class Telephone
009: {
010: /**
011: Constructs a telephone with a speaker, keypad,
012: and microphone.
013: */
014: public Telephone()
015: {
016:
017: JPanel speakerPanel = new JPanel();
018: speakerPanel.setLayout(new BorderLayout());
019: speakerPanel.add(new JLabel("Speaker:"),
020: BorderLayout.NORTH);
021: speakerField = new JTextArea(10, 25);
022: speakerPanel.add(speakerField,
023: BorderLayout.CENTER);
024:
025: String keyLabels = "123456789*0#";
026: JPanel keyPanel = new JPanel();
027: keyPanel.setLayout(new GridLayout(4, 3));
028: for (int i = 0; i < keyLabels.length(); i++)
029: {
030: final String label = keyLabels.substring(i, i + 1);
031: JButton keyButton = new JButton(label);
032: keyPanel.add(keyButton);
033: keyButton.addActionListener(new
034: ActionListener()
035: {
036: public void actionPerformed(ActionEvent event)
037: {
038: connect.dial(label);
039: }
040: });
041: }
042:
043: final JTextArea microphoneField = new JTextArea(10, 25);
044:
045: JButton speechButton = new JButton("Send speech");
046: speechButton.addActionListener(new
047: ActionListener()
048: {
049: public void actionPerformed(ActionEvent event)
050: {
051: connect.record(microphoneField.getText());
052: microphoneField.setText("");
053: }
054: });
055:
056: JButton hangupButton = new JButton("Hangup");
057: hangupButton.addActionListener(new
058: ActionListener()
059: {
060: public void actionPerformed(ActionEvent event)
061: {
062: connect.hangup();
063: }
064: });
065:
066: JPanel buttonPanel = new JPanel();
067: buttonPanel.add(speechButton);
068: buttonPanel.add(hangupButton);
069:
070: JPanel microphonePanel = new JPanel();
071: microphonePanel.setLayout(new BorderLayout());
072: microphonePanel.add(new JLabel("Microphone:"),
073: BorderLayout.NORTH);
074: microphonePanel.add(microphoneField,
075: BorderLayout.CENTER);
076: microphonePanel.add(buttonPanel,
077: BorderLayout.SOUTH);
078:
079: JFrame frame = new JFrame();
080: frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
081: Container contentPane = frame.getContentPane();
082: contentPane.add(speakerPanel,
083: BorderLayout.NORTH);
084: contentPane.add(keyPanel,
085: BorderLayout.CENTER);
086: contentPane.add(microphonePanel,
087: BorderLayout.SOUTH);
088:
089: frame.pack();
090: frame.show();
091: }
092:
093: /**
094: Give instructions to the mail system user.
095: */
096: public void speak(String output)
097: {
098: speakerField.setText(output);
099: }
100:
101: public void run(Connection c)
102: {
103: connect = c;
104: }
105:
106: private JTextArea speakerField;
107: private Connection connect;
108: }