Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.Bryan.StudentSearch;
- import javax.swing.*;
- import javax.swing.border.Border;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.KeyEvent;
- import java.awt.event.KeyListener;
- import java.io.InputStream;
- import java.util.*;
- public class Application extends JFrame {
- public static void main(String[] args) {
- new Application();
- }
- private JPanel resultMain = new JPanel();
- private JPanel resultPanel = new JPanel();
- private JScrollPane resultScroll = new JScrollPane(resultPanel);
- private java.util.List<JTextField> inputFields = new ArrayList<>();
- GridBagConstraints resultBag = new GridBagConstraints();
- StudentSearcher ss;
- public Application() {
- super("Schedule Search");
- Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
- ClassLoader classloader = Thread.currentThread().getContextClassLoader();
- InputStream is = classloader.getResourceAsStream("schedules.xlsx");
- ss = new StudentSearcher(is);
- resultPanel.setAutoscrolls(true);
- setSize((int) screen.getWidth() / 2, (int) screen.getHeight() / 2);
- setResizable(false);
- setLocationRelativeTo(null);
- setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
- JPanel wrapper = new JPanel();
- wrapper.setLayout(new GridBagLayout());
- {
- GridBagConstraints panel = new GridBagConstraints();
- panel.fill = GridBagConstraints.BOTH;
- panel.anchor = GridBagConstraints.NORTH;
- JPanel bottom = new JPanel();
- bottom.setLayout(new GridBagLayout());
- {
- GridBagConstraints pan = new GridBagConstraints();
- pan.fill = GridBagConstraints.HORIZONTAL;
- JLabel fLab = new JLabel("Quarter:");
- String[] petStrings = {"Quarter 1", "Quarter 2", "Quarter 3", "Quarter 4", "Semester 1", "Semester 2", "All Quarters"};
- JComboBox petList = new JComboBox(petStrings);
- petList.setSelectedIndex(6);
- bottom.add(fLab, pan);
- bottom.add(petList, pan);
- }
- JPanel center = new JPanel();
- center.setLayout(new GridBagLayout());
- {
- GridBagConstraints rPan = new GridBagConstraints();
- rPan.fill = GridBagConstraints.HORIZONTAL;
- rPan.anchor = GridBagConstraints.NORTH;
- JPanel reset = new JPanel();
- {
- Border b = BorderFactory.createEmptyBorder(5, 5, 5, 5);
- JButton resetButton = new JButton("Clear");
- resetButton.setBorder(b);
- resetButton.setBackground(new Color(227, 92, 98));
- resetButton.setForeground(Color.WHITE);
- resetButton.setFocusPainted(false);
- resetButton.setFont(new Font("Tahoma", Font.BOLD, 12));
- reset.add(resetButton);
- resetButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- for (JTextField field : inputFields) {
- field.setText("");
- }
- showResults();
- }
- });
- }
- JPanel searchBar = new JPanel();
- {
- Border b = BorderFactory.createEmptyBorder(5, 5, 5, 5);
- searchBar.add(createUneditableTextField("Last", 6, b));
- searchBar.add(createUneditableTextField("First", 6, b));
- searchBar.add(createUneditableTextField("Student ID", 8, b));
- searchBar.add(createUneditableTextField("Grade", 3, b));
- searchBar.add(createUneditableTextField("Class", 10, b));
- searchBar.add(createUneditableTextField("Teacher", 10, b));
- searchBar.add(createUneditableTextField("Period", 5, b));
- searchBar.add(createUneditableTextField("Room #", 5, b));
- }
- JPanel inputBar = new JPanel();
- {
- Border b = BorderFactory.createEmptyBorder(5, 5, 5, 5);
- JTextField last = new JTextField(6);
- last.setBorder(b);
- JTextField first = new JTextField(6);
- first.setBorder(b);
- JTextField studentID = new JTextField(8);
- studentID.setBorder(b);
- JTextField grade = new JTextField(3);
- grade.setBorder(b);
- JTextField clas = new JTextField(10);
- clas.setBorder(b);
- JTextField teacher = new JTextField(10);
- teacher.setBorder(b);
- JTextField period = new JTextField(5);
- period.setBorder(b);
- JTextField room = new JTextField(5);
- room.setBorder(b);
- registerKeyPress(last, first, studentID, grade, clas, teacher, period, room);
- registerInputBars(last, first, studentID, grade, clas, teacher, period, room);
- inputBar.add(last);
- inputBar.add(first);
- inputBar.add(studentID);
- inputBar.add(grade);
- inputBar.add(clas);
- inputBar.add(teacher);
- inputBar.add(period);
- inputBar.add(room);
- }
- resultPanel.setLayout(new GridBagLayout());
- resultMain.add(resultScroll, rPan);
- rPan.gridx = 0;
- rPan.gridy = 1;
- rPan.weighty = 1;
- center.add(reset, rPan);
- rPan.gridx = 1;
- rPan.gridy = 0;
- center.add(searchBar, rPan);
- rPan.gridy = 1;
- center.add(inputBar, rPan);
- rPan.gridy = 2;
- center.add(resultMain, rPan);
- }
- panel.weighty = 1;
- panel.gridy = 0;
- wrapper.add(center, panel);
- panel.gridy = 1;
- panel.anchor = GridBagConstraints.SOUTH;
- panel.weighty = 0;
- wrapper.add(bottom, panel);
- }
- Container contentPane = getContentPane();
- contentPane.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
- contentPane.setLayout(new GridLayout());
- contentPane.add(wrapper);
- Application.this.showResults();
- setVisible(true);
- }
- private void addResult(String lastName, String firstName, String id, String gradeNum, String clasName, String teacherName, String periodNum, String roomNum) {
- JPanel result = new JPanel();
- {
- Border b = BorderFactory.createEmptyBorder(5, 5, 5, 5);
- result.add(createUneditableTextField(lastName, 6, b));
- result.add(createUneditableTextField(firstName, 6, b));
- result.add(createUneditableTextField((isDouble(id)) ? (int) Double.parseDouble(id) + "" : id, 8, b));
- result.add(createUneditableTextField((int) Double.parseDouble(gradeNum) + "", 3, b));
- result.add(createUneditableTextField(clasName, 10, b));
- result.add(createUneditableTextField(teacherName, 10, b));
- result.add(createUneditableTextField((isDouble(periodNum)) ? (int) Double.parseDouble(periodNum) + "" : periodNum, 5, b));
- result.add(createUneditableTextField((isDouble(roomNum)) ? (int) Double.parseDouble(roomNum) + "" : roomNum, 5, b));
- }
- resultBag.fill = GridBagConstraints.VERTICAL;
- resultBag.gridx = 1;
- resultBag.gridy += 1;
- resultPanel.add(result, resultBag);
- }
- private void showResults() {
- resultPanel.removeAll();
- int count = 0;
- for (Student s : ss.allStudents) {
- if (count++ == 0) continue;
- addResult(s.getLastName(), s.getFirstName(),
- s.getStudentID(), s.getGrade(),
- s.getCourseName(), s.getTeacher(),
- s.getPeriod(), s.getRoom());
- }
- validate();
- }
- private JTextField createUneditableTextField(String value, int columns, Border b) {
- JTextField room = new JTextField(value, columns);
- room.setBorder(b);
- room.setEditable(false);
- room.setCaretPosition(0);
- room.setToolTipText(value);
- return room;
- }
- private void showResults(String lastName, String firstName, String id, String gradeNum, String clasName, String teacherName, String periodNum, String roomNum) {
- resultPanel.removeAll();
- int count = 0;
- for (Student s : ss.allStudents) {
- if (count++ == 0) continue;
- if (!s.getLastName().toLowerCase().contains(lastName.toLowerCase())) continue;
- if (!s.getFirstName().toLowerCase().contains(firstName.toLowerCase())) continue;
- if (!s.getStudentID().toLowerCase().contains(id.toLowerCase())) continue;
- if (!s.getGrade().toLowerCase().contains(gradeNum.toLowerCase())) continue;
- if (!s.getCourseName().toLowerCase().contains(clasName.toLowerCase())) continue;
- if (!s.getTeacher().toLowerCase().contains(teacherName.toLowerCase())) continue;
- if (!s.getPeriod().toLowerCase().contains(periodNum.toLowerCase())) continue;
- if (!s.getRoom().toLowerCase().contains(roomNum.toLowerCase())) continue;
- addResult(s.getLastName(), s.getFirstName(),
- s.getStudentID(), s.getGrade(),
- s.getCourseName(), s.getTeacher(),
- s.getPeriod(), s.getRoom());
- }
- validate();
- repaint();
- }
- private void registerKeyPress(JTextField... field) {
- for (JTextField f : field) {
- f.addKeyListener(new KeyListener() {
- @Override
- public void keyTyped(KeyEvent e) {
- }
- @Override
- public void keyPressed(KeyEvent e) {
- }
- @Override
- public void keyReleased(KeyEvent e) {
- System.out.println("Key Pressed: " + f.getText());
- showResults(field[0].getText(), field[1].getText(), field[2].getText(), field[3].getText(), field[4].getText(), field[5].getText(), field[6].getText(), field[7].getText());
- }
- });
- }
- }
- private void registerInputBars(JTextField... field) {
- inputFields.addAll(Arrays.asList(field));
- }
- private boolean isDouble(String s) {
- try {
- //noinspection ResultOfMethodCallIgnored
- Double.parseDouble(s);
- return true;
- } catch (NumberFormatException e) {
- return false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement