import java.util.ArrayList;
import java.util.List;
-import javax.management.RuntimeErrorException;
import javax.swing.JLabel;
import javax.swing.JPanel;
-import be.nikiroo.fanfix.data.MetaData;
import be.nikiroo.fanfix.reader.ui.GuiReaderBook.BookActionListener;
import be.nikiroo.utils.ui.WrapLayout;
private BookActionListener action;
private Color backgroundColor;
private GuiReader reader;
- private List<MetaData> stories;
+ private List<GuiReaderBookInfo> infos;
private List<GuiReaderBook> books;
private JPanel pane;
private boolean words; // words or authors (secondary info on books)
*/
public void setActionListener(BookActionListener action) {
this.action = action;
- refreshBooks(stories, words);
+ refreshBooks(infos, words);
}
/**
* Refresh the list of {@link GuiReaderBook}s displayed in the control.
*
* @param stories
- * the stories
+ * the new list of stories
+ * @param seeWordcount
+ * TRUE to see word counts, FALSE to see authors
+ */
+ public void refreshBooks(List<GuiReaderBookInfo> infos, boolean seeWordcount) {
+ this.infos = infos;
+ refreshBooks(seeWordcount);
+ }
+
+ /**
+ * Refresh the list of {@link GuiReaderBook}s displayed in the control.
+ * <p>
+ * Will not change the current stories.
+ *
* @param seeWordcount
* TRUE to see word counts, FALSE to see authors
*/
- public void refreshBooks(List<MetaData> stories, boolean seeWordcount) {
- this.stories = stories;
+ public void refreshBooks(boolean seeWordcount) {
this.words = seeWordcount;
books = new ArrayList<GuiReaderBook>();
pane.invalidate();
pane.removeAll();
- if (stories != null) {
- for (MetaData meta : stories) {
- GuiReaderBook book = new GuiReaderBook(reader, meta,
- reader.isCached(meta.getLuid()), seeWordcount);
+ if (infos != null) {
+ for (GuiReaderBookInfo info : infos) {
+ boolean isCached = false;
+ if (info.getMeta() != null) {
+ isCached = reader.isCached(info.getMeta().getLuid());
+ }
+
+ GuiReaderBook book = new GuiReaderBook(reader, info, isCached,
+ words);
if (backgroundColor != null) {
book.setBackground(backgroundColor);
}