Advertisement
Guest User

code

a guest
May 24th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.98 KB | None | 0 0
  1. package oop.basic;
  2.  
  3. import javax.swing.*;
  4. import javax.swing.event.ListSelectionEvent;
  5. import javax.swing.event.ListSelectionListener;
  6. import java.awt.*;
  7. import java.awt.event.ActionEvent;
  8. import java.awt.event.ActionListener;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. import java.util.Observable;
  12. import java.util.Observer;
  13.  
  14. /**
  15.  * @author Arjen
  16.  * @date 21/05/16
  17.  */
  18. public class Display extends JFrame implements Observer{
  19.     private Library lib;
  20.     private JPanel buttons1Panel;
  21.     private JPanel listsPanel;
  22.     private JPanel buttons2Panel;
  23.  
  24.     private JButton newMemButton;
  25.     private JButton newBookButton;
  26.     private JButton reportButton;
  27.     private JButton rentButton;
  28.     private JButton returnButton;
  29.     private JButton saveButton;
  30.     private JButton restoreButton;
  31.     private JList<Member> memberJList;
  32.     private List<Book> freeBookList;
  33.     private JList<Book> freeBookJList;
  34.     private List<Book> rentedBookList;
  35.     private JList<Book> rentedBookJList;
  36.  
  37.  
  38.     public Display(Library lib) {
  39.         this.lib = lib;
  40.  
  41.         //Initializing the frame and layout of display
  42.         buttons1Panel = new JPanel();
  43.         listsPanel = new JPanel();
  44.         buttons2Panel = new JPanel();
  45.         setTitle("DatBoi Library");
  46.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  47.         add(buttons1Panel, BorderLayout.NORTH);
  48.         add(listsPanel, BorderLayout.CENTER);
  49.         add(buttons2Panel, BorderLayout.SOUTH);
  50.  
  51.  
  52.         //Initializing all the Action objects (in this case all buttons)
  53.         //TODO: Icon still shows up, find way to remove?
  54.         newMemButton = new JButton("New Member");
  55.         newMemButton.setToolTipText("Add a new member to the library list");
  56.         newMemButton.addActionListener(new ActionListener() {
  57.             @Override
  58.             public void actionPerformed(ActionEvent e) {
  59.                 JTextField memberName = new JTextField();
  60.                 JTextField memberAddress = new JTextField();
  61.                 JPanel panel = new JPanel(new GridLayout(0, 1));
  62.                 panel.add(new JLabel("Member name:"));
  63.                 panel.add(memberName);
  64.                 panel.add(new JLabel("Member address:"));
  65.                 panel.add(memberAddress);
  66.                 int result = JOptionPane.showConfirmDialog(null, panel, "Add new member",
  67.                         JOptionPane.OK_CANCEL_OPTION);
  68.                 if (result == JOptionPane.OK_OPTION) {
  69.                     Display.this.lib.addNewMember(memberAddress.getText(), memberName.getText());
  70.                 }
  71.             }
  72.         });
  73.  
  74.         newBookButton = new JButton("New Book");
  75.         newBookButton.setToolTipText("Add a new book to the library list");
  76.         newBookButton.addActionListener(new ActionListener() {
  77.             @Override
  78.             public void actionPerformed(ActionEvent e) {
  79.                 JTextField bookName = new JTextField();
  80.                 JTextField bookAuthors = new JTextField();
  81.                 JPanel panel = new JPanel(new GridLayout(0, 1));
  82.                 panel.add(new JLabel("Book Name:"));
  83.                 panel.add(bookName);
  84.                 panel.add(new JLabel("Book Authors, separated only by comma's:"));
  85.                 panel.add(bookAuthors);
  86.                 int result = JOptionPane.showConfirmDialog(null, panel, "Add new book",
  87.                         JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null);
  88.                 if (result == JOptionPane.OK_OPTION) {
  89.                     String []authors = bookAuthors.getText().split("\\.");
  90.                     Display.this.lib.addNewBook(bookName.getText(), authors);
  91.                 }
  92.             }
  93.         });
  94.  
  95.         reportButton = new JButton("Report");
  96.         reportButton.addActionListener(new ActionListener() {
  97.             @Override
  98.             public void actionPerformed(ActionEvent e) {
  99.  
  100.             }
  101.         });
  102.  
  103.         rentButton = new JButton("Rent");
  104.         rentButton.setToolTipText("Rent out the selected free book to the selected person");
  105.         rentButton.addActionListener(new ActionListener() {
  106.             @Override
  107.             public void actionPerformed(ActionEvent e) {
  108.  
  109.             }
  110.         });
  111.  
  112.         returnButton = new JButton("Return");
  113.         returnButton.setToolTipText("Return the selected book");
  114.         returnButton.addActionListener(new ActionListener() {
  115.             @Override
  116.             public void actionPerformed(ActionEvent e) {
  117.  
  118.             }
  119.         });
  120.  
  121.         saveButton = new JButton("Save");
  122.         saveButton.setToolTipText("Save current state of library");
  123.         saveButton.addActionListener(new ActionListener() {
  124.             @Override
  125.             public void actionPerformed(ActionEvent e) {
  126.  
  127.             }
  128.         });
  129.  
  130.         restoreButton = new JButton("Restore");
  131.         restoreButton.setToolTipText("Restore library to a saved state");
  132.         restoreButton.addActionListener(new ActionListener() {
  133.             @Override
  134.             public void actionPerformed(ActionEvent e) {
  135.  
  136.             }
  137.         });
  138.  
  139.         //Initializing list information
  140.         freeBookList = new ArrayList<>();
  141.         rentedBookList = new ArrayList<>();
  142.         updateBookLists();
  143.  
  144.         memberJList = new JList<>();
  145.         memberJList.setListData(lib.getMemberList().toArray(new Member[lib.getMemberList().size()]));
  146.         memberJList.addListSelectionListener(new ListSelectionListener() {
  147.             @Override
  148.             public void valueChanged(ListSelectionEvent e) {
  149.                 if (!e.getValueIsAdjusting()) {
  150.                     String memberName = ((Member) ((JList) e.getSource()).getSelectedValue()).getName();
  151.                     List<Book> rentedBooksByMember = new ArrayList<>();
  152.                     for (Book b : rentedBookList) {
  153.                         if (b.getLastRentData().getMemberData().getName() == memberName) {
  154.                             rentedBooksByMember.add(b);
  155.                         }
  156.                     }
  157.                     Display.this.rentedBookJList.setListData(rentedBooksByMember.toArray(new Book[rentedBookList.size()]));
  158.                 }
  159.             }
  160.         });
  161.         JScrollPane memberScrollPane = new JScrollPane(memberJList);
  162.         freeBookJList = new JList<>();
  163.         freeBookJList.setListData(freeBookList.toArray(new Book[freeBookList.size()]));
  164.         JScrollPane freeBookScrollPane = new JScrollPane(freeBookJList);
  165.         rentedBookJList = new JList<>();
  166.         rentedBookJList.setListData(rentedBookList.toArray(new Book[rentedBookList.size()]));
  167.         JScrollPane rentedBookScrollPane = new JScrollPane(rentedBookJList);
  168.  
  169.  
  170.         //Adding all components to the JPanels
  171.         buttons1Panel.add(newMemButton);
  172.         buttons1Panel.add(newBookButton);
  173.         buttons1Panel.add(reportButton);
  174.         buttons1Panel.add(rentButton);
  175.         buttons1Panel.add(returnButton);
  176.         buttons2Panel.add(saveButton);
  177.         buttons2Panel.add(restoreButton);
  178.         listsPanel.add(memberScrollPane);
  179.         listsPanel.add(freeBookScrollPane);
  180.         listsPanel.add(rentedBookScrollPane);
  181.  
  182.  
  183.     }
  184.  
  185.     @Override
  186.     public void update(Observable o, Object arg) {
  187.         if (o.equals(lib)) {
  188.             System.out.println("Display detected update");
  189.             memberJList.setListData(lib.getMemberList().toArray(new Member[lib.getMemberList().size()]));
  190.             freeBookList.clear();
  191.             rentedBookList.clear();
  192.             updateBookLists();
  193.             freeBookJList.setListData(freeBookList.toArray(new Book[freeBookList.size()]));
  194.             rentedBookJList.setListData(rentedBookList.toArray(new Book[rentedBookList.size()]));
  195.             listsPanel.revalidate();
  196.             listsPanel.repaint();
  197.         }
  198.     }
  199.  
  200.     public void updateBookLists() {
  201.         for (Book b: this.lib.getBookList()) {
  202.             if (b.isRented()) {
  203.                 rentedBookList.add(b);
  204.             } else {
  205.                 freeBookList.add(b);
  206.             }
  207.         }
  208.     }
  209. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement