work on refresh after popup action
[fanfix.git] / src / be / nikiroo / fanfix_swing / gui / MainFrame.java
1 package be.nikiroo.fanfix_swing.gui;
2
3 import java.awt.event.ActionEvent;
4 import java.awt.event.ActionListener;
5 import java.awt.event.KeyEvent;
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;
13 import javax.swing.JSplitPane;
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);
49
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 });
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 });
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 }