1 package be
.nikiroo
.fanfix_swing
.gui
;
4 import java
.awt
.event
.ActionEvent
;
5 import java
.awt
.event
.ActionListener
;
6 import java
.awt
.event
.KeyEvent
;
7 import java
.io
.IOException
;
9 import javax
.swing
.JComponent
;
10 import javax
.swing
.JFrame
;
11 import javax
.swing
.JLabel
;
12 import javax
.swing
.JMenu
;
13 import javax
.swing
.JMenuBar
;
14 import javax
.swing
.JMenuItem
;
15 import javax
.swing
.JPanel
;
16 import javax
.swing
.JSplitPane
;
17 import javax
.swing
.SwingWorker
;
19 import be
.nikiroo
.utils
.Version
;
21 public class MainFrame
extends JFrame
{
22 private BooksPanel books
;
23 private DetailsPanel details
;
25 public MainFrame(boolean sidePanel
, boolean detailsPanel
) {
26 super("Fanfix " + Version
.getCurrentVersion());
28 setJMenuBar(createMenuBar());
33 final BrowserPanel browser
= new BrowserPanel();
35 JComponent other
= null;
36 boolean orientationH
= true;
37 if (sidePanel
&& !detailsPanel
) {
39 } else if (sidePanel
&& detailsPanel
) {
40 JComponent side
= browser
;
41 details
= new DetailsPanel();
42 other
= split(side
, details
, false, 0.5, 1);
43 } else if (!sidePanel
&& !detailsPanel
) {
45 other
= new JLabel("<< Go back");
46 } else if (!sidePanel
&& detailsPanel
) {
47 JComponent goBack
= new JLabel("<< Go back");
48 details
= new DetailsPanel();
49 other
= split(goBack
, details
, false, 0.5, 1);
52 books
= new BooksPanel(true);
53 browser
.addActionListener(new ActionListener() {
55 public void actionPerformed(ActionEvent e
) {
56 books
.load(browser
.getSelectedSources(), browser
.getSelectedAuthors(), browser
.getSelectedTags());
57 details
.setBook(browser
.getHighlight());
61 JSplitPane split
= split(other
, books
, orientationH
, 0.5, 0);
66 private JSplitPane
split(JComponent leftTop
, JComponent rightBottom
, boolean horizontal
, double ratio
,
68 JSplitPane split
= new JSplitPane(horizontal ? JSplitPane
.HORIZONTAL_SPLIT
: JSplitPane
.VERTICAL_SPLIT
, leftTop
,
70 split
.setOneTouchExpandable(true);
71 split
.setResizeWeight(weight
);
72 split
.setContinuousLayout(true);
73 split
.setDividerLocation(ratio
);
78 private JMenuBar
createMenuBar() {
79 JMenuBar bar
= new JMenuBar();
81 JMenu file
= new JMenu("File");
82 file
.setMnemonic(KeyEvent
.VK_F
);
84 JMenuItem item1
= new JMenuItem("Uuu", KeyEvent
.VK_U
);
85 item1
.addActionListener(new ActionListener() {
87 public void actionPerformed(ActionEvent e
) {
88 System
.out
.println("Uuu: ACTION");
94 JMenu edit
= new JMenu("Edit");
95 edit
.setMnemonic(KeyEvent
.VK_E
);
97 JMenu view
= new JMenu("View");
98 view
.setMnemonic(KeyEvent
.VK_V
);
100 JMenuItem listMode
= new JMenuItem("List mode", KeyEvent
.VK_L
);
101 listMode
.addActionListener(new ActionListener() {
103 public void actionPerformed(ActionEvent e
) {
104 books
.setListMode(!books
.isListMode());