Viewing file: comp249/assignment3/InvalidMoviesPanel.java | Back to directory listing
Author: Loren Segal | Last modified: February 20 2006 07:00 pm | Download

import java.awt.*;
import javax.swing.*;
import java.util.ArrayList;
import java.io.*;
import javax.swing.border.*;
 
public class InvalidMoviesPanel extends JPanel
{
	public InvalidMoviesPanel()
	{
		super(new BorderLayout(0,20));
		ArrayList invalidMovies = null;
 
		// GUI Elements
		JTable table = null;
		JPanel message = new JPanel();
		message.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
 
		// Load the movie definitions
		try
		{
	        FileInputStream fin = new FileInputStream("error.log");
	        ObjectInputStream ois = new ObjectInputStream(fin);
	        invalidMovies = (ArrayList)ois.readObject();
	        ois.close();
		}
		catch (Exception e)
		{
			message.add(new JLabel("There are no invalid lines in the movie database."));
			add(message, BorderLayout.NORTH);
			return;
		}
		message.add(new JLabel("We have to fix these ones"));
 
		// Generate JTable output
		String[] columnNames = {"Line Number", "Message", "Bogus Field"};
		Object[][] fields = new Object[invalidMovies.size()][columnNames.length];
		for(int i = 0; i < invalidMovies.size(); i++)
		{
			InvalidMovie m = (InvalidMovie)invalidMovies.get(i);
			fields[i][0] = m.getLineNumber();
			fields[i][1] = m.getReason();
			fields[i][2] = m.getInvalidData();
		}
		table = new JTable(fields, columnNames);
		table.setPreferredScrollableViewportSize(new Dimension(500, 300));
 
		// Add the elements to the panel
		add(message, BorderLayout.NORTH);
		add(new JScrollPane(table), BorderLayout.CENTER);
	}
}