1   /**
2    * Distribution License:
3    * JSword is free software; you can redistribute it and/or modify it under
4    * the terms of the GNU Lesser General Public License, version 2.1 or later
5    * as published by the Free Software Foundation. This program is distributed
6    * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
7    * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8    * See the GNU Lesser General Public License for more details.
9    *
10   * The License is available on the internet at:
11   *      http://www.gnu.org/copyleft/lgpl.html
12   * or by writing to:
13   *      Free Software Foundation, Inc.
14   *      59 Temple Place - Suite 330
15   *      Boston, MA 02111-1307, USA
16   *
17   * © CrossWire Bible Society, 2005 - 2016
18   *
19   */
20  package org.crosswire.jsword.book;
21  
22  import java.util.List;
23  
24  /**
25   * There are several lists of Books, the most important being the installed
26   * Books, however there may be others like the available books or books from a
27   * specific driver. This interface provides a common method of accessing all of
28   * them.
29   * 
30   * @see gnu.lgpl.License The GNU Lesser General Public License for details.
31   * @see gnu.lgpl.License
32   * @author Joe Walker
33   */
34  public interface BookList {
35      /**
36       * Get a list of all the Books of all types.
37       * 
38       * @return the desired list of books
39       */
40      List<Book> getBooks();
41  
42      /**
43       * Get a filtered list of all the Books.
44       * 
45       * @param filter the filter to apply to the list of books
46       * @return the desired list of books
47       * @see BookFilters
48       */
49      List<Book> getBooks(BookFilter filter);
50  
51      /**
52       * Add a BibleListener from our list of listeners
53       * 
54       * @param li interested listener
55       */
56      void addBooksListener(BooksListener li);
57  
58      /**
59       * Remove a BibleListener to our list of listeners
60       * 
61       * @param li disinterested listener
62       */
63      void removeBooksListener(BooksListener li);
64  }
65