public class Q3 implements ActionListener
{
JFrame addressBook;
JFrame contacts;
JList theList;
DefaultTableModel tableModel;
JLabel labFirstName, labLastName, labAddress, labPhone, labMob, searchTitle;
JTextField textFirstName, textLastName, textAddress, textPhone, textMob, contactsTextArea;
JButton buttonSave, buttonDelete, buttonImport, buttonSearch, buttonExit, buttonReset;
String name, address, allContacts;
int phone, mob;
int recordNumber; // used to naviagate using >> and << buttons
Container container1, container2;
JPanel panel1;
JMenuBar menu_bar;
JMenu file;
JMenuItem exit;
JMenuItem open;
JScrollPane scroller;
JTable table;
ArrayList<contact> people = new ArrayList<contact>();
TableRowSorter <DefaultTableModel> sorter;
public static void main(String args[]) throws Exception
{
new Q3();
}
public Q3() throws Exception
{
name = "";
address = "";
phone = -1 ; //Stores 0 to indicate no Phone Number
mob = -1;
recordNumber = -1;
createGUI();
createContactsFrame();
createTable();
readFromFile();
}
public void createTable()
{
tableModel = new DefaultTableModel();
table = new JTable (tableModel);
tableModel.addColumn("Name");
tableModel.addColumn("Address");
tableModel.addColumn("Home Number");
tableModel.addColumn("Mobile Number");
table.setAutoCreateRowSorter(true);
table.setVisible(true);
tableModel.addRow(new Object[]
{"Mary Robinson", "85 Brick Road", "0123481244", "07813538241"});
tableModel.addRow(new Object[]
{"Alison Jones", "17 Lemar Street", "02084579121", "07753985712"});
table.setPreferredScrollableViewportSize(new Dimension(500, 100));
table.setFillsViewportHeight(true);
scroller = new JScrollPane(table);
panel1.add(scroller);
sorter = new TableRowSorter <DefaultTableModel>(tableModel);
table.setRowSorter(sorter);
}
public void createContactsFrame()
{
//set frame characteristics
contacts = new JFrame("Contacts");
contacts.setSize(525,300);
contacts.setVisible(true);
contacts.setResizable(false);
contacts.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//set panel to hold components
panel1 = new JPanel();
contacts.getContentPane().add(panel1);
panel1.setBackground(Color.BLACK);
menu_bar = new JMenuBar();
contacts.setJMenuBar(menu_bar);
file = new JMenu ("File");
menu_bar.add(file);
exit = new JMenuItem ("Exit");
file.add(exit);
exit.addActionListener(this);
open = new JMenuItem ("Open");
file.add(open);
open.addActionListener(this);
}
public void createGUI()
{
/*Create a frame, get its contentpane and set layout*/
addressBook = new JFrame("Address Book");
addressBook.setSize(300,300);
addressBook.setResizable(false);
addressBook.setVisible(true);
addressBook.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
container1 = addressBook.getContentPane();
container1.setLayout(new GridBagLayout());
container1.setBackground(Color.black);
container1.setSize(300, 300);
menu_bar = new JMenuBar();
addressBook.setJMenuBar(menu_bar);
file = new JMenu ("File");
menu_bar.add(file);
exit = new JMenuItem ("Exit");
file.add(exit);
exit.addActionListener(this);
//Arrange components on contentPane and set Action Listeners to each JButton
arrangeComponents();
addressBook.setVisible(true);
}
public void arrangeComponents()
{
labFirstName = new JLabel("First Name");
labFirstName.setForeground(Color.white);
labLastName = new JLabel("Last Name");
labLastName.setForeground(Color.white);
labAddress = new JLabel("Address");
labAddress.setForeground(Color.white);
labPhone = new JLabel("Home Number");
labPhone.setForeground(Color.white);
labMob = new JLabel("Mobile Number");
labMob.setForeground(Color.white);
textFirstName = new JTextField(20);
textLastName = new JTextField(20);
textAddress = new JTextField(20);
textPhone = new JTextField(20);
textMob = new JTextField(20);
buttonSave = new JButton("Save");
buttonDelete = new JButton("Delete");
buttonSearch = new JButton("Search");
buttonImport = new JButton("Import");
buttonReset = new JButton("Reset");
buttonExit = new JButton("Exit");
/*add all initialized components to the container*/
GridBagConstraints gridBagConstraintsx01 = new GridBagConstraints();
gridBagConstraintsx01.gridx = 0;
gridBagConstraintsx01.gridy = 0;
gridBagConstraintsx01.insets = new Insets(5,5,5,5);
container1.add(labFirstName, gridBagConstraintsx01);
GridBagConstraints gridBagConstraintsx02 = new GridBagConstraints();
gridBagConstraintsx02.gridx = 1;
gridBagConstraintsx02.insets = new Insets(5,5,5,5);
gridBagConstraintsx02.gridy = 0;
gridBagConstraintsx02.gridwidth = 2;
gridBagConstraintsx02.fill = GridBagConstraints.BOTH;
container1.add(textFirstName, gridBagConstraintsx02);
GridBagConstraints gridBagConstraintsx03 = new GridBagConstraints();
gridBagConstraintsx03.gridx = 0;
gridBagConstraintsx03.insets = new Insets(5,5,5,5);
gridBagConstraintsx03.gridy = 2;
container1.add(labAddress, gridBagConstraintsx03);
GridBagConstraints gridBagConstraintsx04 = new GridBagConstraints();
gridBagConstraintsx04.gridx = 1;
gridBagConstraintsx04.insets = new Insets(5,5,5,5);
gridBagConstraintsx04.gridy = 2;
gridBagConstraintsx04.gridwidth = 2;
gridBagConstraintsx04.fill = GridBagConstraints.BOTH;
container1.add(textAddress, gridBagConstraintsx04);
GridBagConstraints gridBagConstraintsx05 = new GridBagConstraints();
gridBagConstraintsx05.gridx = 0;
gridBagConstraintsx05.insets = new Insets(5,5,5,5);
gridBagConstraintsx05.gridy = 3;
container1.add(labPhone, gridBagConstraintsx05);
GridBagConstraints gridBagConstraintsx06 = new GridBagConstraints();
gridBagConstraintsx06.gridx = 1;
gridBagConstraintsx06.gridy = 3;
gridBagConstraintsx06.insets = new Insets(5,5,5,5);
gridBagConstraintsx06.gridwidth = 2;
gridBagConstraintsx06.fill = GridBagConstraints.BOTH;
container1.add(textPhone, gridBagConstraintsx06);
GridBagConstraints gridBagConstraintsx07 = new GridBagConstraints();
gridBagConstraintsx07.gridx = 0;
gridBagConstraintsx07.insets = new Insets(5,5,5,5);
gridBagConstraintsx07.gridy = 4;
container1.add(labMob, gridBagConstraintsx07);
GridBagConstraints gridBagConstraintsx08 = new GridBagConstraints();
gridBagConstraintsx08.gridx = 1;
gridBagConstraintsx08.gridy = 4;
gridBagConstraintsx08.gridwidth = 2;
gridBagConstraintsx08.insets = new Insets(5,5,5,5);
gridBagConstraintsx08.fill = GridBagConstraints.BOTH;
container1.add(textMob, gridBagConstraintsx08);
GridBagConstraints gridBagConstraintsx15 = new GridBagConstraints();
gridBagConstraintsx15.gridx = 0;
gridBagConstraintsx15.gridy = 1;
gridBagConstraintsx15.insets = new Insets(5,5,5,5);
container1.add(labLastName, gridBagConstraintsx15);
GridBagConstraints gridBagConstraintsx12 = new GridBagConstraints();
gridBagConstraintsx12.gridx = 1;
gridBagConstraintsx12.gridy = 1;
gridBagConstraintsx12.insets = new Insets(5,5,5,5);
gridBagConstraintsx12.gridwidth = 2;
gridBagConstraintsx12.fill = GridBagConstraints.BOTH;
container1.add(textLastName, gridBagConstraintsx12);
GridBagConstraints gridBagConstraintsx09 = new GridBagConstraints();
gridBagConstraintsx09.gridx = 0;
gridBagConstraintsx09.gridy = 5;
gridBagConstraintsx09.insets = new Insets(5,5,5,5);
container1.add(buttonSave, gridBagConstraintsx09);
GridBagConstraints gridBagConstraintsx10 = new GridBagConstraints();
gridBagConstraintsx10.gridx = 1;
gridBagConstraintsx10.gridy = 5;
gridBagConstraintsx10.insets = new Insets(5,5,5,5);
container1.add(buttonDelete, gridBagConstraintsx10);
GridBagConstraints gridBagConstraintsx11 = new GridBagConstraints();
gridBagConstraintsx11.gridx = 2;
gridBagConstraintsx11.gridy = 5;
gridBagConstraintsx11.insets = new Insets(5,5,5,5);
container1.add(buttonImport, gridBagConstraintsx11);
GridBagConstraints gridBagConstraintsx13 = new GridBagConstraints();
gridBagConstraintsx13.gridx = 0;
gridBagConstraintsx13.gridy = 6;
gridBagConstraintsx13.insets = new Insets(5,5,5,5);
container1.add(buttonSearch, gridBagConstraintsx13);
GridBagConstraints gridBagConstraintsx14 = new GridBagConstraints();
gridBagConstraintsx14.gridx = 1;
gridBagConstraintsx14.gridy = 6;
gridBagConstraintsx14.insets = new Insets(5,5,5,5);
container1.add(buttonReset, gridBagConstraintsx14);
GridBagConstraints gridBagConstraintsx16 = new GridBagConstraints();
gridBagConstraintsx16.gridx = 2;
gridBagConstraintsx16.gridy = 6;
gridBagConstraintsx16.insets = new Insets(5,5,5,5);
container1.add(buttonExit, gridBagConstraintsx16);
buttonExit.addActionListener(this);
buttonSave.addActionListener(this);
buttonDelete.addActionListener(this);
buttonSearch.addActionListener(this);
buttonReset.addActionListener(this);
}
public void saveToFile()
{
FileWriter output;
try
{
output = new FileWriter(new File( "contactFile.txt" ) );
//output.writeObject(people);
for (int i = 0; i < people.size(); i++)
{
contact c = people.get(i);
output.write(c.getFirstName() + " " + c.getLastName() + "\n");
output.write(c.getHomeNumber() + "\n");
output.write(c.getMobileNumber() + "\n");
output.write(c.getAddress() + "\n");
}
output.close();
}
catch (IOException ioException)
{
System.err.println( "Error." );
}
}
public void readFromFile () throws Exception
{
// open file with bufferedreader
// while ()
// check
// counter....... number of lines per contact is 4, name,home number, mobile number, address.
ArrayList<String> fileRead = new ArrayList<String>();
try
{
String lineread = "";
BufferedReader bufferedReadIn = new BufferedReader(new FileReader("H:\\Copy of address book//a.txt"));
while ((lineread = bufferedReadIn.readLine()) != null)
{
fileRead.add(lineread);
}
System.out.println(fileRead.get(3));
for (int fileRead = 0; fileRead <=3; fileRead++)
System.out.println(fileRead);
//contact a = new contact(textFirstName.getText(), textLastName.getText(),textPhone.getText(), textMob.getText(), textAddress.getText());
//people.add(a);
//this.tableModel.addRow(new Object[]{a.getFirstName() + " " + a.getLastName(),a.getAddress(),
// a.getHomeNumber(), a.getMobileNumber()});
bufferedReadIn.close();
}
catch (IOException ex)
{
System.out.println("error");
}
}
public void actionPerformed (ActionEvent e)
{
if (e.getSource() == buttonExit)
{
System.exit(0);
}
else if (e.getActionCommand().equals("Exit"))
{
System.exit(0);
}
else if (e.getSource() == buttonSave)
{
contact c = new contact(textFirstName.getText(), textLastName.getText(),textPhone.getText(), textMob.getText(), textAddress.getText());
people.add(c);
this.tableModel.addRow(new Object[]{c.getFirstName() + " " + c.getLastName(),c.getAddress(),
c.getHomeNumber(), c.getMobileNumber()});
saveToFile();
}
else if (e.getSource() == buttonDelete)
{
tableModel.removeRow(table.getSelectedRow());
}
else if(e.getSource() == buttonSearch)
{
String text = textFirstName.getText() + textLastName.getText() + textAddress.getText() + textPhone.getText() + textMob.getText();
if (text.length() == 0)
{
sorter.setRowFilter(null);
}
else
{
sorter.setRowFilter(RowFilter.regexFilter(text));
}
}
else if (e.getActionCommand().equals("Open"))
{
JFileChooser chooser = new JFileChooser();
if (chooser.showOpenDialog(container1) == JFileChooser.APPROVE_OPTION)
{
try
{
BufferedReader file_in = new BufferedReader(
new FileReader (chooser.getSelectedFile()));
while (true)
{
String line = file_in.readLine();
if(line == null)
break;
this.people.toArray();
}
}
catch (FileNotFoundException fnfe)
{
}
catch (IOException ioe)
{
}
}
}
else if (e.getSource() == buttonReset)
{
this.textFirstName.setText("");
this.textLastName.setText("");
this.textAddress.setText("");
this.textPhone.setText("");
this.textMob.setText("");
}
}
} |