private List<BookActionListener> listeners;
private GuiReaderBookInfo info;
private boolean cached;
+ private boolean seeWordCount;
/**
* Create a new {@link GuiReaderBook} item for the given {@link Story}.
*/
public GuiReaderBook(Reader reader, GuiReaderBookInfo info, boolean cached,
boolean seeWordCount) {
- this.cached = cached;
this.info = info;
-
- String optSecondary = info.getSecondaryInfo(seeWordCount);
+ this.cached = cached;
+ this.seeWordCount = seeWordCount;
icon = new JLabel(GuiReaderCoverImager.generateCoverIcon(
reader.getLibrary(), info));
- title = new JLabel(
- String.format(
- "<html>"
- + "<body style='width: %d px; height: %d px; text-align: center'>"
- + "%s" + "<br>" + "<span style='color: %s;'>"
- + "%s" + "</span>" + "</body>" + "</html>",
- GuiReaderCoverImager.TEXT_WIDTH,
- GuiReaderCoverImager.TEXT_HEIGHT, info.getMainInfo(),
- AUTHOR_COLOR, optSecondary));
+
+ title = new JLabel();
+ updateTitle();
setLayout(new BorderLayout(10, 10));
add(icon, BorderLayout.CENTER);
addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
- if (e.isPopupTrigger()) {
+ if (isEnabled() && e.isPopupTrigger()) {
popup(e);
}
}
@Override
public void mousePressed(MouseEvent e) {
- if (e.isPopupTrigger()) {
+ if (isEnabled() && e.isPopupTrigger()) {
popup(e);
}
}
}
lastClick = now;
+ e.consume();
}
}
listener.select((GuiReaderBook.this));
listener.popupRequested(GuiReaderBook.this, e);
}
+
+ e.consume();
}
});
}
}
/**
- * Paint the item, then call {@link GuiReaderBook#paintOverlay(Graphics)}.
+ * Update the title, paint the item, then call
+ * {@link GuiReaderCoverImager#paintOverlay(Graphics, boolean, boolean, boolean, boolean)}
+ * .
*/
@Override
public void paint(Graphics g) {
+ updateTitle();
super.paint(g);
GuiReaderCoverImager.paintOverlay(g, isEnabled(), isSelected(),
isHovered(), isCached());
}
+
+ /**
+ * Update the title with the currently registered information.
+ */
+ private void updateTitle() {
+ String optSecondary = info.getSecondaryInfo(seeWordCount);
+ title.setText(String
+ .format("<html>"
+ + "<body style='width: %d px; height: %d px; text-align: center'>"
+ + "%s" + "<br>" + "<span style='color: %s;'>" + "%s"
+ + "</span>" + "</body>" + "</html>",
+ GuiReaderCoverImager.TEXT_WIDTH,
+ GuiReaderCoverImager.TEXT_HEIGHT, info.getMainInfo(),
+ AUTHOR_COLOR, optSecondary));
+ }
}