X-Git-Url: http://git.nikiroo.be/?p=fanfix.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2FLocalReaderFrame.java;h=ed8a039051c8b5a59f3e7228ddd54e814c6fb122;hp=f196f95e1b8caa38d50f0ed2a2f13e94615f3d37;hb=333f0e7b5e333e8f6222881ce35398f403fc4121;hpb=a6395bef99a8e917f67341ef1906917b87df24a4 diff --git a/src/be/nikiroo/fanfix/reader/LocalReaderFrame.java b/src/be/nikiroo/fanfix/reader/LocalReaderFrame.java index f196f95..ed8a039 100644 --- a/src/be/nikiroo/fanfix/reader/LocalReaderFrame.java +++ b/src/be/nikiroo/fanfix/reader/LocalReaderFrame.java @@ -4,21 +4,34 @@ import java.awt.Desktop; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import java.awt.event.WindowEvent; +import java.io.File; import java.io.IOException; +import java.util.ArrayList; import java.util.List; -import javax.swing.JButton; import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPanel; import be.nikiroo.fanfix.Instance; +import be.nikiroo.fanfix.Main; import be.nikiroo.fanfix.data.MetaData; -import be.nikiroo.fanfix.supported.BasicSupport.SupportType; +import be.nikiroo.fanfix.reader.LocalReaderBook.BookActionListner; class LocalReaderFrame extends JFrame { private static final long serialVersionUID = 1L; private LocalReader reader; + private List stories; + private List books; + private JPanel bookPane; + private String type; - public LocalReaderFrame(LocalReader reader, SupportType type) { + public LocalReaderFrame(LocalReader reader, String type) { super("HTML reader"); this.reader = reader; @@ -27,29 +40,96 @@ class LocalReaderFrame extends JFrame { setSize(800, 600); setLayout(new FlowLayout()); - // TODO: list all stories, list all TMP stories (and format?) + books = new ArrayList(); + bookPane = new JPanel(); + add(bookPane); - List stories = Instance.getLibrary().getList(type); - for (MetaData story : stories) { - JButton button = new JButton(story.getTitle()); - final String luid = story.getLuid(); - button.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { + refreshBooks(type); + setJMenuBar(createMenu()); + + setVisible(true); + } + + private void refreshBooks(String type) { + this.type = type; + stories = Instance.getLibrary().getList(type); + books.clear(); + bookPane.removeAll(); + for (MetaData meta : stories) { + LocalReaderBook book = new LocalReaderBook(meta); + books.add(book); + final String luid = meta.getLuid(); + book.addActionListener(new BookActionListner() { + public void select(LocalReaderBook book) { + for (LocalReaderBook abook : books) { + abook.setSelected(abook == book); + } + } + + public void action(LocalReaderBook book) { try { - // TODO: config option (image, non image): TXT, - // custom-HTML, CBZ, EPUB - Desktop.getDesktop().browse( - LocalReaderFrame.this.reader.getTarget(luid) - .toURI()); - } catch (IOException e1) { - e1.printStackTrace(); + File target = LocalReaderFrame.this.reader + .getTarget(luid); + Desktop.getDesktop().browse(target.toURI()); + } catch (IOException e) { + Instance.syserr(e); } } }); - add(button); + bookPane.add(book); } - setVisible(true); + bookPane.validate(); + bookPane.repaint(); + } + + private JMenuBar createMenu() { + JMenuBar bar = new JMenuBar(); + + JMenu file = new JMenu("File"); + + JMenuItem imprt = new JMenuItem("Import", KeyEvent.VK_I); + imprt.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + String url = JOptionPane.showInputDialog(LocalReaderFrame.this, + "url?"); + if (Main.imprt(url) != 0) { + JOptionPane.showMessageDialog(LocalReaderFrame.this, + "Cannot import", "Imort error", + JOptionPane.ERROR_MESSAGE); + } else { + refreshBooks(type); + } + } + }); + JMenu types = new JMenu("Type"); + List tt = Instance.getLibrary().getTypes(); + tt.add(0, null); + for (final String type : tt) { + JMenuItem item = new JMenuItem(type == null ? "[all]" : type); + item.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + refreshBooks(type); + } + }); + types.add(item); + } + JMenuItem exit = new JMenuItem("Exit", KeyEvent.VK_X); + exit.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + LocalReaderFrame.this.dispatchEvent(new WindowEvent( + LocalReaderFrame.this, WindowEvent.WINDOW_CLOSING)); + } + }); + + file.add(imprt); + file.add(types); + file.addSeparator(); + file.add(exit); + + bar.add(file); + + return bar; } }