import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;

public class NewTestDialog extends JDialog {
	static JFrame editorWindow = new TestEditor();

	public NewTestDialog(Frame owner, boolean modal) {
		super(owner, "New Test", modal);
		Container c = getContentPane();
		// YES, I am going to use GridBatLayout!
		c.setLayout(new GridBagLayout());
		// Tremble before me!
		GridBagConstraints gbc = new GridBagConstraints();

		// Fill up panel with components

		// Right-justify labels
		gbc.anchor = gbc.EAST;
		gbc.fill = gbc.NONE;
		gbc.weightx = 0;
		c.add(new JLabel("Time: "), gbc);
		// Data fields expand to fill available space
		gbc.fill = gbc.HORIZONTAL;
		gbc.weightx = 1;
		c.add(new JSpinner(), gbc);
		// Another label...
		gbc.weightx = 0;
		gbc.fill = gbc.NONE;
		c.add(new JLabel("Hours "), gbc);
		// And so on.
		gbc.fill = gbc.HORIZONTAL;
		gbc.weightx = 1;
		c.add(new JSpinner(), gbc);
		// End of the row.
		gbc.gridwidth = gbc.REMAINDER;
		gbc.weightx = 0;
		gbc.fill = gbc.NONE;
		c.add(new JLabel("Minutes "), gbc);
		
		gbc.gridwidth = 1;
		gbc.weightx = 0;
		gbc.fill = gbc.NONE;
		c.add(new JLabel("Class: "), gbc);
		gbc.fill = gbc.HORIZONTAL;
		gbc.weightx = 1;
		gbc.gridwidth = gbc.REMAINDER;
		JComboBox className = new JComboBox();
		className.setEditable(true);
		c.add(className, gbc);

		gbc.gridwidth = 1;
		gbc.weightx = 0;
		gbc.fill = gbc.NONE;
		c.add(new JLabel("Questions: "), gbc);
		gbc.fill = gbc.HORIZONTAL;
		gbc.weightx = 1;
		gbc.gridwidth = gbc.REMAINDER;
		c.add(new JSpinner(), gbc);

		JTabbedPane filters = new JTabbedPane();
		JPanel simple = new JPanel();
		simple.setLayout(new GridBagLayout());
		gbc.gridwidth = 1;
		gbc.weightx = 0;
		gbc.fill = gbc.NONE;
		simple.add(new JLabel("Keywords: "), gbc);
		gbc.gridwidth = gbc.REMAINDER;
		gbc.weightx = 1;
		gbc.fill = gbc.HORIZONTAL;
		simple.add(new JTextField(), gbc);
		gbc.weightx = 0;
		gbc.gridwidth = 1;
		gbc.fill = gbc.NONE;
		simple.add(new JLabel("Last used: "), gbc);
		gbc.weightx = 1;
		gbc.fill = gbc.HORIZONTAL;
		simple.add(new JComboBox(new String[] {"Any", "Before", "After"}), gbc);
		gbc.gridwidth = gbc.REMAINDER;
		simple.add(new JTextField(), gbc);
		gbc.gridwidth = 1;
		gbc.weightx = 0;
		gbc.fill = gbc.NONE;
		simple.add(new JLabel("Difficulty: "), gbc);
		gbc.gridwidth = gbc.REMAINDER;
		gbc.weightx = 1;
		gbc.fill = gbc.HORIZONTAL;
		simple.add(new JComboBox(new String[] {"Any", "Easy", "Medium", "Hard"}), gbc);
		gbc.gridwidth = 1;
		gbc.weightx = 0;
		gbc.weighty = 0;
		gbc.fill = gbc.NONE;
		simple.add(new JLabel(), gbc);
		gbc.weightx = 1;
		gbc.fill = gbc.HORIZONTAL;
		simple.add(new JComboBox(new String[] {"Any", "Before", "After"}), gbc);
		gbc.weightx = 0;
		gbc.fill = gbc.NONE;
		simple.add(new JLabel(" Week #"), gbc);
		gbc.weightx = 1;
		gbc.fill = gbc.HORIZONTAL;
		gbc.gridwidth = gbc.REMAINDER;
		simple.add(new JSpinner(), gbc);
		gbc.weightx = 1;
		gbc.weighty = 1;
		gbc.fill = gbc.BOTH;
		simple.add(new JPanel(), gbc);
		filters.add("Simple", simple);

		JPanel detailed = new JPanel();
		detailed.setLayout(new GridBagLayout());
		gbc.gridwidth = gbc.REMAINDER;
		gbc.weightx = 1;
		gbc.weighty = 1;
		gbc.fill = gbc.BOTH;
		DefaultTableModel tm = new DefaultTableModel(new String[]{"Quantity", "Type", "Length", "Week", "Difficulty", "Last Used"}, 0);
		tm.addRow(new String[] {"2", "Code", "", "<10", "Hard", ""});
		tm.addRow(new String[] {"2", "Multiple Choice", "", "<10", ""});
		tm.addRow(new String[] {"4", "True/False", "<5",	"<10", "Easy", ""});
		tm.addRow(new String[] {"2", "Short Answer", ">5", "", "Hard", "<1/1/2007"});
		JTable t = new JTable(tm);

		t.setPreferredScrollableViewportSize(new Dimension(300, 100));
		detailed.add(new JScrollPane(t), gbc);
		gbc.gridwidth = 1;
		gbc.weightx = 0;
		gbc.weighty = 0;
		gbc.fill = gbc.NONE;
		detailed.add(new JButton("+"), gbc);
		detailed.add(new JButton("-"), gbc);
		filters.add("Detailed", detailed);

		gbc.gridwidth = gbc.REMAINDER;
		gbc.weightx = 1;
		gbc.weighty = 1;
		gbc.fill = gbc.BOTH;
		//c.add(new JPanel(), gbc);
		c.add(filters, gbc);

		Box buttons = Box.createHorizontalBox();
		buttons.add(new JButton("<< Hide Filtering"));
		buttons.add(Box.createHorizontalGlue());
		JButton ok = new JButton("OK");
		ok.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					setVisible(false);
					editorWindow.setVisible(true);
				}
			});
		JButton cancel = new JButton("Cancel");
		cancel.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				setVisible(false);
			}
		});
		buttons.add(ok);
		buttons.add(cancel);

		gbc.weighty = 0;
		c.add(buttons, gbc);

		pack();
	}

}