Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package oop.basic;
- import javax.swing.*;
- import javax.swing.event.ListSelectionEvent;
- import javax.swing.event.ListSelectionListener;
- import java.awt.*;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Observable;
- import java.util.Observer;
- /**
- * @author Arjen
- * @date 21/05/16
- */
- public class Display extends JFrame implements Observer{
- private Library lib;
- private JPanel buttons1Panel;
- private JPanel listsPanel;
- private JPanel buttons2Panel;
- private JButton newMemButton;
- private JButton newBookButton;
- private JButton reportButton;
- private JButton rentButton;
- private JButton returnButton;
- private JButton saveButton;
- private JButton restoreButton;
- private JList<Member> memberJList;
- private List<Book> freeBookList;
- private JList<Book> freeBookJList;
- private List<Book> rentedBookList;
- private JList<Book> rentedBookJList;
- public Display(Library lib) {
- this.lib = lib;
- //Initializing the frame and layout of display
- buttons1Panel = new JPanel();
- listsPanel = new JPanel();
- buttons2Panel = new JPanel();
- setTitle("DatBoi Library");
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- add(buttons1Panel, BorderLayout.NORTH);
- add(listsPanel, BorderLayout.CENTER);
- add(buttons2Panel, BorderLayout.SOUTH);
- //Initializing all the Action objects (in this case all buttons)
- //TODO: Icon still shows up, find way to remove?
- newMemButton = new JButton("New Member");
- newMemButton.setToolTipText("Add a new member to the library list");
- newMemButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- JTextField memberName = new JTextField();
- JTextField memberAddress = new JTextField();
- JPanel panel = new JPanel(new GridLayout(0, 1));
- panel.add(new JLabel("Member name:"));
- panel.add(memberName);
- panel.add(new JLabel("Member address:"));
- panel.add(memberAddress);
- int result = JOptionPane.showConfirmDialog(null, panel, "Add new member",
- JOptionPane.OK_CANCEL_OPTION);
- if (result == JOptionPane.OK_OPTION) {
- Display.this.lib.addNewMember(memberAddress.getText(), memberName.getText());
- }
- }
- });
- newBookButton = new JButton("New Book");
- newBookButton.setToolTipText("Add a new book to the library list");
- newBookButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- JTextField bookName = new JTextField();
- JTextField bookAuthors = new JTextField();
- JPanel panel = new JPanel(new GridLayout(0, 1));
- panel.add(new JLabel("Book Name:"));
- panel.add(bookName);
- panel.add(new JLabel("Book Authors, separated only by comma's:"));
- panel.add(bookAuthors);
- int result = JOptionPane.showConfirmDialog(null, panel, "Add new book",
- JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null);
- if (result == JOptionPane.OK_OPTION) {
- String []authors = bookAuthors.getText().split("\\.");
- Display.this.lib.addNewBook(bookName.getText(), authors);
- }
- }
- });
- reportButton = new JButton("Report");
- reportButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- }
- });
- rentButton = new JButton("Rent");
- rentButton.setToolTipText("Rent out the selected free book to the selected person");
- rentButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- }
- });
- returnButton = new JButton("Return");
- returnButton.setToolTipText("Return the selected book");
- returnButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- }
- });
- saveButton = new JButton("Save");
- saveButton.setToolTipText("Save current state of library");
- saveButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- }
- });
- restoreButton = new JButton("Restore");
- restoreButton.setToolTipText("Restore library to a saved state");
- restoreButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- }
- });
- //Initializing list information
- freeBookList = new ArrayList<>();
- rentedBookList = new ArrayList<>();
- updateBookLists();
- memberJList = new JList<>();
- memberJList.setListData(lib.getMemberList().toArray(new Member[lib.getMemberList().size()]));
- memberJList.addListSelectionListener(new ListSelectionListener() {
- @Override
- public void valueChanged(ListSelectionEvent e) {
- if (!e.getValueIsAdjusting()) {
- String memberName = ((Member) ((JList) e.getSource()).getSelectedValue()).getName();
- List<Book> rentedBooksByMember = new ArrayList<>();
- for (Book b : rentedBookList) {
- if (b.getLastRentData().getMemberData().getName() == memberName) {
- rentedBooksByMember.add(b);
- }
- }
- Display.this.rentedBookJList.setListData(rentedBooksByMember.toArray(new Book[rentedBookList.size()]));
- }
- }
- });
- JScrollPane memberScrollPane = new JScrollPane(memberJList);
- freeBookJList = new JList<>();
- freeBookJList.setListData(freeBookList.toArray(new Book[freeBookList.size()]));
- JScrollPane freeBookScrollPane = new JScrollPane(freeBookJList);
- rentedBookJList = new JList<>();
- rentedBookJList.setListData(rentedBookList.toArray(new Book[rentedBookList.size()]));
- JScrollPane rentedBookScrollPane = new JScrollPane(rentedBookJList);
- //Adding all components to the JPanels
- buttons1Panel.add(newMemButton);
- buttons1Panel.add(newBookButton);
- buttons1Panel.add(reportButton);
- buttons1Panel.add(rentButton);
- buttons1Panel.add(returnButton);
- buttons2Panel.add(saveButton);
- buttons2Panel.add(restoreButton);
- listsPanel.add(memberScrollPane);
- listsPanel.add(freeBookScrollPane);
- listsPanel.add(rentedBookScrollPane);
- }
- @Override
- public void update(Observable o, Object arg) {
- if (o.equals(lib)) {
- System.out.println("Display detected update");
- memberJList.setListData(lib.getMemberList().toArray(new Member[lib.getMemberList().size()]));
- freeBookList.clear();
- rentedBookList.clear();
- updateBookLists();
- freeBookJList.setListData(freeBookList.toArray(new Book[freeBookList.size()]));
- rentedBookJList.setListData(rentedBookList.toArray(new Book[rentedBookList.size()]));
- listsPanel.revalidate();
- listsPanel.repaint();
- }
- }
- public void updateBookLists() {
- for (Book b: this.lib.getBookList()) {
- if (b.isRented()) {
- rentedBookList.add(b);
- } else {
- freeBookList.add(b);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement