gui: better refresh for changeSTA
[fanfix.git] / src / be / nikiroo / fanfix / reader / ui / GuiReaderFrame.java
index 9d536a25a3ded1118d5338c499d751c88e442652..820075426d812286bb0e9966b7ab7929641cc5dd 100644 (file)
@@ -84,7 +84,7 @@ class GuiReaderFrame extends JFrame implements FrameHelper {
 
                setSize(800, 600);
                setLayout(new BorderLayout());
-               add(mainPanel);
+               add(mainPanel, BorderLayout.CENTER);
        }
 
        @Override
@@ -117,6 +117,8 @@ class GuiReaderFrame extends JFrame implements FrameHelper {
 
        @Override
        public void createMenu(boolean libOk) {
+               invalidate();
+
                JMenuBar bar = new JMenuBar();
 
                JMenu file = new JMenu("File");
@@ -408,7 +410,7 @@ class GuiReaderFrame extends JFrame implements FrameHelper {
                                                                .getAbsolutePath()
                                                                + type.getDefaultExtension(false);
                                                final Progress pg = new Progress();
-                                               mainPanel.outOfUi(pg, new Runnable() {
+                                               mainPanel.outOfUi(pg, false, new Runnable() {
                                                        @Override
                                                        public void run() {
                                                                try {
@@ -463,7 +465,7 @@ class GuiReaderFrame extends JFrame implements FrameHelper {
                        public void actionPerformed(ActionEvent e) {
                                final GuiReaderBook selectedBook = mainPanel.getSelectedBook();
                                if (selectedBook != null) {
-                                       mainPanel.outOfUi(null, new Runnable() {
+                                       mainPanel.outOfUi(null, false, new Runnable() {
                                                @Override
                                                public void run() {
                                                        reader.clearLocalReaderCache(selectedBook.getInfo()
@@ -609,6 +611,16 @@ class GuiReaderFrame extends JFrame implements FrameHelper {
                        public void actionPerformed(ActionEvent e) {
                                final GuiReaderBook selectedBook = mainPanel.getSelectedBook();
                                if (selectedBook != null) {
+                                       boolean refreshRequired = false;
+
+                                       if (what == ChangeAction.SOURCE) {
+                                               refreshRequired = mainPanel.getCurrentType();
+                                       } else if (what == ChangeAction.TITLE) {
+                                               refreshRequired = false;
+                                       } else if (what == ChangeAction.AUTHOR) {
+                                               refreshRequired = !mainPanel.getCurrentType();
+                                       }
+
                                        String changeTo = type;
                                        if (type == null) {
                                                MetaData meta = selectedBook.getInfo().getMeta();
@@ -634,7 +646,7 @@ class GuiReaderFrame extends JFrame implements FrameHelper {
                                        }
 
                                        final String fChangeTo = changeTo;
-                                       mainPanel.outOfUi(null, new Runnable() {
+                                       mainPanel.outOfUi(null, refreshRequired, new Runnable() {
                                                @Override
                                                public void run() {
                                                        String luid = selectedBook.getInfo().getMeta()
@@ -647,6 +659,7 @@ class GuiReaderFrame extends JFrame implements FrameHelper {
                                                                reader.changeAuthor(luid, fChangeTo);
                                                        }
 
+                                                       mainPanel.getSelectedBook().repaint();
                                                        mainPanel.unsetSelectedBook();
 
                                                        SwingUtilities.invokeLater(new Runnable() {
@@ -705,15 +718,25 @@ class GuiReaderFrame extends JFrame implements FrameHelper {
                        @Override
                        public void actionPerformed(ActionEvent e) {
                                final GuiReaderBook selectedBook = mainPanel.getSelectedBook();
-                               if (selectedBook != null) {
-                                       mainPanel.outOfUi(null, new Runnable() {
-                                               @Override
-                                               public void run() {
-                                                       reader.delete(selectedBook.getInfo().getMeta()
-                                                                       .getLuid());
-                                                       mainPanel.unsetSelectedBook();
-                                               }
-                                       });
+                               if (selectedBook != null
+                                               && selectedBook.getInfo().getMeta() != null) {
+
+                                       final MetaData meta = selectedBook.getInfo().getMeta();
+                                       int rep = JOptionPane.showConfirmDialog(
+                                                       GuiReaderFrame.this,
+                                                       String.format("Delete %s: %s", meta.getLuid(),
+                                                                       meta.getTitle()), "Delete story",
+                                                       JOptionPane.OK_CANCEL_OPTION);
+
+                                       if (rep == JOptionPane.OK_OPTION) {
+                                               mainPanel.outOfUi(null, true, new Runnable() {
+                                                       @Override
+                                                       public void run() {
+                                                               reader.delete(meta.getLuid());
+                                                               mainPanel.unsetSelectedBook();
+                                                       }
+                                               });
+                                       }
                                }
                        }
                });
@@ -733,11 +756,12 @@ class GuiReaderFrame extends JFrame implements FrameHelper {
                        public void actionPerformed(ActionEvent e) {
                                final GuiReaderBook selectedBook = mainPanel.getSelectedBook();
                                if (selectedBook != null) {
-                                       mainPanel.outOfUi(null, new Runnable() {
+                                       mainPanel.outOfUi(null, false, new Runnable() {
                                                @Override
                                                public void run() {
-                                                       new GuiReaderPropertiesFrame(reader, selectedBook
-                                                                       .getInfo()).setVisible(true);
+                                                       new GuiReaderPropertiesFrame(reader.getLibrary(),
+                                                                       selectedBook.getInfo().getMeta())
+                                                                       .setVisible(true);
                                                }
                                        });
                                }
@@ -748,7 +772,7 @@ class GuiReaderFrame extends JFrame implements FrameHelper {
        }
 
        /**
-        * Create the open menu item for a book or a source/type (no LUID).
+        * Create the open menu item for a book, a source/type or an author.
         * 
         * @return the item
         */
@@ -761,8 +785,8 @@ class GuiReaderFrame extends JFrame implements FrameHelper {
                                if (selectedBook != null) {
                                        if (selectedBook.getInfo().getMeta() == null) {
                                                mainPanel.removeBookPanes();
-                                               mainPanel.addBookPane(selectedBook.getInfo().getMeta()
-                                                               .getSource(), mainPanel.getCurrentType());
+                                               mainPanel.addBookPane(selectedBook.getInfo()
+                                                               .getMainInfo(), mainPanel.getCurrentType());
                                                mainPanel.refreshBooks();
                                        } else {
                                                mainPanel.openBook(selectedBook);