e3185a6a81c3dc39796bde9ad22f638820327e51
1 package be
.nikiroo
.fanfix_swing
.gui
;
3 import java
.awt
.BorderLayout
;
5 import java
.awt
.Dimension
;
7 import java
.util
.concurrent
.ExecutionException
;
9 import javax
.swing
.ImageIcon
;
10 import javax
.swing
.JLabel
;
11 import javax
.swing
.JPanel
;
12 import javax
.swing
.SwingWorker
;
13 import javax
.swing
.border
.EmptyBorder
;
15 import be
.nikiroo
.fanfix
.Instance
;
16 import be
.nikiroo
.fanfix_swing
.gui
.book
.BookBlock
;
17 import be
.nikiroo
.fanfix_swing
.gui
.book
.BookInfo
;
20 * Display detailed informations about a {@link BookInfo}.
22 * Actually, just its name, the number of stories it contains and a small image
27 public class DetailsPanel
extends JPanel
{
28 private static final long serialVersionUID
= 1L;
34 private BookInfo info
;
37 * Create a new {@link DetailsPanel}.
39 public DetailsPanel() {
40 this.setLayout(new BorderLayout());
42 this.setPreferredSize(new Dimension(300, 300));
43 this.setMinimumSize(new Dimension(200, 200));
45 icon
= config(new JLabel(), Color
.black
);
46 name
= config(new JLabel(), Color
.black
);
47 opt
= config(new JLabel(), Color
.gray
);
49 JPanel panel
= new JPanel(new BorderLayout());
50 panel
.add(name
, BorderLayout
.NORTH
);
51 panel
.add(opt
, BorderLayout
.SOUTH
);
52 panel
.setBorder(new EmptyBorder(0, 0, 10, 0));
54 this.add(icon
, BorderLayout
.CENTER
);
55 this.add(panel
, BorderLayout
.SOUTH
);
61 * Configure a {@link JLabel} with the given colour.
64 * the label to configure
68 * @return the (same) configured label
70 private JLabel
config(JLabel label
, Color color
) {
71 label
.setAlignmentX(CENTER_ALIGNMENT
);
72 label
.setHorizontalAlignment(JLabel
.CENTER
);
73 label
.setHorizontalTextPosition(JLabel
.CENTER
);
74 label
.setForeground(color
);
79 * Set the {@link BookInfo} you want to see displayed here.
82 * the {@link BookInfo} to display
84 public void setBook(final BookInfo info
) {
91 } else if (info
.getMainInfo() == null) {
93 "All the " + info
.getType().toString().toLowerCase() + "s");
94 opt
.setText(info
.getSecondaryInfo(true));
96 final String myId
= info
.getId();
98 name
.setText(info
.getMainInfo());
99 opt
.setText(info
.getSecondaryInfo(true));
101 new SwingWorker
<Image
, Void
>() {
103 protected Image
doInBackground() throws Exception
{
106 BookInfo current
= DetailsPanel
.this.info
;
107 if (current
!= null && current
.getId().equals(myId
)) {
108 return BookBlock
.generateCoverImage(
109 Instance
.getInstance().getLibrary(), info
);
116 protected void done() {
117 BookInfo current
= DetailsPanel
.this.info
;
118 if (current
!= null && current
.getId().equals(myId
)) {
122 icon
.setIcon(new ImageIcon(img
));
123 } catch (InterruptedException e
) {
124 } catch (ExecutionException e
) {