// program to create a safe with 4 digit codes
// Autor Chris IOAKIM
// dated 20/01/2002

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.applet.*;

public class Safe extends JApplet implements ActionListener
{
	private JButton button[];
	private TextField code;
	private Label label;
	private int comb;
	private int number;
	private Panel panel1, panel2;
	private String status;
	private String entered;
	
	public void init()
	{
		Container cp = getContentPane();
		panel1 = new Panel();
		cp.add(panel1,"North");
		label = new Label("CLOSED");
		panel1.add(label); // add the label to the pane 
		label.setAlignment(Label.LEFT);  // set label label to the left
		
		//text field 
		code = new TextField(20);
		//code.setEditable(false);
		panel1.add(code);
		
		panel2 = new Panel();
		cp.add(panel2,"Center");
		
		// set grid layout for panel2
		
		panel2.setLayout(new GridLayout(4,3,5,5));
		button = new JButton[13];
		
		int i=0;
		for (i=0;i<10;i+=1)
		{
			// array buttons
			button[i] = new JButton(Integer.toString(i));
			panel2.add(button[i]);
			button[i].addActionListener(this);
		
		}	
		button[10] = new JButton("CLOSE");
		button[10] .setForeground(Color.red);
		button[10].addActionListener(this);
		
		button[11] = new JButton("OPEN");
		button[11] .setForeground(Color.red);
		button[11].addActionListener(this);
		
		button[12] = new JButton("NEW CODE");
		button[12] .setForeground(Color.red);
		button[12].addActionListener(this);	
		
		// add remaining buttons to the layout
		
		panel2.add(button[10]);
		panel2.add(button[11]);	
		panel2.add(button[12]);
		
	} // end the naming and positioning of the buttons on the screen 
	
	public void actionPerformed(ActionEvent e)
	{
		// checks if the buttons are pressed
		String a;
		int num1,num2,num3,num4;
		int j;
		int tries = 6;
		int total = 0;
		String passcode = "1234";
		String entered="";
		int n;
		num2 = 1000;
		num3=0;
		if (total<4)
		{	
			for (j=0;j<10;j+=1)
			{
				
				if (e.getSource()==button[10])
				{
					num1=j;
					num3=num1*num2+num3;
					num2=num2/10;
					total+=1;
					a=Integer.toString(num3);
					code.setText(a);
				}
					
			}
		entered=Integer.toString(num3);
		code.setText(entered);	
		}
		else
		{	
			label = new Label("LOCKED AND ALARMED");
			panel1.add(label); // add the label to the pane 
			tries = 4;
			code.setText(entered);
		}
		
		if(e.getSource()==button[10])
		{
			label = new Label("CLOSED");
			panel1.add(label); // add the label to the pane 
			passcode = passcode;
			total =0;
		}
		
		if(e.getSource()==button[11])
		{
			if (tries>0)
			{
				
				if ( entered == passcode )
				{
					label = new Label("OPEN");
					panel1.add(label); // add the label to the pane 
					tries = 6;
					total = 0;
				}
				else 
				{
					tries = tries - 1;
					code.setText("Incorrect code");
					label = new Label("CLOSED");
					panel1.add(label); // add the label to the pane 
					total = 0;
				}
			}	
			else
			{
				label = new Label("ALARMED AND LOCKED");
				panel1.add(label); // add the label to the pane 
				code.setText("Enter new code");
			}
						
		}
		
		if(e.getSource()==button[12]);
		{
			entered="";
			total = 0;
			while (total<4)
			{
			for (j=0;j<10;j+=1)
			{
				
				if (e.getSource()==button[10])
				{
					num1=j;
					num3=num1*num2+num3;
					num2=num2/10;
					total+=1;
				}
					
			}
			entered=Integer.toString(num3);
			code.setText(entered);
			}
			passcode = entered;
			tries = 6;
			total = 0;
			label = new Label("CLOSED");
			panel1.add(label); // add the label to the pane 
		}
	}//ends action performed
}// ends			
												