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; }