importer frame: step 1
[fanfix.git] / src / be / nikiroo / fanfix_swing / gui / MainFrame.java
CommitLineData
3cdf3fd8
NR
1package be.nikiroo.fanfix_swing.gui;
2
3cdf3fd8
NR
3import java.awt.event.ActionEvent;
4import java.awt.event.ActionListener;
5import java.awt.event.KeyEvent;
3cdf3fd8
NR
6
7import javax.swing.JComponent;
8import javax.swing.JFrame;
9import javax.swing.JLabel;
10import javax.swing.JMenu;
11import javax.swing.JMenuBar;
12import javax.swing.JMenuItem;
3cdf3fd8 13import javax.swing.JSplitPane;
3cdf3fd8
NR
14
15import be.nikiroo.utils.Version;
16
17public class MainFrame extends JFrame {
18 private BooksPanel books;
19 private DetailsPanel details;
04eafeea 20 private BrowserPanel browser;
3cdf3fd8
NR
21
22 public MainFrame(boolean sidePanel, boolean detailsPanel) {
23 super("Fanfix " + Version.getCurrentVersion());
24 setSize(800, 600);
25 setJMenuBar(createMenuBar());
26
27 sidePanel = true;
28 detailsPanel = true;
29
04eafeea 30 browser = new BrowserPanel();
89c5b3e2 31 books = new BooksPanel(true);
3cdf3fd8
NR
32
33 JComponent other = null;
34 boolean orientationH = true;
35 if (sidePanel && !detailsPanel) {
36 other = browser;
37 } else if (sidePanel && detailsPanel) {
38 JComponent side = browser;
39 details = new DetailsPanel();
40 other = split(side, details, false, 0.5, 1);
41 } else if (!sidePanel && !detailsPanel) {
42 orientationH = false;
43 other = new JLabel("<< Go back");
44 } else if (!sidePanel && detailsPanel) {
45 JComponent goBack = new JLabel("<< Go back");
46 details = new DetailsPanel();
47 other = split(goBack, details, false, 0.5, 1);
48 }
49
3cdf3fd8
NR
50 browser.addActionListener(new ActionListener() {
51 @Override
52 public void actionPerformed(ActionEvent e) {
32ed6089
NR
53 books.load(browser.getSelectedSources(),
54 browser.getSelectedAuthors(),
55 browser.getSelectedTags());
3cdf3fd8
NR
56 details.setBook(browser.getHighlight());
57 }
58 });
2a03ecc0
NR
59 books.addActionListener(new ActionListener() {
60 @Override
61 public void actionPerformed(ActionEvent e) {
62 if (BooksPanel.INVALIDATE_CACHE.equals(e.getActionCommand())) {
63 browser.reloadData();
64 }
65 }
66 });
3cdf3fd8
NR
67
68 JSplitPane split = split(other, books, orientationH, 0.5, 0);
69
70 this.add(split);
71 }
72
32ed6089
NR
73 private JSplitPane split(JComponent leftTop, JComponent rightBottom,
74 boolean horizontal, double ratio, double weight) {
75 JSplitPane split = new JSplitPane(
76 horizontal ? JSplitPane.HORIZONTAL_SPLIT
77 : JSplitPane.VERTICAL_SPLIT,
78 leftTop, rightBottom);
3cdf3fd8
NR
79 split.setOneTouchExpandable(true);
80 split.setResizeWeight(weight);
81 split.setContinuousLayout(true);
82 split.setDividerLocation(ratio);
83
84 return split;
85 }
86
87 private JMenuBar createMenuBar() {
88 JMenuBar bar = new JMenuBar();
89
90 JMenu file = new JMenu("File");
91 file.setMnemonic(KeyEvent.VK_F);
92
04eafeea 93 JMenuItem item1 = new JMenuItem("Download", KeyEvent.VK_D);
3cdf3fd8
NR
94 item1.addActionListener(new ActionListener() {
95 @Override
96 public void actionPerformed(ActionEvent e) {
e3fef8b5
NR
97 // TODO: correctly use the importer (wip)
98 new ImporterFrame().imprtUrl(MainFrame.this, new Runnable() {
04eafeea
NR
99 @Override
100 public void run() {
101 browser.reloadData();
32ed6089
NR
102 books.load(browser.getSelectedSources(),
103 browser.getSelectedAuthors(),
04eafeea
NR
104 browser.getSelectedTags());
105 details.setBook(browser.getHighlight());
106 }
107 });
108 }
109 });
110
111 JMenuItem item2 = new JMenuItem("Import file", KeyEvent.VK_I);
112 item2.addActionListener(new ActionListener() {
113 @Override
114 public void actionPerformed(ActionEvent e) {
e3fef8b5
NR
115 // TODO: correctly use the importer (wip)
116 new ImporterFrame().imprtFile(MainFrame.this, new Runnable() {
04eafeea
NR
117 @Override
118 public void run() {
119 browser.reloadData();
32ed6089
NR
120 books.load(browser.getSelectedSources(),
121 browser.getSelectedAuthors(),
04eafeea
NR
122 browser.getSelectedTags());
123 details.setBook(browser.getHighlight());
124 }
125 });
3cdf3fd8
NR
126 }
127 });
128
129 file.add(item1);
04eafeea 130 file.add(item2);
3cdf3fd8
NR
131
132 JMenu edit = new JMenu("Edit");
133 edit.setMnemonic(KeyEvent.VK_E);
134
135 JMenu view = new JMenu("View");
136 view.setMnemonic(KeyEvent.VK_V);
137
138 JMenuItem listMode = new JMenuItem("List mode", KeyEvent.VK_L);
139 listMode.addActionListener(new ActionListener() {
140 @Override
141 public void actionPerformed(ActionEvent e) {
142 books.setListMode(!books.isListMode());
143 }
144 });
145
146 view.add(listMode);
147
148 bar.add(file);
149 bar.add(edit);
150 bar.add(view);
151
152 return bar;
153 }
154}