1 package be
.nikiroo
.fanfix
.reader
;
3 import java
.awt
.BorderLayout
;
4 import java
.awt
.Desktop
;
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
;
20 import javax
.swing
.JScrollPane
;
22 import be
.nikiroo
.fanfix
.Instance
;
23 import be
.nikiroo
.fanfix
.Main
;
24 import be
.nikiroo
.fanfix
.data
.MetaData
;
25 import be
.nikiroo
.fanfix
.reader
.LocalReaderBook
.BookActionListner
;
27 class LocalReaderFrame
extends JFrame
{
28 private static final long serialVersionUID
= 1L;
29 private LocalReader reader
;
30 private List
<MetaData
> stories
;
31 private List
<LocalReaderBook
> books
;
32 private JPanel bookPane
;
35 public LocalReaderFrame(LocalReader reader
, String type
) {
40 setDefaultCloseOperation(JFrame
.EXIT_ON_CLOSE
);
42 setLayout(new BorderLayout());
44 books
= new ArrayList
<LocalReaderBook
>();
45 bookPane
= new JPanel(new WrapLayout(WrapLayout
.LEADING
));
47 add(new JScrollPane(bookPane
), BorderLayout
.CENTER
);
50 setJMenuBar(createMenu());
55 private void refreshBooks(String type
) {
57 stories
= Instance
.getLibrary().getList(type
);
60 for (MetaData meta
: stories
) {
61 LocalReaderBook book
= new LocalReaderBook(meta
);
63 final String luid
= meta
.getLuid();
64 book
.addActionListener(new BookActionListner() {
65 public void select(LocalReaderBook book
) {
66 for (LocalReaderBook abook
: books
) {
67 abook
.setSelected(abook
== book
);
71 public void action(LocalReaderBook book
) {
73 File target
= LocalReaderFrame
.this.reader
75 Desktop
.getDesktop().browse(target
.toURI());
76 } catch (IOException e
) {
89 private JMenuBar
createMenu() {
90 JMenuBar bar
= new JMenuBar();
92 JMenu file
= new JMenu("File");
94 JMenuItem imprt
= new JMenuItem("Import", KeyEvent
.VK_I
);
95 imprt
.addActionListener(new ActionListener() {
96 public void actionPerformed(ActionEvent e
) {
97 String url
= JOptionPane
.showInputDialog(LocalReaderFrame
.this,
99 if (Main
.imprt(url
) != 0) {
100 JOptionPane
.showMessageDialog(LocalReaderFrame
.this,
101 "Cannot import", "Imort error",
102 JOptionPane
.ERROR_MESSAGE
);
108 JMenu types
= new JMenu("Type");
109 List
<String
> tt
= Instance
.getLibrary().getTypes();
111 for (final String type
: tt
) {
112 JMenuItem item
= new JMenuItem(type
== null ?
"[all]" : type
);
113 item
.addActionListener(new ActionListener() {
114 public void actionPerformed(ActionEvent e
) {
120 JMenuItem exit
= new JMenuItem("Exit", KeyEvent
.VK_X
);
121 exit
.addActionListener(new ActionListener() {
122 public void actionPerformed(ActionEvent e
) {
123 LocalReaderFrame
.this.dispatchEvent(new WindowEvent(
124 LocalReaderFrame
.this, WindowEvent
.WINDOW_CLOSING
));