X-Git-Url: http://git.nikiroo.be/?p=fanfix.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Freader%2FLocalReaderFrame.java;h=d431d8e452ff821a375b07dd2a1ac19c4173344f;hp=ed8a039051c8b5a59f3e7228ddd54e814c6fb122;hb=92fb0719f84f5b6734b51e528332546d78e9ccec;hpb=333f0e7b5e333e8f6222881ce35398f403fc4121 diff --git a/src/be/nikiroo/fanfix/reader/LocalReaderFrame.java b/src/be/nikiroo/fanfix/reader/LocalReaderFrame.java index ed8a039..d431d8e 100644 --- a/src/be/nikiroo/fanfix/reader/LocalReaderFrame.java +++ b/src/be/nikiroo/fanfix/reader/LocalReaderFrame.java @@ -1,7 +1,8 @@ package be.nikiroo.fanfix.reader; +import java.awt.BorderLayout; +import java.awt.Color; import java.awt.Desktop; -import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; @@ -17,11 +18,14 @@ import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; +import javax.swing.JScrollPane; import be.nikiroo.fanfix.Instance; import be.nikiroo.fanfix.Main; +import be.nikiroo.fanfix.bundles.UiConfig; import be.nikiroo.fanfix.data.MetaData; -import be.nikiroo.fanfix.reader.LocalReaderBook.BookActionListner; +import be.nikiroo.fanfix.reader.LocalReaderBook.BookActionListener; +import be.nikiroo.utils.WrapLayout; class LocalReaderFrame extends JFrame { private static final long serialVersionUID = 1L; @@ -30,19 +34,41 @@ class LocalReaderFrame extends JFrame { private List books; private JPanel bookPane; private String type; + private Color color; public LocalReaderFrame(LocalReader reader, String type) { - super("HTML reader"); + super("Fanfix Library"); this.reader = reader; setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(800, 600); - setLayout(new FlowLayout()); + setLayout(new BorderLayout()); books = new ArrayList(); - bookPane = new JPanel(); - add(bookPane); + bookPane = new JPanel(new WrapLayout(WrapLayout.LEADING, 5, 5)); + + color = null; + String bg = Instance.getUiConfig().getString(UiConfig.BACKGROUND_COLOR); + if (bg.startsWith("#") && bg.length() == 7) { + try { + color = new Color(Integer.parseInt(bg.substring(1, 3), 16), + Integer.parseInt(bg.substring(3, 5), 16), + Integer.parseInt(bg.substring(5, 7), 16)); + } catch (NumberFormatException e) { + color = null; // no changes + e.printStackTrace(); + } + } + + if (color != null) { + setBackground(color); + bookPane.setBackground(color); + } + + JScrollPane scroll = new JScrollPane(bookPane); + scroll.getVerticalScrollBar().setUnitIncrement(16); + add(scroll, BorderLayout.CENTER); refreshBooks(type); setJMenuBar(createMenu()); @@ -57,9 +83,13 @@ class LocalReaderFrame extends JFrame { bookPane.removeAll(); for (MetaData meta : stories) { LocalReaderBook book = new LocalReaderBook(meta); + if (color != null) { + book.setBackground(color); + } + books.add(book); final String luid = meta.getLuid(); - book.addActionListener(new BookActionListner() { + book.addActionListener(new BookActionListener() { public void select(LocalReaderBook book) { for (LocalReaderBook abook : books) { abook.setSelected(abook == book); @@ -68,8 +98,8 @@ class LocalReaderFrame extends JFrame { public void action(LocalReaderBook book) { try { - File target = LocalReaderFrame.this.reader - .getTarget(luid); + File target = LocalReaderFrame.this.reader.getTarget( + luid, null); Desktop.getDesktop().browse(target.toURI()); } catch (IOException e) { Instance.syserr(e); @@ -93,13 +123,18 @@ class LocalReaderFrame extends JFrame { 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); + "url of the story to import?\n" + "\n" + + "Note: it will currently make the UI \n" + + "unresponsive until it is downloaded...", + "Importing from URL", JOptionPane.QUESTION_MESSAGE); + if (url != null && !url.isEmpty()) { + if (Main.imprt(url, null) != 0) { + JOptionPane.showMessageDialog(LocalReaderFrame.this, + "Cannot import: " + url, "Imort error", + JOptionPane.ERROR_MESSAGE); + } else { + refreshBooks(type); + } } } });