package schedtool.scheduling_ui; 

import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ScheduleAttributes extends JFrame {
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@SuppressWarnings("unchecked")
	public ScheduleAttributes(){
      
        JPanel panel = new JPanel();
	setTitle("Schedule Attributes");

        /* Make my panels for tabs */
        JPanel instructorPanel = new JPanel();
        JPanel otherPanel = new JPanel();

        /* Button for Showing Manual Schedule Edit */
        JButton showManSchedEdit = new JButton("Show Manual Schedule Edit");
        JButton regenSchedule = new JButton("Regenerate Schedule");

	String[] quarterStrings = {"Select Quarter", "Winter 2010", "Spring 2010", "Summer 2010", "Fall 2010" };
        JComboBox quarterList = new JComboBox(quarterStrings);
	quarterList.setMinimumSize(new Dimension(200, 30));
	quarterList.setMaximumSize(new Dimension(200, 30));
	quarterList.setPreferredSize(new Dimension(200, 30));	

        /* Make Tabbed Panel */
        JTabbedPane tabbedPane = new JTabbedPane();

        /* Instructor Scores Panel */
        instructorPanel.setLayout(new BoxLayout(instructorPanel, BoxLayout.PAGE_AXIS));
	
	JLabel schedScoreLabel = new JLabel("Schedule Score:");
        schedScoreLabel.setHorizontalTextPosition(JLabel.LEFT);

        JLabel totalLabel = new JLabel("Total Score:");
        JTextField totalScoreField = new JTextField("                ");
        totalScoreField.setEditable(false);
	totalScoreField.setMinimumSize(new Dimension(200, 30));
	totalScoreField.setMaximumSize(new Dimension(200, 30));
	totalScoreField.setPreferredSize(new Dimension(200, 30));

        JLabel avgLabel = new JLabel("Average Score:");
        JTextField avgScoreField = new JTextField("                ");
        avgScoreField.setEditable(false);
	avgScoreField.setMinimumSize(new Dimension(200, 30));
	avgScoreField.setMaximumSize(new Dimension(200, 30));
	avgScoreField.setPreferredSize(new Dimension(200, 30));

        JLabel stdDevLabel = new JLabel("Std. Deviation:");
        JTextField stdDevField = new JTextField("                ");
        stdDevField.setEditable(false);
	stdDevField.setMinimumSize(new Dimension(200, 30));
	stdDevField.setMaximumSize(new Dimension(200, 30));
	stdDevField.setPreferredSize(new Dimension(200, 30));

	String[] instructorColumns = {"Instructor", "Schedule Score", "Lock?"};
	localData = new DefaultTableModel(instructorColumns, 0);
        instructorTable = new JTable(localData);
	JScrollPane scrollPane = new JScrollPane(instructorTable);

	instructorTable.setPreferredScrollableViewportSize(new Dimension(500, 5 * instructorTable.getRowHeight()));
        instructorTable.setEnabled(false);
        instructorTable.setShowGrid(true);
        instructorTable.setShowHorizontalLines(true);
        instructorTable.setShowVerticalLines(true);

        instructorPanel.add(schedScoreLabel);
        instructorPanel.add(totalLabel);
        instructorPanel.add(totalScoreField);
        instructorPanel.add(avgLabel);
        instructorPanel.add(avgScoreField);
        instructorPanel.add(stdDevLabel);
        instructorPanel.add(stdDevField);
	instructorPanel.add(scrollPane);

	for(int i = 0; i < instructorSample.length; i++) {
		localData.addRow(instructorSample[i]);
	}

        /* Other Scores Pane */
	otherPanel.setLayout(new BoxLayout(otherPanel, BoxLayout.PAGE_AXIS));

        JLabel schedQualityLabel = new JLabel("Schedule Quality:");
        JTextField schedQualityField = new JTextField("  %");
	schedQualityField.setMinimumSize(new Dimension(100, 30));
	schedQualityField.setMaximumSize(new Dimension(100, 30));
	schedQualityField.setPreferredSize(new Dimension(100, 30));

        JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 100, 50); 
        slider.setPaintTicks(true);
        slider.setMajorTickSpacing(25);
	slider.setPaintLabels(true);

        Hashtable labelTable = new Hashtable();
        labelTable.put(new Integer( 0 ) , new JLabel("Poor") );
        labelTable.put(new Integer( 100 ), new JLabel("Excellent") );
        slider.setLabelTable(labelTable);
        slider.setPaintLabels(true);

	String[] otherColumns = {"Penalty", "Description"};

	otherLocalData = new DefaultTableModel(otherColumns, 0);
	otherTable = new JTable(otherLocalData);

	JScrollPane otherScrollPane = new JScrollPane(otherTable);

	otherTable.setPreferredScrollableViewportSize(new Dimension(500, 5 * otherTable.getRowHeight()));
	otherTable.setEnabled(false);
	otherTable.setShowGrid(true);
	otherTable.setShowHorizontalLines(true);
	otherTable.setShowVerticalLines(true);

        otherPanel.add(schedQualityLabel);
        otherPanel.add(schedQualityField);
        otherPanel.add(slider);
	otherPanel.add(otherScrollPane);

	for(int i = 0; i < otherSample.length; i++) {
		otherLocalData.addRow(otherSample[i]);
	}

        /* Add Tabs and Panel */
        
        tabbedPane.addTab("Instructor Scores", instructorPanel);

        tabbedPane.addTab("Other Scores", otherPanel);
       
        panel.setLayout(new BoxLayout(panel, BoxLayout.PAGE_AXIS));

        add(panel);
        
        regenSchedule.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                    	new ConflictAlert().setVisible(true);
                    }
                }
            );
        
        panel.add(regenSchedule);
        panel.add(showManSchedEdit); //, BorderLayout.CENTER);
        panel.add(quarterList); //, BorderLayout.CENTER);
        panel.add(tabbedPane);

        pack();
    }

    protected String[][] instructorSample = {
    	{"Fisher, Gene", "2", "N"},
	{"Lupo, Chris", "7", "Y"},
	{"Clark, Chris", "15", "Y"},
	{"O'Gorman, Kevin", "34", "N"},
	{"", "", ""},
	{"", "", ""},
	{"", "", ""},
	{"", "", ""}
    };

    protected String[][] otherSample = {
	{"50%", "Course Overlap"},
	{"25%", "Lab/Lecture Proximity"},
	{"85%", "Room Conflict"},
	{"", ""},
	{"", ""},
	{"", ""}
    };

    protected DefaultTableModel localData;
    protected JTable instructorTable;   
    protected JTable otherTable;
    protected DefaultTableModel otherLocalData;


}