• Reservation.java
    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());
    			} 
    		}
    	}
    }