Commit | Line | Data |
---|---|---|
14bb95fa NR |
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; | |
31e28683 | 18 | import be.nikiroo.fanfix.data.Story; |
14bb95fa NR |
19 | import be.nikiroo.fanfix.reader.BasicReader; |
20 | import be.nikiroo.fanfix.reader.Reader; | |
21 | ||
31e28683 NR |
22 | /** |
23 | * A frame displaying properties and other information of a {@link Story}. | |
24 | * | |
25 | * @author niki | |
26 | */ | |
14bb95fa NR |
27 | public class GuiReaderPropertiesFrame extends JFrame { |
28 | private static final long serialVersionUID = 1L; | |
29 | ||
31e28683 NR |
30 | /** |
31 | * Create a new {@link GuiReaderPropertiesFrame}. | |
32 | * | |
33 | * @param reader | |
34 | * the linked reader | |
35 | * @param meta | |
36 | * the meta to describe | |
37 | */ | |
79a99506 NR |
38 | public GuiReaderPropertiesFrame(Reader reader, GuiReaderBookInfo info) { |
39 | MetaData meta = info.getMeta(); | |
40 | ||
14bb95fa NR |
41 | // Borders |
42 | int top = 20; | |
43 | int space = 10; | |
44 | ||
45 | // Image | |
46 | ImageIcon img = GuiReaderCoverImager.generateCoverIcon( | |
79a99506 | 47 | reader.getLibrary(), info); |
14bb95fa NR |
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 | ||
79a99506 | 66 | List<Entry<String, String>> desc = BasicReader.getMetaDesc(meta); |
14bb95fa NR |
67 | |
68 | Color trans = new Color(0, 0, 0, 1); | |
79a99506 NR |
69 | for (Entry<String, String> descLine : desc) { |
70 | JTextArea key = new JTextArea(descLine.getKey()); | |
14bb95fa NR |
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 | ||
79a99506 | 78 | JTextArea value = new JTextArea(descLine.getValue()); |
14bb95fa NR |
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 | } |