Commit | Line | Data |
---|---|---|
3cdf3fd8 NR |
1 | package be.nikiroo.fanfix_swing.gui; |
2 | ||
3cdf3fd8 NR |
3 | import java.awt.event.ActionEvent; |
4 | import java.awt.event.ActionListener; | |
5 | import java.awt.event.KeyEvent; | |
3cdf3fd8 NR |
6 | |
7 | import javax.swing.JComponent; | |
8 | import javax.swing.JFrame; | |
9 | import javax.swing.JLabel; | |
10 | import javax.swing.JMenu; | |
11 | import javax.swing.JMenuBar; | |
12 | import javax.swing.JMenuItem; | |
3cdf3fd8 | 13 | import javax.swing.JSplitPane; |
3cdf3fd8 NR |
14 | |
15 | import be.nikiroo.utils.Version; | |
16 | ||
17 | public class MainFrame extends JFrame { | |
18 | private BooksPanel books; | |
19 | private DetailsPanel details; | |
20 | ||
21 | public MainFrame(boolean sidePanel, boolean detailsPanel) { | |
22 | super("Fanfix " + Version.getCurrentVersion()); | |
23 | setSize(800, 600); | |
24 | setJMenuBar(createMenuBar()); | |
25 | ||
26 | sidePanel = true; | |
27 | detailsPanel = true; | |
28 | ||
29 | final BrowserPanel browser = new BrowserPanel(); | |
30 | ||
31 | JComponent other = null; | |
32 | boolean orientationH = true; | |
33 | if (sidePanel && !detailsPanel) { | |
34 | other = browser; | |
35 | } else if (sidePanel && detailsPanel) { | |
36 | JComponent side = browser; | |
37 | details = new DetailsPanel(); | |
38 | other = split(side, details, false, 0.5, 1); | |
39 | } else if (!sidePanel && !detailsPanel) { | |
40 | orientationH = false; | |
41 | other = new JLabel("<< Go back"); | |
42 | } else if (!sidePanel && detailsPanel) { | |
43 | JComponent goBack = new JLabel("<< Go back"); | |
44 | details = new DetailsPanel(); | |
45 | other = split(goBack, details, false, 0.5, 1); | |
46 | } | |
47 | ||
48 | books = new BooksPanel(true); | |
2a03ecc0 | 49 | |
3cdf3fd8 NR |
50 | browser.addActionListener(new ActionListener() { |
51 | @Override | |
52 | public void actionPerformed(ActionEvent e) { | |
53 | books.load(browser.getSelectedSources(), browser.getSelectedAuthors(), browser.getSelectedTags()); | |
54 | details.setBook(browser.getHighlight()); | |
55 | } | |
56 | }); | |
2a03ecc0 NR |
57 | books.addActionListener(new ActionListener() { |
58 | @Override | |
59 | public void actionPerformed(ActionEvent e) { | |
60 | if (BooksPanel.INVALIDATE_CACHE.equals(e.getActionCommand())) { | |
61 | browser.reloadData(); | |
62 | } | |
63 | } | |
64 | }); | |
3cdf3fd8 NR |
65 | |
66 | JSplitPane split = split(other, books, orientationH, 0.5, 0); | |
67 | ||
68 | this.add(split); | |
69 | } | |
70 | ||
71 | private JSplitPane split(JComponent leftTop, JComponent rightBottom, boolean horizontal, double ratio, | |
72 | double weight) { | |
73 | JSplitPane split = new JSplitPane(horizontal ? JSplitPane.HORIZONTAL_SPLIT : JSplitPane.VERTICAL_SPLIT, leftTop, | |
74 | rightBottom); | |
75 | split.setOneTouchExpandable(true); | |
76 | split.setResizeWeight(weight); | |
77 | split.setContinuousLayout(true); | |
78 | split.setDividerLocation(ratio); | |
79 | ||
80 | return split; | |
81 | } | |
82 | ||
83 | private JMenuBar createMenuBar() { | |
84 | JMenuBar bar = new JMenuBar(); | |
85 | ||
86 | JMenu file = new JMenu("File"); | |
87 | file.setMnemonic(KeyEvent.VK_F); | |
88 | ||
89 | JMenuItem item1 = new JMenuItem("Uuu", KeyEvent.VK_U); | |
90 | item1.addActionListener(new ActionListener() { | |
91 | @Override | |
92 | public void actionPerformed(ActionEvent e) { | |
93 | System.out.println("Uuu: ACTION"); | |
94 | } | |
95 | }); | |
96 | ||
97 | file.add(item1); | |
98 | ||
99 | JMenu edit = new JMenu("Edit"); | |
100 | edit.setMnemonic(KeyEvent.VK_E); | |
101 | ||
102 | JMenu view = new JMenu("View"); | |
103 | view.setMnemonic(KeyEvent.VK_V); | |
104 | ||
105 | JMenuItem listMode = new JMenuItem("List mode", KeyEvent.VK_L); | |
106 | listMode.addActionListener(new ActionListener() { | |
107 | @Override | |
108 | public void actionPerformed(ActionEvent e) { | |
109 | books.setListMode(!books.isListMode()); | |
110 | } | |
111 | }); | |
112 | ||
113 | view.add(listMode); | |
114 | ||
115 | bar.add(file); | |
116 | bar.add(edit); | |
117 | bar.add(view); | |
118 | ||
119 | return bar; | |
120 | } | |
121 | } |