9d25169c3e6276199324ed6423f1cecab101d9c2
1 package be
.nikiroo
.fanfix_swing
.gui
;
3 import java
.awt
.event
.ActionEvent
;
4 import java
.awt
.event
.ActionListener
;
5 import java
.awt
.event
.KeyEvent
;
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
;
15 import be
.nikiroo
.fanfix_swing
.Actions
;
16 import be
.nikiroo
.utils
.Version
;
18 public class MainFrame
extends JFrame
{
19 private BooksPanel books
;
20 private DetailsPanel details
;
21 private BrowserPanel browser
;
23 public MainFrame(boolean sidePanel
, boolean detailsPanel
) {
24 super("Fanfix " + Version
.getCurrentVersion());
26 setJMenuBar(createMenuBar());
31 browser
= new BrowserPanel();
33 JComponent other
= null;
34 boolean orientationH
= true;
35 if (sidePanel
&& !detailsPanel
) {
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
) {
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);
50 books
= new BooksPanel(true);
52 browser
.addActionListener(new ActionListener() {
54 public void actionPerformed(ActionEvent e
) {
55 books
.load(browser
.getSelectedSources(),
56 browser
.getSelectedAuthors(),
57 browser
.getSelectedTags());
58 details
.setBook(browser
.getHighlight());
61 books
.addActionListener(new ActionListener() {
63 public void actionPerformed(ActionEvent e
) {
64 if (BooksPanel
.INVALIDATE_CACHE
.equals(e
.getActionCommand())) {
70 JSplitPane split
= split(other
, books
, orientationH
, 0.5, 0);
75 private JSplitPane
split(JComponent leftTop
, JComponent rightBottom
,
76 boolean horizontal
, double ratio
, double weight
) {
77 JSplitPane split
= new JSplitPane(
78 horizontal ? JSplitPane
.HORIZONTAL_SPLIT
79 : JSplitPane
.VERTICAL_SPLIT
,
80 leftTop
, rightBottom
);
81 split
.setOneTouchExpandable(true);
82 split
.setResizeWeight(weight
);
83 split
.setContinuousLayout(true);
84 split
.setDividerLocation(ratio
);
89 private JMenuBar
createMenuBar() {
90 JMenuBar bar
= new JMenuBar();
92 JMenu file
= new JMenu("File");
93 file
.setMnemonic(KeyEvent
.VK_F
);
95 JMenuItem item1
= new JMenuItem("Download", KeyEvent
.VK_D
);
96 item1
.addActionListener(new ActionListener() {
98 public void actionPerformed(ActionEvent e
) {
99 Actions
.imprt(MainFrame
.this, true, new Runnable() {
102 browser
.reloadData();
103 books
.load(browser
.getSelectedSources(),
104 browser
.getSelectedAuthors(),
105 browser
.getSelectedTags());
106 details
.setBook(browser
.getHighlight());
112 JMenuItem item2
= new JMenuItem("Import file", KeyEvent
.VK_I
);
113 item2
.addActionListener(new ActionListener() {
115 public void actionPerformed(ActionEvent e
) {
116 Actions
.imprt(MainFrame
.this, false, new Runnable() {
119 browser
.reloadData();
120 books
.load(browser
.getSelectedSources(),
121 browser
.getSelectedAuthors(),
122 browser
.getSelectedTags());
123 details
.setBook(browser
.getHighlight());
132 JMenu edit
= new JMenu("Edit");
133 edit
.setMnemonic(KeyEvent
.VK_E
);
135 JMenu view
= new JMenu("View");
136 view
.setMnemonic(KeyEvent
.VK_V
);
138 JMenuItem listMode
= new JMenuItem("List mode", KeyEvent
.VK_L
);
139 listMode
.addActionListener(new ActionListener() {
141 public void actionPerformed(ActionEvent e
) {
142 books
.setListMode(!books
.isListMode());