Wordcount (including UI), date of creation
[fanfix.git] / src / be / nikiroo / fanfix / reader / LocalReaderFrame.java
index 1d303a2c809e6df9866c52c2b81c9ccb74e9bc13..a90360eed234bde1c99349844d687b02832bf70a 100644 (file)
@@ -61,6 +61,7 @@ class LocalReaderFrame extends JFrame {
        private ProgressBar pgBar;
        private JMenuBar bar;
        private LocalReaderBook selectedBook;
+       private boolean words; // words or authors (secondary info on books)
 
        /**
         * Create a new {@link LocalReaderFrame}.
@@ -191,13 +192,13 @@ class LocalReaderFrame extends JFrame {
                for (LocalReaderGroup group : booksByType.keySet()) {
                        List<MetaData> stories = Instance.getLibrary().getListByType(
                                        booksByType.get(group));
-                       group.refreshBooks(stories);
+                       group.refreshBooks(stories, words);
                }
 
                for (LocalReaderGroup group : booksByAuthor.keySet()) {
                        List<MetaData> stories = Instance.getLibrary().getListByAuthor(
                                        booksByAuthor.get(group));
-                       group.refreshBooks(stories);
+                       group.refreshBooks(stories, words);
                }
 
                pane.repaint();
@@ -255,6 +256,28 @@ class LocalReaderFrame extends JFrame {
 
                bar.add(edit);
 
+               JMenu view = new JMenu("View");
+               view.setMnemonic(KeyEvent.VK_V);
+               JMenuItem vauthors = new JMenuItem("Author");
+               vauthors.setMnemonic(KeyEvent.VK_A);
+               vauthors.addActionListener(new ActionListener() {
+                       public void actionPerformed(ActionEvent e) {
+                               words = false;
+                               refreshBooks();
+                       }
+               });
+               view.add(vauthors);
+               JMenuItem vwords = new JMenuItem("Word count");
+               vwords.setMnemonic(KeyEvent.VK_W);
+               vwords.addActionListener(new ActionListener() {
+                       public void actionPerformed(ActionEvent e) {
+                               words = true;
+                               refreshBooks();
+                       }
+               });
+               view.add(vwords);
+               bar.add(view);
+
                JMenu sources = new JMenu("Sources");
                sources.setMnemonic(KeyEvent.VK_S);
 
@@ -318,6 +341,7 @@ class LocalReaderFrame extends JFrame {
                for (OutputType type : OutputType.values()) {
                        String ext = type.getDefaultExtension(false);
                        String desc = type.getDesc(false);
+
                        if (ext == null || ext.isEmpty()) {
                                filters.put(createAllFilter(desc), type);
                        } else {
@@ -343,21 +367,24 @@ class LocalReaderFrame extends JFrame {
                        public void actionPerformed(ActionEvent e) {
                                if (selectedBook != null) {
                                        fc.showDialog(LocalReaderFrame.this, "Save");
-                                       final OutputType type = filters.get(fc.getFileFilter());
-                                       final String path = fc.getSelectedFile().getAbsolutePath()
-                                                       + type.getDefaultExtension(false);
-                                       final Progress pg = new Progress();
-                                       outOfUi(pg, new Runnable() {
-                                               public void run() {
-                                                       try {
-                                                               Instance.getLibrary().export(
-                                                                               selectedBook.getMeta().getLuid(), type,
-                                                                               path, pg);
-                                                       } catch (IOException e) {
-                                                               Instance.syserr(e);
+                                       if (fc.getSelectedFile() != null) {
+                                               final OutputType type = filters.get(fc.getFileFilter());
+                                               final String path = fc.getSelectedFile()
+                                                               .getAbsolutePath()
+                                                               + type.getDefaultExtension(false);
+                                               final Progress pg = new Progress();
+                                               outOfUi(pg, new Runnable() {
+                                                       public void run() {
+                                                               try {
+                                                                       Instance.getLibrary().export(
+                                                                                       selectedBook.getMeta().getLuid(),
+                                                                                       type, path, pg);
+                                                               } catch (IOException e) {
+                                                                       Instance.syserr(e);
+                                                               }
                                                        }
-                                               }
-                                       });
+                                               });
+                                       }
                                }
                        }
                });