Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.20 KB | None | 0 0
  1. package me.Bryan.StudentSearch;
  2.  
  3. import javax.swing.*;
  4. import javax.swing.border.Border;
  5. import java.awt.*;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import java.awt.event.KeyEvent;
  9. import java.awt.event.KeyListener;
  10. import java.io.InputStream;
  11. import java.util.*;
  12.  
  13. public class Application extends JFrame {
  14.  
  15.     public static void main(String[] args) {
  16.         new Application();
  17.     }
  18.  
  19.     private JPanel resultMain = new JPanel();
  20.     private JPanel resultPanel = new JPanel();
  21.     private JScrollPane resultScroll = new JScrollPane(resultPanel);
  22.     private java.util.List<JTextField> inputFields = new ArrayList<>();
  23.     GridBagConstraints resultBag = new GridBagConstraints();
  24.  
  25.     StudentSearcher ss;
  26.  
  27.     public Application() {
  28.         super("Schedule Search");
  29.         Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
  30.  
  31.         ClassLoader classloader = Thread.currentThread().getContextClassLoader();
  32.         InputStream is = classloader.getResourceAsStream("schedules.xlsx");
  33.         ss = new StudentSearcher(is);
  34.  
  35.         resultPanel.setAutoscrolls(true);
  36.  
  37.         setSize((int) screen.getWidth() / 2, (int) screen.getHeight() / 2);
  38.         setResizable(false);
  39.         setLocationRelativeTo(null);
  40.         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  41.  
  42.         JPanel wrapper = new JPanel();
  43.         wrapper.setLayout(new GridBagLayout());
  44.         {
  45.             GridBagConstraints panel = new GridBagConstraints();
  46.             panel.fill = GridBagConstraints.BOTH;
  47.             panel.anchor = GridBagConstraints.NORTH;
  48.  
  49.             JPanel bottom = new JPanel();
  50.             bottom.setLayout(new GridBagLayout());
  51.             {
  52.                 GridBagConstraints pan = new GridBagConstraints();
  53.                 pan.fill = GridBagConstraints.HORIZONTAL;
  54.  
  55.                 JLabel fLab = new JLabel("Quarter:");
  56.                 String[] petStrings = {"Quarter 1", "Quarter 2", "Quarter 3", "Quarter 4", "Semester 1", "Semester 2", "All Quarters"};
  57.  
  58.                 JComboBox petList = new JComboBox(petStrings);
  59.                 petList.setSelectedIndex(6);
  60.  
  61.                 bottom.add(fLab, pan);
  62.                 bottom.add(petList, pan);
  63.             }
  64.  
  65.             JPanel center = new JPanel();
  66.             center.setLayout(new GridBagLayout());
  67.             {
  68.                 GridBagConstraints rPan = new GridBagConstraints();
  69.                 rPan.fill = GridBagConstraints.HORIZONTAL;
  70.                 rPan.anchor = GridBagConstraints.NORTH;
  71.  
  72.                 JPanel reset = new JPanel();
  73.                 {
  74.                     Border b = BorderFactory.createEmptyBorder(5, 5, 5, 5);
  75.                     JButton resetButton = new JButton("Clear");
  76.                     resetButton.setBorder(b);
  77.                     resetButton.setBackground(new Color(227, 92, 98));
  78.                     resetButton.setForeground(Color.WHITE);
  79.                     resetButton.setFocusPainted(false);
  80.                     resetButton.setFont(new Font("Tahoma", Font.BOLD, 12));
  81.                     reset.add(resetButton);
  82.  
  83.                     resetButton.addActionListener(new ActionListener() {
  84.                         @Override
  85.                         public void actionPerformed(ActionEvent e) {
  86.                             for (JTextField field : inputFields) {
  87.                                 field.setText("");
  88.                             }
  89.                             showResults();
  90.                         }
  91.                     });
  92.                 }
  93.  
  94.                 JPanel searchBar = new JPanel();
  95.                 {
  96.                     Border b = BorderFactory.createEmptyBorder(5, 5, 5, 5);
  97.                     searchBar.add(createUneditableTextField("Last", 6, b));
  98.                     searchBar.add(createUneditableTextField("First", 6, b));
  99.                     searchBar.add(createUneditableTextField("Student ID", 8, b));
  100.                     searchBar.add(createUneditableTextField("Grade", 3, b));
  101.                     searchBar.add(createUneditableTextField("Class", 10, b));
  102.                     searchBar.add(createUneditableTextField("Teacher", 10, b));
  103.                     searchBar.add(createUneditableTextField("Period", 5, b));
  104.                     searchBar.add(createUneditableTextField("Room #", 5, b));
  105.                 }
  106.  
  107.                 JPanel inputBar = new JPanel();
  108.                 {
  109.                     Border b = BorderFactory.createEmptyBorder(5, 5, 5, 5);
  110.                     JTextField last = new JTextField(6);
  111.                     last.setBorder(b);
  112.                     JTextField first = new JTextField(6);
  113.                     first.setBorder(b);
  114.                     JTextField studentID = new JTextField(8);
  115.                     studentID.setBorder(b);
  116.                     JTextField grade = new JTextField(3);
  117.                     grade.setBorder(b);
  118.                     JTextField clas = new JTextField(10);
  119.                     clas.setBorder(b);
  120.                     JTextField teacher = new JTextField(10);
  121.                     teacher.setBorder(b);
  122.                     JTextField period = new JTextField(5);
  123.                     period.setBorder(b);
  124.                     JTextField room = new JTextField(5);
  125.                     room.setBorder(b);
  126.  
  127.                     registerKeyPress(last, first, studentID, grade, clas, teacher, period, room);
  128.                     registerInputBars(last, first, studentID, grade, clas, teacher, period, room);
  129.  
  130.                     inputBar.add(last);
  131.                     inputBar.add(first);
  132.                     inputBar.add(studentID);
  133.                     inputBar.add(grade);
  134.                     inputBar.add(clas);
  135.                     inputBar.add(teacher);
  136.                     inputBar.add(period);
  137.                     inputBar.add(room);
  138.                 }
  139.  
  140.                 resultPanel.setLayout(new GridBagLayout());
  141.                 resultMain.add(resultScroll, rPan);
  142.  
  143.                 rPan.gridx = 0;
  144.                 rPan.gridy = 1;
  145.                 rPan.weighty = 1;
  146.                 center.add(reset, rPan);
  147.                 rPan.gridx = 1;
  148.                 rPan.gridy = 0;
  149.                 center.add(searchBar, rPan);
  150.                 rPan.gridy = 1;
  151.                 center.add(inputBar, rPan);
  152.                 rPan.gridy = 2;
  153.                 center.add(resultMain, rPan);
  154.             }
  155.  
  156.             panel.weighty = 1;
  157.             panel.gridy = 0;
  158.             wrapper.add(center, panel);
  159.             panel.gridy = 1;
  160.             panel.anchor = GridBagConstraints.SOUTH;
  161.             panel.weighty = 0;
  162.             wrapper.add(bottom, panel);
  163.         }
  164.  
  165.         Container contentPane = getContentPane();
  166.         contentPane.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
  167.         contentPane.setLayout(new GridLayout());
  168.  
  169.         contentPane.add(wrapper);
  170.  
  171.         Application.this.showResults();
  172.         setVisible(true);
  173.     }
  174.  
  175.     private void addResult(String lastName, String firstName, String id, String gradeNum, String clasName, String teacherName, String periodNum, String roomNum) {
  176.         JPanel result = new JPanel();
  177.         {
  178.             Border b = BorderFactory.createEmptyBorder(5, 5, 5, 5);
  179.             result.add(createUneditableTextField(lastName, 6, b));
  180.             result.add(createUneditableTextField(firstName, 6, b));
  181.             result.add(createUneditableTextField((isDouble(id)) ? (int) Double.parseDouble(id) + "" : id, 8, b));
  182.             result.add(createUneditableTextField((int) Double.parseDouble(gradeNum) + "", 3, b));
  183.             result.add(createUneditableTextField(clasName, 10, b));
  184.             result.add(createUneditableTextField(teacherName, 10, b));
  185.             result.add(createUneditableTextField((isDouble(periodNum)) ? (int) Double.parseDouble(periodNum) + "" : periodNum, 5, b));
  186.             result.add(createUneditableTextField((isDouble(roomNum)) ? (int) Double.parseDouble(roomNum) + "" : roomNum, 5, b));
  187.         }
  188.         resultBag.fill = GridBagConstraints.VERTICAL;
  189.         resultBag.gridx = 1;
  190.         resultBag.gridy += 1;
  191.  
  192.         resultPanel.add(result, resultBag);
  193.     }
  194.  
  195.     private void showResults() {
  196.         resultPanel.removeAll();
  197.  
  198.         int count = 0;
  199.         for (Student s : ss.allStudents) {
  200.             if (count++ == 0) continue;
  201.             addResult(s.getLastName(), s.getFirstName(),
  202.                     s.getStudentID(), s.getGrade(),
  203.                     s.getCourseName(), s.getTeacher(),
  204.                     s.getPeriod(), s.getRoom());
  205.         }
  206.  
  207.         validate();
  208.     }
  209.  
  210.     private JTextField createUneditableTextField(String value, int columns, Border b) {
  211.         JTextField room = new JTextField(value, columns);
  212.         room.setBorder(b);
  213.         room.setEditable(false);
  214.         room.setCaretPosition(0);
  215.         room.setToolTipText(value);
  216.         return room;
  217.     }
  218.  
  219.     private void showResults(String lastName, String firstName, String id, String gradeNum, String clasName, String teacherName, String periodNum, String roomNum) {
  220.         resultPanel.removeAll();
  221.  
  222.         int count = 0;
  223.         for (Student s : ss.allStudents) {
  224.             if (count++ == 0) continue;
  225.             if (!s.getLastName().toLowerCase().contains(lastName.toLowerCase())) continue;
  226.             if (!s.getFirstName().toLowerCase().contains(firstName.toLowerCase())) continue;
  227.             if (!s.getStudentID().toLowerCase().contains(id.toLowerCase())) continue;
  228.             if (!s.getGrade().toLowerCase().contains(gradeNum.toLowerCase())) continue;
  229.             if (!s.getCourseName().toLowerCase().contains(clasName.toLowerCase())) continue;
  230.             if (!s.getTeacher().toLowerCase().contains(teacherName.toLowerCase())) continue;
  231.             if (!s.getPeriod().toLowerCase().contains(periodNum.toLowerCase())) continue;
  232.             if (!s.getRoom().toLowerCase().contains(roomNum.toLowerCase())) continue;
  233.             addResult(s.getLastName(), s.getFirstName(),
  234.                     s.getStudentID(), s.getGrade(),
  235.                     s.getCourseName(), s.getTeacher(),
  236.                     s.getPeriod(), s.getRoom());
  237.         }
  238.  
  239.         validate();
  240.         repaint();
  241.     }
  242.  
  243.     private void registerKeyPress(JTextField... field) {
  244.         for (JTextField f : field) {
  245.             f.addKeyListener(new KeyListener() {
  246.                 @Override
  247.                 public void keyTyped(KeyEvent e) {
  248.                 }
  249.  
  250.                 @Override
  251.                 public void keyPressed(KeyEvent e) {
  252.  
  253.                 }
  254.  
  255.                 @Override
  256.                 public void keyReleased(KeyEvent e) {
  257.                     System.out.println("Key Pressed: " + f.getText());
  258.                     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());
  259.                 }
  260.             });
  261.         }
  262.     }
  263.  
  264.     private void registerInputBars(JTextField... field) {
  265.         inputFields.addAll(Arrays.asList(field));
  266.     }
  267.  
  268.     private boolean isDouble(String s) {
  269.         try {
  270.             //noinspection ResultOfMethodCallIgnored
  271.             Double.parseDouble(s);
  272.             return true;
  273.         } catch (NumberFormatException e) {
  274.             return false;
  275.         }
  276.     }
  277.  
  278. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement