/*
Chapter 5:
Reserve a Party Room
Programmer:
Brad Shedd
Date:
June 5, 2006
Filename:
Reservations.java
Purpose:
This program creates a windowed
application to reserve a party room. It calls an external class named Rooms.
*/
import javax.swing.JOptionPane;
import java.awt.*;
import java.awt.event.*;
public
class
Reservations
extends Frame
implements
ActionListener
{
Color lightRed =
new
Color(255, 90, 90);
Color lightGreen =
new
Color(140, 215, 40);
Rooms room =
new
Rooms(5,3);
Panel roomPanel =
new
Panel();
TextArea
roomDisplay[] =
new
TextArea[9];
Panel buttonPanel =
new
Panel();
Button
bookButton =
new
Button("Book Room");
Panel inputPanel =
new
Panel();
Label
custNameLabel =
new
Label("Name:");
TextField
nameField =
new
TextField(15);
Label
custPhoneLabel =
new
Label("Phone number:");
TextField
phoneField =
new
TextField(15);
Label
numLabel =
new
Label("Number in party:");
Choice
numberOfGuests =
new
Choice();
CheckboxGroup options =
new
CheckboxGroup();
Checkbox nonSmoking =
new
Checkbox("Nonsmoking",false,options);
Checkbox smoking =
new
Checkbox("Smoking",false,options);
Checkbox hidden =
new
Checkbox("",true,options);
public
Reservations()
{
//set
Layouts for frame and three panels
this.setLayout(new
BorderLayout());
roomPanel.setLayout(new
GridLayout(2,4,10,10));
buttonPanel.setLayout(new
FlowLayout());
inputPanel.setLayout(new
FlowLayout());
//add
components to room panel
for
(int i=1; i<9; i++)
{
roomDisplay[i] =
new
TextArea(null,3,5,3);
if
(i<6)
roomDisplay[i].setText("Room
" + i +
" Nonsmoking");
else
roomDisplay[i].setText("Room "
+ i +
" Smoking");
roomDisplay[i].setEditable(false);
roomDisplay[i].setBackground(lightGreen);
roomPanel.add(roomDisplay[i]);
}
//add
components to button panel
buttonPanel.add(bookButton);
//add
components to input panel
inputPanel.add(custNameLabel);
inputPanel.add(nameField);
inputPanel.add(custPhoneLabel);
inputPanel.add(phoneField);
inputPanel.add(numLabel);
inputPanel.add(numberOfGuests);
for(int
i = 8; i<=20; i++)
numberOfGuests.add(String.valueOf(i));
inputPanel.add(nonSmoking);
inputPanel.add(smoking);
//add panels
to frame
add(buttonPanel, BorderLayout.SOUTH);
add(inputPanel, BorderLayout.CENTER);
add(roomPanel, BorderLayout.NORTH);
bookButton.addActionListener(this);
//Overriding
the windowClosing() method will allow the user to click the Close button
addWindowListener(
new
WindowAdapter()
{
public
void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
}
//end of
constructor method
public
static
void
main(String[] args)
{
Reservations f =
new
Reservations();
f.setBounds(200,200,600,300);
f.setTitle("Reserve
a Party Room");
f.setVisible(true);
}
//end of
main
public
void actionPerformed(ActionEvent e)
{
if
(hidden.getState())
{
JOptionPane.showMessageDialog(null,"You
must select Nonsmoking or Smoking.","Error",
JOptionPane.ERROR_MESSAGE);
}
else
{
int
available = room.bookRoom(smoking.getState());
if
(available > 0)
//room is available
{
roomDisplay[available].setBackground(lightRed);
//display room as occupied
roomDisplay[available].setText(
roomDisplay[available].getText() +
"\n"
+
nameField.getText() +
" "+
phoneField.getText() +
"\nparty of " +
numberOfGuests.getSelectedItem()
);
//display info in room
clearFields();
}
else
//room is not available
{
if
(smoking.getState())
JOptionPane.showMessageDialog(null,"Smoking
is full.","Error",JOptionPane.INFORMATION_MESSAGE);
else
JOptionPane.showMessageDialog(null,"Nonsmoking
is full.","Error",JOptionPane.INFORMATION_MESSAGE);
hidden.setState(true);
}
//end
of else block that checks the available room number
}
//end of else block that checks the state of the hidden option button
}
// end of actionPerformed() method
//reset the
text fields and chice component
void
clearFields()
{
nameField.setText("");
phoneField.setText("");
numberOfGuests.select(0);
nameField.requestFocus();
hidden.setState(true);
}
//end of
clearFeilds() method
}
//end of Reservations class