975136fdf537eefb17554fd3031a348f225a6d0f
[fanfix.git] / src / be / nikiroo / fanfix / reader / ui / GuiReaderPropertiesFrame.java
1 package be.nikiroo.fanfix.reader.ui;
2
3 import java.awt.BorderLayout;
4 import java.awt.Color;
5 import java.awt.Font;
6 import java.util.List;
7 import java.util.Map.Entry;
8
9 import javax.swing.BorderFactory;
10 import javax.swing.BoxLayout;
11 import javax.swing.ImageIcon;
12 import javax.swing.JFrame;
13 import javax.swing.JLabel;
14 import javax.swing.JPanel;
15 import javax.swing.JTextArea;
16
17 import be.nikiroo.fanfix.data.MetaData;
18 import be.nikiroo.fanfix.data.Story;
19 import be.nikiroo.fanfix.reader.BasicReader;
20 import be.nikiroo.fanfix.reader.Reader;
21
22 /**
23 * A frame displaying properties and other information of a {@link Story}.
24 *
25 * @author niki
26 */
27 public class GuiReaderPropertiesFrame extends JFrame {
28 private static final long serialVersionUID = 1L;
29
30 /**
31 * Create a new {@link GuiReaderPropertiesFrame}.
32 *
33 * @param reader
34 * the linked reader
35 * @param meta
36 * the meta to describe
37 */
38 public GuiReaderPropertiesFrame(Reader reader, GuiReaderBookInfo info) {
39 MetaData meta = info.getMeta();
40
41 // Borders
42 int top = 20;
43 int space = 10;
44
45 // Image
46 ImageIcon img = GuiReaderCoverImager.generateCoverIcon(
47 reader.getLibrary(), info);
48
49 // frame
50 setTitle(meta.getLuid() + ": " + meta.getTitle());
51
52 setSize(800, img.getIconHeight() + 2 * top);
53 setLayout(new BorderLayout());
54
55 // Main panel
56 JPanel mainPanel = new JPanel(new BorderLayout());
57 JPanel mainPanelKeys = new JPanel();
58 mainPanelKeys.setLayout(new BoxLayout(mainPanelKeys, BoxLayout.Y_AXIS));
59 JPanel mainPanelValues = new JPanel();
60 mainPanelValues.setLayout(new BoxLayout(mainPanelValues,
61 BoxLayout.Y_AXIS));
62
63 mainPanel.add(mainPanelKeys, BorderLayout.WEST);
64 mainPanel.add(mainPanelValues, BorderLayout.CENTER);
65
66 List<Entry<String, String>> desc = BasicReader.getMetaDesc(meta);
67
68 Color trans = new Color(0, 0, 0, 1);
69 for (Entry<String, String> descLine : desc) {
70 JTextArea key = new JTextArea(descLine.getKey());
71 key.setFont(new Font(key.getFont().getFontName(), Font.BOLD, key
72 .getFont().getSize()));
73 key.setEditable(false);
74 key.setLineWrap(false);
75 key.setBackground(trans);
76 mainPanelKeys.add(key);
77
78 JTextArea value = new JTextArea(descLine.getValue());
79 value.setEditable(false);
80 value.setLineWrap(false);
81 value.setBackground(trans);
82 mainPanelValues.add(value);
83 }
84
85 // Image
86 JLabel imgLabel = new JLabel(img);
87 imgLabel.setVerticalAlignment(JLabel.TOP);
88
89 // Borders
90 mainPanelKeys.setBorder(BorderFactory.createEmptyBorder(top, space, 0,
91 0));
92 mainPanelValues.setBorder(BorderFactory.createEmptyBorder(top, space,
93 0, 0));
94 imgLabel.setBorder(BorderFactory.createEmptyBorder(0, space, 0, 0));
95
96 // Add all
97 add(imgLabel, BorderLayout.WEST);
98 add(mainPanel, BorderLayout.CENTER);
99 }
100 }