import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PhoneAPP extends JApplet implements ActionListener {
Container container;
TextArea screen;
Button[] button;
Panel keyPanel;
Panel opsPad;
Checkbox addBox;
Checkbox deleteBox;
Checkbox listBox;
String[] phoneBook;
public static void main(String[] args) {
JFrame jFrame = new JFrame("myPhone");
PhoneAPP application = new PhoneAPP();
jFrame.getContentPane().add(application);
jFrame.setSize( 200, 270 );
jFrame.setVisible( true );
jFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
public PhoneAPP(){
phoneBook = new String[5];
for (int i=0; i < phoneBook.length; i++){
phoneBook[i]=null;
}
screen = new TextArea("",5,20,TextArea.SCROLLBARS_NONE);
CheckboxGroup ops = new CheckboxGroup();
opsPad = new Panel(new GridLayout(1,3));
addBox = new Checkbox("Add", ops, true);
deleteBox = new Checkbox("Delete", ops, false);
listBox = new Checkbox("List", ops, false);
opsPad.add(addBox);
opsPad.add(deleteBox);
opsPad.add(listBox);
keyPanel = new Panel(new GridLayout(5,3));
button = new Button[15];
for (int i = 0; i < 10; i++){
button[i] = new Button(""+i);
}
button[10] = new Button("*");
button[11] = new Button("#");
button[12] = new Button("send");
button[13] = new Button("end");
button[14] = new Button("Dir");
keyPanel.add(button[12]); keyPanel.add(button[14]); keyPanel.add(button[13]);
for (int i = 1; i < 10; i++){
keyPanel.add(button[i]);
}
keyPanel.add(button[10]); keyPanel.add(button[0]); keyPanel.add(button[11]);
container = getContentPane();
container.add(screen, BorderLayout.NORTH);
container.add(opsPad);
container.add(keyPanel,BorderLayout.SOUTH);
for (int i = 0; i < button.length; i++){
button[i].addActionListener(this);
}
}
public void actionPerformed(ActionEvent ae) {
char[] screenText = new char[100];
screenText[0]=' ';
for (int i = 1; i < screenText.length;i++) {
screenText[i]=(i%20==0?'\n':' ');
}
StringBuffer screenBuffer = new StringBuffer(new String(screenText));
if (ae.getSource().equals(button[14])) {
if (addBox.getState()) {
int i = 0;
while (i < phoneBook.length && phoneBook[i] != null){ i++;}
if (i == phoneBook.length){
screen.setText("Directory Full");
} else phoneBook[i]=screen.getText();
} else if (deleteBox.getState()) {
int i = 0;
while (i < phoneBook.length &&
(phoneBook[i] == null || !phoneBook[i].equals(screen.getText()) )){ i++;}
if (i == phoneBook.length){
screen.setText("No matching entry");
} else {
screen.setText("entry " + i + " deleted");
phoneBook[i]=null;
}
} else {
String st = "";
for (int i=0; i < phoneBook.length; i++){
if (phoneBook[i] != null)
st+=phoneBook[i]+"\n";
}
screen.setText(st);
}
} else if (ae.getSource().equals(button[12])
|| ae.getSource().equals(button[13])) {
screen.setText("");
} else {
String st = (screen.getText().equals("")?screenBuffer.toString():screen.getText());
int i;
for (i = 0;
i < st.length() &&
((st.charAt(i) == ' ') || (st.charAt(i) == '\n'));i++);
if (i == st.length()) {
screen.setText(screenBuffer.replace(i-1,st.length(),ae.getActionCommand()).toString());
} else if (i > 81) {
screen.setText(screenBuffer.replace(i-1,st.length(),st.substring(i,st.length()).concat(ae.getActionCommand())).toString());
} else if (i == 81){
screenBuffer = screenBuffer.replace(i-2,80,st.substring(i,82));
screen.setText(screenBuffer.replace(81,st.length(),st.substring(82,st.length()).concat(ae.getActionCommand())).toString());
} else if (i >61){
screenBuffer = screenBuffer.replace(i-1,80,st.substring(i,80).concat(st.substring(81,82)));
screen.setText(screenBuffer.replace(81,st.length(),st.substring(82,st.length()).concat(ae.getActionCommand())).toString());
} else if (i == 61){
screenBuffer = screenBuffer.replace(i-2,60,st.substring(i,62));
screenBuffer = screenBuffer.replace(61,80,st.substring(62,80).concat(st.substring(81,82)));
screen.setText(screenBuffer.replace(81,st.length(),st.substring(82,st.length()).concat(ae.getActionCommand())).toString());
} else if (i >41){
screenBuffer = screenBuffer.replace(i-1,60,st.substring(i,60).concat(st.substring(61,62)));
screenBuffer = screenBuffer.replace(61,80,st.substring(62,80).concat(st.substring(81,82)));
screen.setText(screenBuffer.replace(81,st.length(),st.substring(82,st.length()).concat(ae.getActionCommand())).toString());
} else if (i == 41){
screenBuffer = screenBuffer.replace(i-2,40,st.substring(i,42));
screenBuffer = screenBuffer.replace(41,60,st.substring(42,60).concat(st.substring(61,62)));
screenBuffer = screenBuffer.replace(61,80,st.substring(62,80).concat(st.substring(81,82)));
screen.setText(screenBuffer.replace(81,st.length(),st.substring(82,st.length()).concat(ae.getActionCommand())).toString());
} else if (i > 21){
screenBuffer = screenBuffer.replace(i-1,40,st.substring(i,40).concat(st.substring(41,42)));
screenBuffer = screenBuffer.replace(41,60,st.substring(42,60).concat(st.substring(61,62)));
screenBuffer = screenBuffer.replace(61,80,st.substring(62,80).concat(st.substring(81,82)));
screen.setText(screenBuffer.replace(81,st.length(),st.substring(82,st.length()).concat(ae.getActionCommand())).toString());
}
}
}
}