1 package be
.nikiroo
.fanfix
.reader
;
3 import java
.awt
.Desktop
;
4 import java
.awt
.FlowLayout
;
5 import java
.awt
.event
.ActionEvent
;
6 import java
.awt
.event
.ActionListener
;
7 import java
.awt
.event
.KeyEvent
;
8 import java
.awt
.event
.WindowEvent
;
10 import java
.io
.IOException
;
11 import java
.util
.ArrayList
;
12 import java
.util
.List
;
14 import javax
.swing
.JFrame
;
15 import javax
.swing
.JMenu
;
16 import javax
.swing
.JMenuBar
;
17 import javax
.swing
.JMenuItem
;
18 import javax
.swing
.JOptionPane
;
19 import javax
.swing
.JPanel
;
21 import be
.nikiroo
.fanfix
.Instance
;
22 import be
.nikiroo
.fanfix
.Main
;
23 import be
.nikiroo
.fanfix
.data
.MetaData
;
24 import be
.nikiroo
.fanfix
.reader
.LocalReaderBook
.BookActionListner
;
26 class LocalReaderFrame
extends JFrame
{
27 private static final long serialVersionUID
= 1L;
28 private LocalReader reader
;
29 private List
<MetaData
> stories
;
30 private List
<LocalReaderBook
> books
;
31 private JPanel bookPane
;
34 public LocalReaderFrame(LocalReader reader
, String type
) {
39 setDefaultCloseOperation(JFrame
.EXIT_ON_CLOSE
);
41 setLayout(new FlowLayout());
43 books
= new ArrayList
<LocalReaderBook
>();
44 bookPane
= new JPanel();
48 setJMenuBar(createMenu());
53 private void refreshBooks(String type
) {
55 stories
= Instance
.getLibrary().getList(type
);
58 for (MetaData meta
: stories
) {
59 LocalReaderBook book
= new LocalReaderBook(meta
);
61 final String luid
= meta
.getLuid();
62 book
.addActionListener(new BookActionListner() {
63 public void select(LocalReaderBook book
) {
64 for (LocalReaderBook abook
: books
) {
65 abook
.setSelected(abook
== book
);
69 public void action(LocalReaderBook book
) {
71 File target
= LocalReaderFrame
.this.reader
73 Desktop
.getDesktop().browse(target
.toURI());
74 } catch (IOException e
) {
87 private JMenuBar
createMenu() {
88 JMenuBar bar
= new JMenuBar();
90 JMenu file
= new JMenu("File");
92 JMenuItem imprt
= new JMenuItem("Import", KeyEvent
.VK_I
);
93 imprt
.addActionListener(new ActionListener() {
94 public void actionPerformed(ActionEvent e
) {
95 String url
= JOptionPane
.showInputDialog(LocalReaderFrame
.this,
97 if (Main
.imprt(url
) != 0) {
98 JOptionPane
.showMessageDialog(LocalReaderFrame
.this,
99 "Cannot import", "Imort error",
100 JOptionPane
.ERROR_MESSAGE
);
106 JMenu types
= new JMenu("Type");
107 List
<String
> tt
= Instance
.getLibrary().getTypes();
109 for (final String type
: tt
) {
110 JMenuItem item
= new JMenuItem(type
== null ?
"[all]" : type
);
111 item
.addActionListener(new ActionListener() {
112 public void actionPerformed(ActionEvent e
) {
118 JMenuItem exit
= new JMenuItem("Exit", KeyEvent
.VK_X
);
119 exit
.addActionListener(new ActionListener() {
120 public void actionPerformed(ActionEvent e
) {
121 LocalReaderFrame
.this.dispatchEvent(new WindowEvent(
122 LocalReaderFrame
.this, WindowEvent
.WINDOW_CLOSING
));